创建流水线
创建流水线
步骤 1:创建凭证
进入DevOps项目,在 DevOps 项目设置下的凭证页面创建以下凭证:
- harbor-id:镜像仓库账号,用于访问和推送镜像到镜像仓库;
- kubeconfig:用于将应用部署到kubernetes集群;
- sonar-token:用于访问sonarqube代码分析服务;
harbor-id
kubeconfig
类型选择kubeconfig即可,会自动生成内容:
sonar-token
其中,令牌内容为在sonarqube控制台中生成的安全令牌,可以在登录sonarqube后,在我的账号-安全中生成令牌。
步骤 2:创建项目
本次演示流水线会将示例应用部署至一个项目(namespace)。
因此必须先创建一个项目(例如 kubesphere-sample-dev),待流水线成功运行,会在该项目中自动创建该应用的部署和服务。
步骤 3:创建流水线
进入 DevOps 项目,在流水线页面点击创建。
在弹出的对话框中,将它命名为 graphical-pipeline,点击下一步。
在高级设置页面,在构建参数中点击添加,添加以下三个字符串参数。这些参数将用于流水线的 Docker 命令。添加完成后,点击创建。
参数类型 | 名称 | 值 | 描述信息 |
---|---|---|---|
字符串 | REGISTRY | 172.18.18.198 | 镜像仓库地址 |
字符串 | DOCKERHUB_NAMESPACE | hos | 镜像仓库项目名称 |
字符串 | APP_NAME | devops-sample | 应用名称 |
步骤 4:编辑流水线
点击流水线进入其详情页面。要使用图形编辑面板,请点击任务状态选项卡下的编辑流水线。在弹出的对话框中,点击自定义流水线。该流水线包括六个阶段,请按照以下步骤设置每个阶段。
阶段 1:拉取源代码 (Checkout SCM)
图形编辑面板包括两个区域:左侧的画布和右侧的内容。它会根据您对不同阶段和步骤的配置自动生成一个 Jenkinsfile(流水线语法参考:Jenkins文档)。
- 在图形编辑面板上,从类型下拉列表中选择 node,从 Label 下拉列表中选择 maven。
- 点击左侧的加号图标来添加阶段。点击添加步骤上方的文本框,然后在右侧的名称字段中为该阶段设置名称(例如 Checkout SCM)。
- 点击添加步骤。在列表中选择 git,以从 GitHub 拉取示例代码。在弹出的对话框中,填写必需的字段。点击确定完成操作。
- URL:输入 GitHub 仓库地址 https://github.com/kubesphere/devops-maven-sample.git。请注意,这里是示例地址,实际需要使用自己项目的仓库地址。
- 凭证 ID:本教程中无需输入凭证 ID。
- 分支:如果您将其留空,则默认为 master 分支。请输入 sonarqube,后续需要配置代码分析阶段。
- 第一阶段设置完成:
阶段 2:单元测试
- 点击阶段 1 右侧的加号图标添加新的阶段,以在容器中执行单元测试。将它命名为 Unit Test。
- 点击添加步骤,在列表中选择指定容器。将其命名为 maven 然后点击确定。
- 点击添加嵌套步骤,在 maven 容器下添加一个嵌套步骤。在列表中选择 shell 并在命令行中输入以下命令。点击确定保存操作。
mvn clean -gs `pwd`/configuration/settings.xml test
阶段 3:代码分析
本阶段使用 SonarQube 来测试您的代码。如果您不需要代码分析,可以跳过该阶段。
- 点击 Unit Test 阶段右侧的加号图标添加一个阶段,以在容器中进行 SonarQube 代码分析。将它命名为 Code Analysis。
- 在 Code Analysis 中,点击任务下的添加步骤,选择指定容器。将其命名为 maven 然后点击确定。
- 点击 maven 容器下的添加嵌套步骤,以添加一个嵌套步骤。点击添加凭证并从凭证 ID 列表中选择 SonarQube 令牌 (sonar-token)。在文本变量中输入 SONAR_TOKEN,然后点击确定。
- 在添加凭证步骤下,点击添加嵌套步骤为其添加一个嵌套步骤。
- 点击 Sonarqube 配置,在弹出的对话框中保持默认名称 sonar 不变,点击确定保存操作。
- 在 Sonarqube 配置步骤下,点击添加嵌套步骤为其添加一个嵌套步骤。
- 点击 shell 并在命令行中输入以下命令,用于 sonarqube 分支和认证,点击确定完成操作。
mvn sonar:sonar -Dsonar.login=$SONAR_TOKEN
- 点击指定容器步骤下的添加嵌套步骤(第三个),选择超时。在时间中输入 1 并将单位选择为小时,点击确定完成操作。
- 点击超时步骤下的添加嵌套步骤,选择代码质量检查 (SonarQube)。在弹出的对话框中选择检查通过后开始后续任务。点击确定保存操作。
阶段 4:构建并推送镜像
- 点击前一个阶段右侧的加号图标添加一个新的阶段,以构建并推送镜像至仓库。将其命名为 Build and Push。
- 点击任务下的添加步骤,选择指定容器,将其命名为 maven,然后点击确定。
- 点击 maven 容器下的添加嵌套步骤添加一个嵌套步骤。在列表中选择 shell 并在弹出窗口中输入以下命令,点击确定完成操作。
mvn -Dmaven.test.skip=true clean package
- 再次点击添加嵌套步骤,选择 shell。在命令行中输入以下命令,以根据 Dockerfile 构建 Docker 镜像。点击确定确认操作。
docker build -f Dockerfile-online -t $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BUILD_NUMBER .
注意:请勿遗漏命令末尾的点.
。
- 再次点击添加嵌套步骤,选择添加凭证。在弹出的对话框中填写以下字段,点击确定确认操作。
- 凭证名称:选择您创建的镜像仓库凭证,例如 harbor-id。
- 密码变量:输入 DOCKER_PASSWORD。
- 用户名变量:输入 DOCKER_USERNAME。
- 在添加凭证步骤中点击添加嵌套步骤(第一个)。选择 shell 并在弹出窗口中输入以下命令,用于登录 Docker Hub。点击确定确认操作。
echo "$DOCKER_PASSWORD" | docker login $REGISTRY -u "$DOCKER_USERNAME" --password-stdin
- 在添加凭证步骤中点击添加嵌套步骤。选择 shell 并输入以下命令,将 SNAPSHOT 镜像推送至 Docker Hub。点击确定完成操作。
docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BUILD_NUMBER
阶段 5:生成制品
- 点击 Build and Push 阶段右侧的加号图标添加一个新的阶段,以保存制品,将其命名为 Artifacts。本示例使用 JAR 文件包。
- 选中 Artifacts 阶段,点击任务下的添加步骤,选择保存制品。在弹出的对话框中输入 target/*.jar,用于设置 Jenkins 中制品的保存路径。点击确定完成操作。
阶段 6:部署至开发环境
- 点击 Artifacts 阶段右侧的加号图标添加最后一个阶段,将其命名为 Deploy to Dev。该阶段用于将资源部署至您的开发环境(即 kubesphere-sample-dev 项目)。
点击 Deploy to Dev 阶段下的添加步骤。在列表中选择指定容器,将其命名为 maven 然后点击确定。
点击 maven 容器步骤下的添加嵌套步骤。在列表中选择添加凭证,在弹出的对话框中填写以下字段,然后点击确定。
- 凭证名称:选择您创建的 kubeconfig,步骤1中创建的凭证名称为kubeconfig。
- kubeconfig 变量:输入 KUBECONFIG_CONTENT。
点击添加凭证步骤下的添加嵌套步骤。在列表中选择 shell,在弹出的对话框中输入以下命令,然后点击确定。
mkdir ~/.kube
echo "$KUBECONFIG_CONTENT" > ~/.kube/config
envsubst < deploy/dev-ol/devops-sample-svc.yaml | kubectl apply -f -
envsubst < deploy/dev-ol/devops-sample.yaml | kubectl apply -f -
- 待您完成上述步骤,请在右下角点击保存。随后,您可以看到该流水线有完整的工作流,并且每个阶段也清晰列示。当您用图形编辑面板定义流水线时,KubeSphere 会自动创建相应的 Jenkinsfile。点击编辑 Jenkinsfile 查看该 Jenkinsfile。
步骤 5:运行流水线
- 需要手动运行使用图形编辑面板创建的流水线。点击运行,可以在弹出的对话框中看到步骤 3 中已定义的三个字符串参数。点击确定来运行流水线。
要查看流水线的状态,请转到运行记录选项卡,点击您想查看的记录。
稍等片刻,流水线将完成运行。
步骤 6:查看流水线详情
进入 graphical-pipeline 流水线。在运行记录选项卡下,点击状态下标记为成功的记录。
如果所有配置都成功运行,您可以看到所有阶段都已完成。
在右上角点击查看日志,查看所有日志。点击每个阶段查看其详细日志。您可以根据日志排除故障和问题,也可以将日志下载到本地进行进一步分析。
步骤 7:下载制品
点击制品选项卡,然后点击右侧的图标下载该制品。
步骤 8:查看代码分析结果
登录SonarQube查看代码分析结果:
步骤 9:验证 Kubernetes 资源
如果流水线的每个阶段都成功运行,则会自动构建一个 Docker 镜像并推送至您的镜像仓库。最终,流水线将在您事先设置的项目中自动创建一个部署和一个服务。
前往该项目(本示例中即 kubesphere-sample-dev),请点击应用负载下的工作负载,您可以看到列表中显示的部署。
在服务页面,您可以看到示例服务通过 NodePort 暴露其端口号。要访问服务,请访问 Node IP:NodePort。
现在流水线已成功运行,将会推送一个镜像至Harbor仓库。登录Harbor查看结果。