OpenShift 4之实现一个基于Gogs+Nexus+Sonarqube的Jenkins CI/CD Pipeline

OpenShift 4之实现一个基于Gogs+Nexus+Sonarqube的Jenkins CI/CD Pipeline

  • 场景说明
  • 运行环境
  • 配置操作过程
    • 准备运行所需资源
    • 配置Gogs并导入应用代码
  • 运行Jenkins Pipeline
  • 其他说明

场景说明

本文实现的是一个比较复杂的基于Jenkins的CI/CD Pipeline流程。该流程实现如下持续集成和部署操作和场景:

  1. 首先从**Git(Gogs)**中获取java应用代码。
  2. 然后将其编译成WAR应用包。
  3. 使用JUnit进行功能测试
  4. 使用SonarQube对其进行代码分析
  5. 将WAR应用包推送至Nexus的Maven仓储中
  6. 构建应用Image
  7. 部署到DEV环境
  8. 人工确认是否迁生至STAGE环境
  9. 最后将App Image部署至STAGE环境
    OpenShift 4之实现一个基于Gogs+Nexus+Sonarqube的Jenkins CI/CD Pipeline_第1张图片

运行环境

本场景可以在OpenShift 3.11/4.x运行环境,并已经在minishift和OpenShift CRC的运行环境中验证。不过由于运行的软件比较多,如使用minishift/OpenShift CRC,建议启动时指定内存至少为10GB。

配置操作过程

准备运行所需资源

  1. 新建三个项目,分别是运行Jenkins的CICD项目,以及开发(Dev)和准上线环境(Stage)。
$ oc new-project my-dev
$ oc new-project my-stage
$ oc new-project my-cicd
  1. 用管理员用户执行命令,允许从my-cicd项目访问另外两个项目的资源。
$ oc policy add-role-to-group edit system:serviceaccounts:my-cicd -n my-dev
$ oc policy add-role-to-group edit system:serviceaccounts:my-cicd -n my-stage
  1. 执行命令创建应用模板(其实也可直接基于模板文件创建应用)
$ oc create -f https://raw.githubusercontent.com/liuxiaoyu-git/OpenShift-HOL/master/Maven-Gogs-Sonar-Pipeline-Template.yaml -n openshift
  1. 成功后可以进入OpenShift Console中的Developer视图,然后在my-cicd项目中进入“+Add”的“From Catalog”。
    OpenShift 4之实现一个基于Gogs+Nexus+Sonarqube的Jenkins CI/CD Pipeline_第2张图片
  2. 在模板中选择CI/CD分类中点击下图的“Jenkins (Ephemeral)”,然后接受所有缺省选项,直到创建成功。
    OpenShift 4之实现一个基于Gogs+Nexus+Sonarqube的Jenkins CI/CD Pipeline_第3张图片
  3. 再次执行第4步,在模板中选择CI/CD分类中点击“Gogs+Nexus+Sonar used by Jenkins”,然后点击“Instantiate Template”,然后在“Instantiate Template”页面中将DEV和STAGE项目名设为my-dev和my-stage,最后点击Create即可。
    OpenShift 4之实现一个基于Gogs+Nexus+Sonarqube的Jenkins CI/CD Pipeline_第4张图片
  4. 在部署完后(其状态应该是深蓝色),可以在OpenShift Console的Developer视图中查看my-cicd项目部署的应用和状态。应该如下图包括6个部署(其中4个应用2个数据库)。此时可通过以下地址和用户信息访问Jenkins、Gogs、Nexus和SonarQube。
    https://jenkins-my-cicd.apps-crc.testing
    http://gogs-my-cicd.apps-crc.testing (gogs/gogs)
    http://nexus-my-cicd.apps-crc.testing (admin/admin123)
    https://sonarqube-my-cicd.apps-crc.testing (admin/admin)
    OpenShift 4之实现一个基于Gogs+Nexus+Sonarqube的Jenkins CI/CD Pipeline_第5张图片

配置Gogs并导入应用代码

为了能让Jenkins从Gogs获取应用代码,我们先需要将应用代码导入到Gogs。

  1. 访问gogs的route地址http://gogs-my-cicd.apps-crc.testing,在首页面右上方点击“Sign In”链接,用gogs/gogs登录。
  2. 登陆后点击右上方“+”图标,然后在下拉菜单中选择“New Migration”。
    OpenShift 4之实现一个基于Gogs+Nexus+Sonarqube的Jenkins CI/CD Pipeline_第6张图片
  3. 在Clone Adress栏中填https://github.com/OpenShiftDemos/openshift-tasks,然后在Repository填openshift-task,最后点击Migration Repository。成功会看到gogs/openshift-tasks的Repository和相关应用代码。

运行Jenkins Pipeline

  1. 执行命令启动Jenkins的Pipeline流程。
$ oc start-build tasks-pipeline
  1. 可以在OpenShift Console中进入Builds->tasks-pipeline->Builds->tasks-pipeline-1查看执行进度。当出现以下步骤时, 点击"Input Required"链接跳转到Jenkins。
    OpenShift 4之实现一个基于Gogs+Nexus+Sonarqube的Jenkins CI/CD Pipeline_第7张图片
  2. 在Jinkins Console中通查看Jenkins -> my-cicd -> my-cicd/tasks-pipeline -> #1的Console Output,此时执行停在以下步骤中。然后点击Promote即可。
    OpenShift 4之实现一个基于Gogs+Nexus+Sonarqube的Jenkins CI/CD Pipeline_第8张图片
  3. 访问SonarQube的控制台,可以查看Bugs的情况。
    OpenShift 4之实现一个基于Gogs+Nexus+Sonarqube的Jenkins CI/CD Pipeline_第9张图片
    OpenShift 4之实现一个基于Gogs+Nexus+Sonarqube的Jenkins CI/CD Pipeline_第10张图片
  4. 访问Nexus控制台,查看下载的应用依赖文件。
    OpenShift 4之实现一个基于Gogs+Nexus+Sonarqube的Jenkins CI/CD Pipeline_第11张图片
  5. 可以访问以下部署在my-dev和my-stage中的应用。
    http://tasks-my-dev.apps-crc.testing/
    http://tasks-my-stage.apps-crc.testing/
    OpenShift 4之实现一个基于Gogs+Nexus+Sonarqube的Jenkins CI/CD Pipeline_第12张图片

其他说明

在我们使用的https://raw.githubusercontent.com/liuxiaoyu-git/OpenShift-HOL/master/Maven-Gogs-Sonar-Pipeline-Template.yaml模板文件中引用了gogs-template.yaml、sonarqube-template.yml等另外几个模板,在这些模板中指定了用到的Image的名称和版本。如果这些Image更新后无法访问旧版本了,需要手工修改这些Template的YAML文件,更新它们使用的Image版本后再次创建模板即可。

你可能感兴趣的:(OpenShift,4,Dev,OpenShift,Jenkins,Neuxs,Gogs,Sonar)