dev 怎么开发
ops 怎么运维
参考项目链接:https://github.com/kubesphere/devops-maven-sample
持续集成是指软件个人的部分向软件整体部分交付,频繁进行集成以便更快地发现其中错误。
CI需要具备这些:
这是实践持续集成&持续部署的基础,同时,选择合适的自动化测试工具也很重要
容器、虚拟机的存在让开发人员和QA人员不必再大费周张去做IT基础设施环境的准备
如:Git、SVN、Gitlab等
如:Jenkins Gitlab Tekton等
如果构建/测试失败,可以快速地反馈到相关负责人,以尽快速度解决问题,实现软件开发稳定版本推出。
持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的类生产环境中,持续交付优先于整个产品生命周期的软件部署,建立在高水平自动化持续集成之上。
能够应对业务需求,并更快地实现软件价值,实现编码、测试、上线、交付的频繁迭代周期缩短,同时获得迅速反馈
整个交付过程标准化、可重复、可靠
方便团队成员了解项目成熟度
从需求分析、产品的用户体验到交互设计、开发、测试、运维等角色密切协作,相比于传统的的开发模式,减少浪费
持续部署是指当交付的代码通过评审之后,自动部署到生产环境中。
持续部署是持续交付的最高阶段。这就意味着,所有通过了一系列的自动化测试的发动都将自动部署到生产环境。它也可以被称为Continuous Release
持续部署主要好处是,可以相对独立地部署新的功能,并能快速地收集真实用户的反馈。
凭证是包含敏感信息的对象,例如用户名和密码、SSH 密钥和令牌 (Token)。当 KubeSphere DevOps 流水线运行时,会与外部环境中的对象进行交互,以执行一系列任务,包括拉取代码、推送和拉取镜像以及运行脚本等。此过程中需要提供相应的凭证,而这些凭证不会明文出现在流水线中。
具有必要权限的 DevOps 项目用户可以为 Jenkins 流水线配置凭证。用户在 DevOps 项目中添加或配置这些凭证后,便可以在 DevOps 项目中使用这些凭证与第三方应用程序进行交互。
目前,您可以在 DevOps 项目中创建以下 4 种类型的凭证:
username:password
)处理,例如 GitHub、GitLab 和 Docker Hub 的帐户。本教程演示如何在 DevOps 项目中创建和管理凭证。有关如何使用凭证的更多信息,请参见使用 Jenkinsfile 创建流水线和使用图形编辑面板创建流水线。
project-regular
),并已邀请此帐户至 DevOps 项目中且授予 operator
角色。如果尚未准备好,请参见创建企业空间、项目、用户和角色。以 project-regular
身份登录 KubeSphere 控制台。进入您的 DevOps 项目,选择凭证,然后点击创建。
dockerhub-id
。同样地,按照上述相同步骤创建 GitHub 凭证。设置不同的名称(例如 github-id
),类型同样选择用户名和密码。分别在用户名和 密码/令牌中输入您的 GitHub 用户名和令牌。
- 自 2021 年 8 月起,GitHub 要求使用基于令牌的身份验证,此处需要输入令牌,而非 GitHub 密码。关于如如何生成令牌,请参阅创建个人访问令牌。
- 如果您的帐户或密码中包含任何特殊字符,例如
@
和$
,可能会因为无法识别而在流水线运行时导致错误。在这种情况下,您需要先在一些第三方网站(例如 urlencoder)上对帐户或密码进行编码,然后将输出结果复制粘贴作为您的凭证信息。
同样地,按照上述相同步骤创建 kubeconfig 凭证。设置不同的凭证 ID(例如 demo-kubeconfig
)并选择 kubeconfig。
用于配置集群访问的文件称为 kubeconfig 文件。这是引用配置文件的通用方法。有关更多信息,请参见 Kubernetes 官方文档。您可以创建 kubeconfig 凭证来访问当前 Kubernetes 集群,该凭证将在流水线中使用。您不需要更改该文件,因为 KubeSphere 会自动使用当前 Kubernetes 集群的 kubeconfig 填充该字段。访问其他集群时,您可能需要更改 kubeconfig。
SonarQube 是一种主流的代码质量持续检测工具。您可以将其用于代码库的静态和动态分析。SonarQube 集成到 KubeSphere 流水线后,如果在运行的流水线中检测到问题,您可以直接在仪表板上查看常见代码问题,例如 Bug 和漏洞。
您需要启用 KubeSphere DevOps 系统。
要将 SonarQube 集成到您的流水线,必须先安装 SonarQube 服务器。
master节点
1.请先安装 Helm,以便后续使用该工具安装 SonarQube。例如,运行以下命令安装 Helm 3:
# curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
2.查看helm版本
# helm version
version.BuildInfo{Version:"v3.10.1", GitCommit:"9f88ccb6aee40b9a0535fcc7efea6055e1ef72c9", GitTreeState:"clean", GoVersion:"go1.18.7"}
3.执行以下命令安装 SonarQube 服务器
# helm upgrade --install sonarqube sonarqube --repo https://charts.kubesphere.io/main -n kubesphere-devops-system --create-namespace --set service.type=NodePort
4.您会获取以下提示内容
[root@k8s-master01 ~]# kubectl get svc -n kubesphere-devops-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
devops-apiserver ClusterIP 10.96.2.56 9090/TCP 5d16h
devops-jenkins NodePort 10.96.1.111 80:30180/TCP 5d16h
devops-jenkins-agent ClusterIP 10.96.2.94 50000/TCP 5d16h
s2ioperator-metrics-service ClusterIP 10.96.2.41 8080/TCP 5d16h
s2ioperator-trigger-service ClusterIP 10.96.2.217 8081/TCP 5d16h
sonarqube-postgresql ClusterIP 10.96.2.172 5432/TCP 3m38s
sonarqube-postgresql-headless ClusterIP None 5432/TCP 3m38s
sonarqube-sonarqube NodePort 10.96.0.120 9000:30058/TCP 3m38s
webhook-server-service ClusterIP 10.96.3.74 443/TCP 5d16h
1.执行以下命令以获取 SonarQube NodePort
# export NODE_PORT=$(kubectl get --namespace kubesphere-devops-system -o jsonpath="{.spec.ports[0].nodePort}" services sonarqube-sonarqube)
# export NODE_IP=$(kubectl get nodes --namespace kubesphere-devops-system -o jsonpath="{.items[0].status.addresses[0].address}")
# echo http://$NODE_IP:$NODE_PORT
2.您可以获得如下输出(本示例中端口号为 30058
,可能与您的端口号不同)
http://192.168.10.141:30058
1.执行以下命令查看 SonarQube 的状态。请注意,只有在 SonarQube 启动并运行后才能访问 SonarQube 控制台。
[root@k8s-master01 ~]# kubectl get pods -n kubesphere-devops-system
NAME READY STATUS RESTARTS AGE
sonarqube-postgresql-0 1/1 Running 0 37m
sonarqube-sonarqube-df8d79d5c-hxxbx 1/1 Running 10 (2m34s ago) 37m
2.在浏览器中访问 SonarQube 控制台 http://
。
3.点击右上角的 Log in,然后使用默认帐户 admin/admin
登录。
取决于您的实例的部署位置,您可能需要设置必要的端口转发规则,并在您的安全组中放行该端口,以便访问 SonarQube。
1.点击右上角字母 A,然后从菜单中选择 My Account 以转到 Profile 页面。
2.点击 Security 并输入令牌名称,例如 kubesphere
。
3.点击 Generate 并复制此令牌。
c3ee79a4c4b25bd03867db735dc439e3bb726426
如提示所示,您无法再次查看此令牌,因此请确保复制成功。
1.执行以下命令获取 SonarQube Webhook 的地址
# export NODE_PORT=$(kubectl get --namespace kubesphere-devops-system -o jsonpath="{.spec.ports[0].nodePort}" services devops-jenkins)
# export NODE_IP=$(kubectl get nodes --namespace kubesphere-devops-system -o jsonpath="{.items[0].status.addresses[0].address}")
# echo http://$NODE_IP:$NODE_PORT/sonarqube-webhook/
2.输出结果
http://192.168.10.141:30180/sonarqube-webhook/
3.依次点击 Administration、Configuration 和 Webhooks 创建一个 Webhook
4.点击 Create
5.在弹出的对话框中输入 Name 和 Jenkins Console URL(即 SonarQube Webhook 地址)。点击 Create 完成操作。
1.执行以下命令编辑 ks-installer
# kubectl edit cc -n kubesphere-system ks-installer
2.搜寻至 devops
。添加字段 sonarqube
并在其下方指定 externalSonarUrl
和 externalSonarToken
。
devops:
enabled: true
jenkinsJavaOpts_MaxRAM: 2g
jenkinsJavaOpts_Xms: 512m
jenkinsJavaOpts_Xmx: 512m
jenkinsMemoryLim: 2Gi
jenkinsMemoryReq: 1500Mi
jenkinsVolumeSize: 8Gi
sonarqube:
externalSonarUrl: http://192.168.10.141:30058
externalSonarToken: c3ee79a4c4b25bd03867db735dc439e3bb726426
3.完成操作后保存此文件
1.执行以下命令获取 Jenkins 的地址
# export NODE_PORT=$(kubectl get --namespace kubesphere-devops-system -o jsonpath="{.spec.ports[0].nodePort}" services devops-jenkins)
# export NODE_IP=$(kubectl get nodes --namespace kubesphere-devops-system -o jsonpath="{.items[0].status.addresses[0].address}")
# echo http://$NODE_IP:$NODE_PORT
2.可以获得以下输出,获取 Jenkins 的端口号
http://192.168.10.141:30180
3.请使用地址 http://
访问 Jenkins。安装 KubeSphere 时,默认情况下也会安装 Jenkins 仪表板。此外,Jenkins 还配置有 KubeSphere LDAP,这意味着您可以直接使用 KubeSphere 帐户(例如 admin/P@88w0rd
)登录 Jenkins。有关配置 Jenkins 的更多信息,请参见 Jenkins 系统设置。
取决于您的实例的部署位置,您可能需要设置必要的端口转发规则,并在您的安全组中放行端口
30180
,以便访问 Jenkins。
4.可以前往系统管理下的 Manage Credentials 并点击 Stores scoped to Jenkins 下的 Jenkins,再点击全局凭据 (unrestricted),然后点击左侧导航栏的添加凭据,参考上方第二张截图用 SonarQube 管理员令牌添加凭证。添加凭证后,从 Server authentication token 旁边的下拉列表中选择该凭证。
secret处填写sonarqube token
5.点击左侧导航栏中的系统管理
6.向下翻页找到并点击系统配置
6.搜寻到SonarQube Server,然后点击Add SonarQube
7.输入 Name 和 Server URL (http://
)。点击添加,选择 Jenkins,然后在弹出的对话框中用 SonarQube 管理员令牌创建凭证(如下方第二张截图所示)。创建凭证后,从 Server authentication token 旁边的下拉列表中选择该凭证。点击应用完成操作。
您需要指定 sonarqubeURL
,以便可以直接从 KubeSphere 控制台访问 SonarQube
1.执行以下命令
# kubectl edit cm -n kubesphere-system ks-console-config
2.搜寻到 data.client.enableKubeConfig
,在下方添加 devops
字段并指定 sonarqubeURL
apiVersion: v1
data:
local_config.yaml: |
server:
http:
hostname: localhost
port: 8000
static:
production:
/public: server/public
/assets: dist/assets
/dist: dist
redis:
port: 6379
host: redis.kubesphere-system.svc
redisTimeout: 5000
sessionTimeout: 7200000
client:
version:
kubesphere: v3.1.0
kubernetes: v1.24.0
openpitrix: v3.1.0
enableKubeConfig: true
devops: 手动添加
sonarqubeURL: http://192.168.10.141:30058
defaultClusterName: default
3.保存该文件
# kubectl -n kubesphere-devops-system rollout restart deploy devops-apiserver
# kubectl -n kubesphere-system rollout restart deploy ks-console
需要一个 SonarQube 令牌,以便您的流水线可以在运行时与 SonarQube 通信。
1.在 SonarQube 控制台上,点击 Create new project。
4c5c650e18a80f699d5301773230773ad6e17924
2.创建令牌后,点击 Continue
3.分别选择 Java 和 Maven。
复制下图所示绿色框中的序列号,如果要在流水线中使用,则需要在凭证中添加此序列号。
mvn sonar:sonar \
-Dsonar.projectKey=java-demo \
-Dsonar.host.url=http://192.168.10.141:30058 \
-Dsonar.login=4c5c650e18a80f699d5301773230773ad6e17924
内置 Jenkins 无法与平台通知系统共享相同的电子邮件配置。因此,您需要单独为 KubeSphere DevOps 流水线配置电子邮件服务器设置。
admin
身份登录控制台或者创建具有该权限的新角色并将该角色分配给一个用户。1.点击左上角的平台管理,然后选择集群管理。
2.如果您已经启用多集群功能并已导入成员集群,那么您可以选择一个特定集群以查看其节点。如果尚未启用该功能,请直接参考下一步。
3.转到应用负载下的工作负载,然后从下拉列表中选择 kubesphere-devops-system 项目。点击 devops-jenkins
右侧的 并选择编辑 YAML 以编辑其 YAML 配置文件。
4.向下滚动到下图所示的需要指定的字段。完成修改后,点击确定以保存。
在
devops-jenkins
部署 (Deployment) 中修改电子邮件服务器后,它会重新启动。因此,DevOps 系统将在几分钟内不可用,请在适当的时候进行此类修改。
环境变量名称 | 描述信息 |
---|---|
EMAIL_SMTP_HOST | SMTP 服务器地址 |
EMAIL_SMTP_PORT | SMTP 服务器端口(如:25) |
EMAIL_FROM_ADDR | 电子邮件发件人地址 |
EMAIL_FROM_NAME | 电子邮件发件人姓名 |
EMAIL_FROM_PASS | 电子邮件发件人密码 |
EMAIL_USE_SSL | 是否启用 SSL 配置 |
实际配置:
KubeSphere 中的图形编辑面板包含用于 Jenkins 阶段 (Stage) 和步骤 (Step) 的所有必要操作。您可以直接在交互式面板上定义这些阶段和步骤,无需创建任何 Jenkinsfile。
本教程演示如何在 KubeSphere 中使用图形编辑面板创建流水线。KubeSphere 在整个过程中将根据您在编辑面板上的设置自动生成 Jenkinsfile,您无需手动创建 Jenkinsfile。待流水线成功运行,它会相应地在您的开发环境中创建一个部署 (Deployment) 和一个服务 (Service),并将镜像推送至 Docker Hub。
project-regular
),必须邀请该用户至 DevOps 项目中并赋予 operator
角色。如果尚未创建,请参见创建企业空间、项目、用户和角色。本示例流水线包括以下六个阶段。
snapshot-$BUILD_NUMBER
推送至 Docker Hub,其中 $BUILD_NUMBER
是流水线活动列表中的记录的序列号。1.以 project-regular
身份登录 KubeSphere 控制台。转到您的 DevOps 项目,在 DevOps 项目设置下的凭证页面创建以下凭证。有关如何创建凭证的更多信息,请参见凭证管理。
如果您的帐户或密码中有任何特殊字符,例如
@
和$
,可能会因为无法识别而在流水线运行时导致错误。在这种情况下,您需要先在一些第三方网站(例如 urlencoder)上对帐户或密码进行编码,然后将输出结果复制粘贴作为您的凭证信息。
凭证 ID | 类型 | 用途 |
---|---|---|
dockerhub-id | 用户名和密码 | Docker Hub |
demo-kubeconfig | kubeconfig | Kubernetes |
2.您还需要为 SonarQube 创建一个凭证 ID (sonar-token
),用于上述的阶段 3(代码分析)。请参阅为新项目创建 SonarQube 令牌 (Token),在访问令牌类型的凭证的令牌字段中输入 SonarQube 令牌。点击确定完成操作。
3.你在列表中可以看到4个凭证
在本教程中,示例流水线会将 sample 应用部署至一个项目,可以查看deploy下dev yaml配置文件## 标题。因此,您必须先创建一个项目(例如 kubesphere-sample-dev
)。待流水线成功运行,会在该项目中自动创建该应用的部署和服务。
您可以使用 project-admin
帐户创建项目。此外,该用户也是 CI/CD 流水线的审核员。请确保将 project-regular
帐户邀请至该项目并授予 operator
角色。有关更多信息,请参见创建企业空间、项目、用户和角色。
1.请确保以 project-regular
身份登录 KubeSphere 控制台,转到您的 DevOps 项目。在流水线页面点击创建。
2.在弹出的对话框中,将它命名为 graphical-pipeline
,点击下一步。
3.在高级设置页面,点击添加,添加以下三个字符串参数。这些参数将用于流水线的 Docker 命令。添加完成后,点击创建。
参数类型 | 名称 | 值 | 描述信息 |
---|---|---|---|
字符串 | REGISTRY | docker.io |
镜像仓库地址。本示例使用 docker.io 。 |
字符串 | DOCKERHUB_NAMESPACE | Docker ID | 您的 Docker Hub 帐户或该帐户下的组织名称。 |
字符串 | APP_NAME | devops-sample |
应用名称。 |
有关其他字段,请直接使用默认值或者参考流水线设置以自定义配置。
4.创建的流水线会显示在列表中
流水线详情页面会显示同步状态,它是 KubeSphere 和 Jenkins 之间的同步结果。若同步成功,您会看到成功图标。您也可以点击编辑 Jenkinsfile 手动为流水线创建一个 Jenkinsfile。
图形编辑面板包括两个区域:左侧的画布和右侧的内容。它会根据您对不同阶段和步骤的配置自动生成一个 Jenkinsfile,为开发者提供更加用户友好的操作体验。
流水线包括声明式流水线和脚本化流水线。目前,您可以使用该面板创建声明式流水线。有关流水线语法的更多信息,请参见 Jenkins 文档。
1.在图形编辑面板上,从类型下拉列表中选择 node,从 Label 下拉列表中选择 maven。
agent
用于定义执行环境。agent
指令指定 Jenkins 执行流水线的位置和方式。有关更多信息,请参见选择 Jenkins Agent。
2.请点击左侧的加号图标来添加阶段。点击添加步骤上方的文本框,然后在右侧的名称字段中为该阶段设置名称(例如 Checkout SCM
)。
3.点击添加步骤。在列表中选择 git,以从 GitHub 拉取示例代码。在弹出的对话框中,填写必需的字段。点击确定完成操作。
URL:输入 GitHub 仓库地址 https://github.com/kubesphere/devops-maven-sample.git
。请注意,这里是示例地址,您需要使用您自己的仓库地址。
凭证 ID:本教程中无需输入凭证 ID。
分支:如果您将其留空,则默认为 master 分支。请输入 sonarqube
,或者如果您不需要代码分析阶段,请将其留空。
https://github.com/nextgomsb/devops-maven-sample.git
后续执行过程中有问题时,可以尝试修改容器基础镜像
创建流水线
4.第一阶段设置完成
1.点击阶段 1 右侧的加号图标添加新的阶段,以在容器中执行单元测试。将它命名为 Unit Test
。
2.点击添加步骤,在列表中选择指定容器。将其命名为 maven
然后点击确定。
3.点击添加嵌套步骤,在 maven
容器下添加一个嵌套步骤。在列表中选择 shell 并在命令行中输入以下命令。点击确定保存操作。
mvn clean package
您可以在图形编辑面板上指定在给定阶段指令中执行的一系列步骤。
本阶段使用 SonarQube 来测试您的代码。如果您不需要代码分析,可以跳过该阶段。
1.点击 Unit Test
阶段右侧的加号图标添加一个阶段,以在容器中进行 SonarQube 代码分析。将它命名为 Code Analysis
。
2.在 Code Analysis 中,点击任务下的添加步骤,选择指定容器。将其命名为 maven
然后点击确定。
3.点击 maven
容器下的添加嵌套步骤,以添加一个嵌套步骤。点击添加凭证并从凭证 ID 列表中选择 SonarQube 令牌 (sonar-token
)。在文本变量中输入 SONAR_TOKEN
,然后点击确定。
4.在添加凭证步骤下,点击添加嵌套步骤为其添加一个嵌套步骤。
5.点击 Sonarqube 配置,在弹出的对话框中保持默认名称 sonar
不变,点击确定保存操作
6.在 Sonarqube 配置步骤下,点击添加嵌套步骤为其添加一个嵌套步骤。
7.点击 shell 并在命令行中输入以下命令,用于 sonarqube 分支和认证,点击确定完成操作。
mvn sonar:sonar -Dsonar.login=$SONAR_TOKEN
8.点击指定容器步骤下的添加嵌套步骤(第三个),选择超时。在时间中输入 1
并将单位选择为小时,点击确定完成操作。
9.点击超时步骤下的添加嵌套步骤,选择代码质量检查 (SonarQube)。在弹出的对话框中选择检查通过后开始后续任务。点击确定保存操作。
点击前一个阶段右侧的加号图标添加一个新的阶段,以构建并推送镜像至 Docker Hub。将其命名为 Build and Push
。
2.点击任务下的添加步骤,选择指定容器,将其命名为 maven
,然后点击确定。
3.点击 maven
容器下的添加嵌套步骤添加一个嵌套步骤。在列表中选择 shell 并在弹出窗口中输入以下命令,点击确定完成操作。
mvn -Dmaven.test.skip=true clean package
4.再次点击添加嵌套步骤,选择 shell。在命令行中输入以下命令,以根据 Dockerfile 构建 Docker 镜像。点击确定确认操作。
请勿遗漏命令末尾的点
.
docker build -f Dockerfile-online -t $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BUILD_NUMBER .
5.再次点击添加嵌套步骤,选择添加凭证。在弹出的对话框中填写以下字段,点击确定确认操作。
dockerhub-id
。DOCKER_PASSWORD
。DOCKER_USERNAME
。出于安全原因,帐户信息在脚本中显示为变量。
6.在添加凭证步骤中点击添加嵌套步骤(第一个)。选择 shell 并在弹出窗口中输入以下命令,用于登录 Docker Hub。点击确定确认操作。
echo "$DOCKER_PASSWORD" | docker login $REGISTRY -u "$DOCKER_USERNAME" --password-stdin
7.在添加凭证步骤中点击添加嵌套步骤。选择 shell 并输入以下命令,将 SNAPSHOT 镜像推送至 Docker Hub。点击确定完成操作。
docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BUILD_NUMBER
1.点击 Build and Push 阶段右侧的加号图标添加一个新的阶段,以保存制品,将其命名为 Artifacts
。本示例使用 JAR 文件包。
2.选中 Artifacts 阶段,点击任务下的添加步骤,选择保存制品。在弹出的对话框中输入 target/*.jar
,用于设置 Jenkins 中制品的保存路径。点击确定完成操作。
target/*.jar
1.点击 Artifacts 阶段右侧的加号图标添加最后一个阶段,将其命名为 Deploy to Dev
。该阶段用于将资源部署至您的开发环境(即 kubesphere-sample-dev
项目)。
2.点击 Deploy to Dev 阶段下的添加步骤,在列表中选择审核,然后在消息字段中填入 @project-admin
,即 project-admin
帐户在流水线运行到该阶段时会进行审核。点击确定保存操作。
在 KubeSphere 3.2.x 中,能够运行流水线的帐户也能够继续或终止该流水线。此外,流水线创建者、拥有该项目管理员角色的用户或者您指定的帐户也有权限继续或终止流水线。
3.再次点击 Deploy to Dev 阶段下的添加步骤。在列表中选择指定容器,将其命名为 maven
然后点击确定。
4.点击 maven
容器步骤下的添加嵌套步骤。在列表中选择添加凭证,在弹出的对话框中填写以下字段,然后点击确定。
5.点击添加凭证步骤下的添加嵌套步骤。在列表中选择 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 -
6.如果您想在流水线成功运行时接收电子邮件通知,请点击添加步骤,选择邮件,以添加电子邮件信息。请注意,配置电子邮件服务器是可选操作,如果您跳过该步骤,依然可以运行流水线。
7.待您完成上述步骤,请在右下角点击保存。随后,您可以看到该流水线有完整的工作流,并且每个阶段也清晰列示。当您用图形编辑面板定义流水线时,KubeSphere 会自动创建相应的 Jenkinsfile。点击编辑 Jenkinsfile 查看该 Jenkinsfile。
在流水线页面,您可以点击该流水线右侧的
,然后选择复制来创建该流水线的副本。如果您需要同时运行多个不包含多分支的流水线,您可以全部选中这些流水线,然后点击运行来批量运行它们。
1.您需要手动运行使用图形编辑面板创建的流水线。点击运行,您可以在弹出的对话框中看到步骤 3 中已定义的三个字符串参数。点击确定来运行流水线。
2.要查看流水线的状态,请转到运行记录选项卡,点击您想查看的记录。
3.稍等片刻,流水线如果成功运行,则会在 Deploy to Dev 阶段停止。project-admin
作为流水线的审核员,需要进行审批,然后资源才会部署至开发环境。
点击制品选项卡,然后点击右侧的图标下载该制品。
在代码检查页面,可以查看由 SonarQube 提供的本示例流水线的代码分析结果。如果您没有事先配置 SonarQube,则该部分不可用。有关更多信息,请参见将 SonarQube 集成到流水线。
1.如果流水线的每个阶段都成功运行,则会自动构建一个 Docker 镜像并推送至您的 Docker Hub 仓库。最终,流水线将在您事先设置的项目中自动创建一个部署和一个服务。
2.前往该项目(本教程中即 kubesphere-sample-dev
),请点击应用负载下的工作负载,您可以看到列表中显示的部署。
3.在服务页面,您可以看到示例服务通过 NodePort 暴露其端口号。要访问服务,请访问
。
访问服务前,您可能需要配置端口转发规则并在安全组中放行该端口。
4.现在流水线已成功运行,将会推送一个镜像至 Docker Hub。登录 Docker Hub 查看结果。
5.该应用的名称为 devops-sample
,即 APP_NAME
的值,标签即 SNAPSHOT-$BUILD_NUMBER
的值。$BUILD_NUMBER
即运行记录选项卡列示的记录的序列号。
6.如果您在最后一个阶段设置了电子邮件服务器并添加了电子邮件通知的步骤,您还会收到电子邮件消息。
如需创建 GitHub 个人访问令牌,请转到您 GitHub 帐户的 Settings,点击 Developer settings,选择 Personal access tokens,然后点击 Generate new token。
以project-regular用户登录后创建github访问凭证
使用project-admin用户登录WEB控制器,创建kubesphere-sample-prod项目,并邀请project-regular用户成为项目成员,并为operator角色。
使用project-regular用户登录,并编辑graphical-pipeline
,添加TAG_NAME,值为v0.0.1
scriptBlock return params.TAG_NAME =~ /v.*/