使用图形编辑面板创建流水线
DevOps 中的图形编辑面板包含用于 Jenkins 阶段 (Stage) 和步骤 (Step) 的所有必要操作。DevOps 支持直接在交互式面板上定义这些阶段和步骤,无需创建任何 Jenkinsfile。
本文档演示如何在 KubeSphere 企业版中使用图形编辑面板创建流水线。在整个过程中,DevOps 将根据编辑面板上的设置自动生成 Jenkinsfile,您无需手动创建 Jenkinsfile。待流水线成功运行,它会将镜像推送至 Docker Hub。
前提条件
-
KubeSphere 企业版平台需要安装并启用 DevOps 扩展组件。
-
已有一个 Docker Hub 账户。
-
已创建一个企业空间、一个 DevOps 项目和一个用户 (例如 project-regular),并已邀请该用户至 DevOps 项目且授予 operator 角色。请参阅角色和成员管理。
-
已设置 CI 专用节点用于运行流水线。请参阅为缓存依赖项设置 CI 节点。
-
配置电子邮件服务器用于接收流水线通知(可选)。 请参阅为流水线设置电子邮件服务器。
-
配置 SonarQube 将代码分析纳入流水线中(可选)。 请参阅将 SonarQube 集成到流水线。
流水线概述
本示例流水线包括以下阶段。
说明 |
---|
|
步骤 1:创建凭证
-
以 project-regular 用户登录 KubeSphere 企业版 Web 控制台。
-
点击企业空间管理并进入您的 DevOps 项目,在 DevOps 项目设置下的凭证页面创建以下凭证。有关如何创建凭证的更多信息,请参阅凭证管理。
说明 如果您的账户或密码中包含任何特殊字符,例如 @ 和 $,可能会因为无法识别而在流水线运行时导致错误。在这种情况下,请先在一些第三方网站(例如 urlencoder)上对账户或密码进行编码,然后将输出结果复制粘贴作为您的凭证信息。
凭证 ID 类型 用途 dockerhub-id
用户名和密码
Docker Hub
-
再为 SonarQube 创建一个凭证 (sonar-token),用于上述的阶段 3(代码分析)。凭证类型选择访问令牌,在令牌字段输入 SonarQube 令牌,请参阅为新项目创建 SonarQube 令牌 (Token)。点击确定完成操作。
-
创建完成后,您将在凭证页面看到已创建的凭证。
步骤 2:创建流水线
-
以 project-regular 用户登录 KubeSphere 企业版 Web 控制台。
-
点击企业空间管理并进入您的 DevOps 项目,在流水线页面点击创建。
-
在弹出的对话框中,将其命名为 graphical-pipeline,点击下一步。
-
在高级设置页面,点击添加,添加以下字符串参数。这些参数将用于流水线的 Docker 命令。添加完成后,点击创建。
参数类型 名称 值 参数说明 字符串
REGISTRY
docker.io
镜像仓库地址。本示例使用 docker.io。
字符串
DOCKERHUB_NAMESPACE
您的 Docker ID
您的 Docker Hub 账户或该账户下的组织名称。
字符串
APP_NAME
devops-sample
应用名称。本示例使用 devops-sample。
说明 有关其他字段,请直接使用默认值或者参阅流水线设置以自定义配置。
步骤 3:编辑流水线
-
点击流水线名称进入其详情页面。
-
要使用图形编辑面板,点击流水线配置页签下的编辑流水线。在弹出的对话框中:
-
点击自定义流水线,按照以下步骤设置各个阶段。
-
或使用 DevOps 提供的内置流水线模板。
-
-
点击下一步,然后点击创建。
说明 |
---|
流水线详情页面的同步状态,显示了 KubeSphere 企业版和 Jenkins 之间的同步结果。也可点击编辑 Jenkinsfile 手动为流水线创建一个 Jenkinsfile。 |
阶段 1:拉取源代码 (Checkout SCM)
图形编辑面板包括两个区域:左侧的画布和右侧的内容。它会根据您对不同阶段和步骤的配置自动生成一个 Jenkinsfile,为开发者提供更加用户友好的操作体验。
说明 |
---|
流水线包括声明式流水线和脚本化流水线。目前,支持使用该面板创建声明式流水线。有关流水线语法的更多信息,请参阅 Jenkins 文档。 |
-
在图形编辑面板上,从类型下拉列表中选择 node,从 Label 下拉列表中选择 maven。
说明 Agent 用于定义执行环境。Agent 指令指定 Jenkins 执行流水线的位置和方式。有关更多信息,请参阅选择 Jenkins Agent。
-
点击左侧的加号图标来添加阶段。点击添加步骤上方的文本框,然后在右侧的名称字段中为该阶段设置名称(例如 Checkout SCM)。
-
点击添加步骤。在列表中选择 Git Clone,以从 GitHub 拉取示例代码。在弹出的对话框中,填写必需的字段。点击确定完成操作。
-
URL:输入 GitHub 仓库地址 https://github.com/kubesphere/devops-maven-sample.git。注意,这里是示例地址,请使用自己的仓库地址。
-
凭证 ID:本示例中无需输入凭证 ID。
-
分支:输入 v4.1.0-sonarqube。如果不需要代码分析阶段,则使用默认的 v4.1.0 分支。
-
阶段 2:单元测试
-
点击阶段 1 右侧的加号图标添加新的阶段,以在容器中执行单元测试。将它命名为 Unit Test。
-
点击添加步骤,在列表中选择指定容器。将其命名为 maven 然后点击确定。
-
点击 maven 容器步骤下的添加嵌套步骤,在列表中选择 shell 并输入以下命令。点击确定保存操作。
mvn clean 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:构建并推送镜像
-
点击前一个阶段右侧的加号图标添加一个新的阶段,以构建并推送镜像至 Docker Hub。将其命名为 Build and Push。
-
在 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 .
-
再次点击添加嵌套步骤,选择添加凭证。在弹出的对话框中填写以下字段,点击确定确认操作。
-
凭证名称:选择您创建的 Docker Hub 凭证,例如 dockerhub-id。
-
用户名变量:输入 DOCKER_USERNAME。
-
密码变量:输入 DOCKER_PASSWORD。
说明 出于安全原因,账户信息在脚本中显示为变量。
-
-
在添加凭证步骤中点击添加嵌套步骤(第一个)。选择 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 中制品的保存路径。点击确定完成操作。
步骤 4:运行流水线
-
使用图形编辑面板创建的流水线需要手动运行。点击运行,弹出的对话框会显示步骤 2:创建流水线中已定义的三个字符串参数。点击确定来运行流水线。
-
点击运行记录页签,查看流水线的运行状态,点击记录查看详情。
-
流水线如果运行到 Push with Tag 阶段,会在此阶段暂停,需要具有审核权限的用户点击继续。
-
以 project-admin 用户登录 KubeSphere 企业版 Web 控制台,点击企业空间管理并进入您的 DevOps 项目,点击 graphical-pipeline 流水线。在运行记录页签下,点击要审核的记录,点击继续以批准流水线。
说明 |
---|
如果要同时运行多个不包含多分支的流水线,在流水线列表页面,全部选中这些流水线,然后点击运行来批量运行它们。 |
步骤 5:查看流水线详情
-
以 project-regular 用户登录 KubeSphere 企业版 Web 控制台,点击企业空间管理并进入您的 DevOps 项目,点击 graphical-pipeline 流水线。
-
在运行记录页签下,点击状态下的记录,进入运行记录详情页。如果任务状态为成功,流水线所有阶段都会显示成功。
-
在运行日志页签下,点击每个阶段查看其详细日志。点击查看完整日志,根据日志排除故障和问题,也可以将日志下载到本地进行进一步分析。
步骤 6:下载制品
在运行记录详情页,点击制品页签,然后点击制品右侧的图标下载该制品。
步骤 7:查看代码分析结果
在代码检查页面,查看由 SonarQube 提供的本示例流水线的代码分析结果。如果没有事先配置 SonarQube,则该部分不可用。有关更多信息,请参阅将 SonarQube 集成到流水线。
步骤 8:验证 Kubernetes 资源
如果流水线的每个阶段都成功运行,则会自动构建一个 Docker 镜像并推送至您的 Docker Hub 仓库。
-
流水线成功运行后,会推送一个镜像至 Docker Hub。登录 Docker Hub 查看结果。
-
该应用名称为 APP_NAME 的值,本示例中即 devops-sample。Tag 为 SNAPSHOT-$BUILD_NUMBER 的值,$BUILD_NUMBER 即运行记录页签下记录的运行 ID。