更新时间:2024-09-26 GMT+08:00

配置流水线构建任务

  • 场景一:使用Jenkins构建生成的是软件包,如Jar包,就使用脚本中的软件包部署场景,软件包部署会将构建出来的软件包上传到OBS桶中并升级ServiceStage组件。
  • 场景二:使用Jenkins构建生成的是镜像包,就使用脚本中的镜像部署场景,镜像部署会将构建出来的镜像包上传到SWR镜像仓库中并升级ServiceStage组件。

本章节以配置流水线脚本中的实例为Jar包的场景进行说明。

创建GitLab凭证

使用具有GitLab代码仓库权限的账号密码在Jenkins中创建凭证,用于拉取GitLab代码。

  1. 在浏览器地址栏输入http://{安装Jenkins的Linux虚拟机IP}:8080,登录Jenkins。
  2. 选择“系统管理 > 系统配置”,在“配置”中选择“Gitlab”。
  3. 单击“Credentials”下方的“添加”,选择“Jenkins”。
  4. 配置GitLab账号密码,单击“添加”,保存配置。
  5. 选择“系统管理 > Manage Credentials”,查看配置的凭据。

    唯一标识在配置流水线脚本中会用到。

创建流水线任务

  1. 在浏览器地址栏输入http://{安装Jenkins的Linux虚拟机IP}:8080,登录Jenkins。
  2. 单击“新建任务”。
  3. 输入任务名称,示例:test-upgrade,选择“流水线”,单击“确定”。

配置构建触发器

  1. 配置Jenkins构建触发器。

    1. 勾选“Build when a change is pushed to GitLab”,保存GitLab webhook URL(配置Gitlab webhook时需使用),然后单击右下角“高级”。
    2. 选择“Filter branches by regex ”,配置指定分支变更后触发构建任务,示例中的分支名称为main,单击右下角“Generate”生成Secret token并保存,在配置GitLab webhook时需使用。

  2. 配置GitLab webhook。

    1. 登录GitLab,进入代码仓库,示例中的仓库名称是“test”,选择settings中的“Webhooks”,URL和Secret token填写1获取到的GitLab webhook URL和Secret token。
    2. 取消勾选SSL verification的“Enable SSL verification”,单击“Add webhook”。

配置流水线脚本

流水线脚本是构建时运行的构建命令,脚本参数说明见表1

表1 表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。

upgrade_shell

String

upgrade.sh脚本在Jenkins所在虚拟机上存放的路径,例如:/root/jar/upgrade.sh。内容请参见upgrade.sh脚本说明

  1. 完成“构建触发器”配置之后,在“流水线”页签,在下拉框选择“Pipeline script”。
  2. 配置流水线脚本,示例中使用的是构建jar包场景,脚本如下:

    请使用您环境下的实际参数替换脚本中的参数变量。
    node {
        // 定义代码仓库地址,例如:http://10.95.156.58:8090/zmg/test.git
        def git_url = '{代码仓库地址}'
        // GitLab凭据id
        def credentials_id = '{GitLab凭据id}'
        // git代码仓库分支名称,例如:main
        def branch_name = '{git代码仓库分支名称}'
        // maven安装的可执行文件路径,例如 :/root/app/maven/apache-maven-3.8.6/bin/mvn
        def maven = '{maven安装的可执行文件路径}'
        // upgrade.sh脚本存放路径,例如:/root/jar/upgrade.sh
        def upgrade_shell = '{upgrade.sh脚本存放路径}'
    
        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 -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true"
        }
        stage('upgrade') {
            // 执行脚本,使用构建上传到obs的jar包升级ServiceStage组件,超时时间5分钟
            sh "timeout 300s '$upgrade_shell'"
        }
    }
    • 流水线脚本运行时会调用upgrade.sh,该脚本详细说明请参见upgrade.sh脚本说明
    • 设置脚本文件upgrade.sh为可执行文件。