配置流水线构建任务
- 场景一:使用Jenkins构建生成的是软件包,如Jar包,就使用脚本中的软件包部署场景,软件包部署会将构建出来的软件包上传到OBS桶中并升级CAE组件。
- 场景二:使用Jenkins构建生成的是镜像包,就使用脚本中的镜像部署场景,镜像部署会将构建出来的镜像包上传到SWR镜像仓库中并升级CAE组件。
本章节以配置流水线脚本中的实例为Jar包的场景进行说明。
创建Gitlab凭证
使用具有Gitlab代码仓库权限的账号密码在Jenkins中创建凭证,用于拉取Gitlab代码。
- 在浏览器地址栏输入http://{安装Jekins的Linux虚拟机IP}:8080,登录Jenkins。
- 选择“系统管理 > 系统配置”,在配置中选择“Gitlab”。
图1 进入Gitlab配置
- 单击“Credentials”下方的“添加”,选择“Jenkins”。
图2 选择凭据提供者
- 配置Gitlab账号密码,单击“添加”,保存配置。
- 选择“系统管理 > Manage Credentials”,查看配置的凭据。
创建流水线任务
- 在浏览器地址栏输入http://{安装Jekins的Linux虚拟机IP}:8080,登录Jenkins。
- 单击“新建任务”。
图5 新建任务
- 输入任务名称,本示例使用:test-demo,选择“流水线”,单击“确定”。
配置构建触发器
这里介绍两种构建方式:
- 在Jenkins中手动触发构建,手动单击任务右边的“立即构建”从而触发流水线任务。
- 通过Gitlab提交代码后自动触发Jenkins构建,这种方式同时支持手动触发构建。
此处以第二种方式为例。
- 配置Jenkins构建触发器。
- 勾选“Build when a change is pushed to GitLab”,保存图示中的GitLab webhook URL(配置Gitlab webhook时需使用),然后单击右下角“高级”。
图6 获取GitLab webhook URL
- 选择“Filter branches by regex ”,配置指定分支变更后触发构建任务,示例中的分支名称为main,单击右下角“Generate”生成Secret token并保存,在配置Gitlab webhook时需使用。
图7 获取Secret token
- 勾选“Build when a change is pushed to GitLab”,保存图示中的GitLab webhook URL(配置Gitlab webhook时需使用),然后单击右下角“高级”。
- 配置Gitlab webhook
- 登录Gitlab,进入代码仓库,示例中的仓库名称是“test-demo”。
- 选择settings中的“Webhooks”,URL和Secret token填写1获取到的GitLab webhook URL和Secret token。
图8 webhooks配置
- 取消勾选SSL verification的“Enable SSL verification”,单击“Add webhook”。
图9 完成webhook配置
配置流水线脚本
流水线脚本是构建时运行的构建命令,脚本参数说明见表1。
参数 |
是否必须 |
参数类型 |
描述 |
---|---|---|---|
git_url |
是 |
String |
Gitlab代码仓库地址。 |
credentials_id |
是 |
String |
使用账号密码配置的Gitlab凭据id,参考创建Gitlab凭证。 |
branch_name |
是 |
String |
Gitlab代码仓库分支名称。 |
maven |
是 |
String |
maven安装的可执行文件路径,示例:/root/app/maven/apache-maven-3.8.6/bin/mvn。 |
deploy_shell |
是 |
String |
deploy.sh脚本在Jenkins所在虚拟机上存放的路径,示例:/root/jar/deploy.sh,内容请参见deploy.sh脚本说明。 |
build_target_name |
是 |
String |
构建产物名称:软件包名称或镜像名称:版本号,通过执行脚本时传入该参数,软件包部署场景为软件包名称,镜像部署场景为构建出来的镜像名称:版本号。 |
- 完成“构建触发器”配置之后,在“流水线”页签,在下拉框选择“Pipeline script”。
图10 流水线配置
- 配置流水线脚本,示例中使用的是构建jar包场景,脚本如下:
node { // 定义代码仓地址 def git_url = 'http://100.**.**.207:8090/test/test-demo.git' // Gitlab凭据id def credentials_id = '133b7c9a-eb6a-4484-84b3-c3509ed63df8' // git代码仓库分支名称 def branch_name = 'main' // maven安装的可执行文件路径 def maven = '/root/app/maven/apache-maven-3.8.6/bin/mvn' // deploy.sh 脚本存放路径,需要设置可执行权限 def deploy_shell = '/root/jar/deploy.sh' // 构建产物名称:软件包名称或镜像名称,必须参数,通过执行脚本时传入该参数 def build_target_name = "cae-demo-1.0-SNAPSHOT.jar" stage('Clone sources') { git branch: branch_name, credentialsId: credentials_id, url: git_url } stage('Build') { // 构建jar包 sh "'$maven' clean package -Dmaven.test.failure.ignore=true" } stage('deploy') { // 执行脚本,使用构建产物升级CAE组件,超时时间5分钟 sh "timeout 300s '$deploy_shell' '$build_target_name'" } }
- 流水线脚本运行时会调用deploy.sh,该脚本详细说明参见deploy.sh脚本说明。
- 设置脚本文件deploy.sh为可执行文件。