Jenkins 使用指南 之 高级应用篇

Jenkins 使用指南 之 高级应用篇

Note: 本次 Jenkins 服务安装,服务器以 CentOS 7 系统为例,且以 root 用户启动并运行服务。

本篇 Jenkins 使用指南,将简要概述一下 Jenkins 服务的以下高级应用:

  • Execute Shell with Default ENV Variables (Jenkins 的内置环境变量构建)
  • Build with Parameters (Jenkins 的参数构建)
  • Build with Parameters (Jenkins 的构建版本回退)
  • Build on Remote Servers (Jenkins 的远程构建)

I. Execute Shell with Default ENV Variables (Jenkins 的内置环境变量构建)

Note: 此处,以 Jenkins 内置参数 GIT_BRANCH (Git 分支名称) 为例。

1. Jenkins 的内置环境变量列表

通过访问以下 URL 可以查看 Jenkins 的内置环境变量列表

http://{YOUR_IP}:{YOUR_PORT}/env-vars.html/

eg. 127.0.0.1:8080/env-vars.html/

2. Jenkins 的内置环境变量 GIT_BRANCH (Git 分支名称) 的配置

  • 前往先前创建好的构建项目 (eg. GiteeTest) 的管理页面,点击 “配置”,进入配置页面
  • 前往配置 Source Code Management (源码管理) > Branches to build,点击”添加分支”,输入:{GIT_BRANCH},用以指定 环境变量 GIT_BRANCH 为当前触发构建操作的 Git 分支名称

3. Jenkins 的内置环境变量 GIT_BRANCH (Git 分支名称) 的使用

  • 前往先前创建好的构建项目 (eg. GiteeTest) 的管理页面,点击 “配置”,进入配置页面
  • 前往配置 Build (构建),修改先前写好的构建部署 Shell 脚本:
cd /home/www/project_name/
# 查看一下,环境变量 GIT_BRANCH 的输出结果,eg. origin/dev
echo ${GIT_BRANCH}
git fetch --all
# Shell 的字符串截取操作,eg. ${GIT_BRANCH} 的值为 origin/dev,则:${GIT_BRANCH:7} 的值为 dev
git checkout ${GIT_BRANCH:7}
git pull origin ${GIT_BRANCH:7}:${GIT_BRANCH:7}
chown -R www:www /home/www/project_name/
# some other shell scripts ...
...

以上的 Shell 脚本,即可实现以下效果:

当某一 Git 操作触发了 Jenkins 的构建操作,服务器端的项目代码即切换至当前触发 Jenkins 构建操作的 Git 分支,并进行部署。

II. Build with Git Parameters (Jenkins 的 Git 参数构建)

Note: 此处,Git 参数仍以 Git 分支名称变量 BRANCH 为例。

1. 安装插件 Git Parameter Plug-In

  • i. 前往 Manage Jenkins -> Manage Plugins -> Available
  • ii. 在下方可选列表中勾选 Git Parameter Plug-In
  • iii. 点击 Download now and install after restart
  • iv. 勾选重启服务

2. 插件 Git Parameter Plug-In 的使用与 Git 参数的配置

  • i. 前往先前创建好的构建项目 (eg. GiteeTest) 的管理页面,点击 “配置”,进入配置页面
  • ii. 前往配置 General (通用) > Gitee connection (Gitee 链接),勾选 “This project is parameterized” 选项
  • iii. 点击 “添加参数”,选择 “Git Parameter”,然后,填入参数信息:
    • a. 名称: 填写参数名称,eg. BRANCH
    • b. 描述: 填写参数描述即可,eg. Git Branch Name.
    • c. 参数类型: 选择 Git 参数类型,eg. 分支
    • d. 默认值: 填写 Git 参数的默认值,eg. origin/dev

3. 查看配置后的 Git 参数效果

执行完以上操作后,前往先前创建好的构建项目 (eg. GiteeTest) 的管理页面,此时即可发现,在左侧的菜单栏里,已经新增了一个选项: Build with Parameters.

点击该新增菜单选项,即可查看配置后的 Git 参数效果: 右侧页面出现了一个基于 Git 分支名称 BRANCH 的构建选项下拉框。

从此,你就可以选择当前项目下的任意分支,然后点击 “开始构建” 了。

4. Git 参数的使用

承上所说,当我们选择了当前项目下的某一个分支,然后点击 “开始构建” 后,其实并不会真的如我们所愿,根据当前选中的 Git 分支进行构建。因为,我们尚未将该 Git 参数 (也即 Shell 变量) BRANCH 引入到先前写好的的构建部署 Shell 脚本中。那我们应该怎么做呢?

具体操作步骤如下:

  • 前往先前创建好的构建项目 (eg. GiteeTest) 的管理页面,点击 “配置”,进入配置页面
  • 前往配置 Build (构建),修改先前写好的构建部署 Shell 脚本:
cd /home/www/project_name/
# 查看一下,Git 参数 (也即 Shell 变量) BRANCH 的输出结果,eg. origin/dev
echo ${BRANCH}
git fetch --all
# Shell 的字符串截取操作,eg. ${BRANCH} 的值为 origin/dev,则:${BRANCH:7} 的值为 dev
git checkout ${BRANCH:7}
git pull origin ${BRANCH:7}:${BRANCH:7}
chown -R www:www /home/www/project_name/
# some other shell scripts ...
...

以上的 Shell 脚本,即可实现以下效果:

当我们在 “Build with Parameters” 页面选择了当前项目下的某一个分支,然后点击 “开始构建” 后,服务器端的项目代码即切换至当前选中的那个 Git 分支,并进行部署。

III. Build with Git Parameters (Jenkins 的构建版本回退)

Jenkins 的构建版本回退,本质上,算是刚才第二种情况的一种特例,也即:该功能仍旧依托于插件 Git Parameter Plug-In 来实现。

Note: 此处,Git 参数以标签名称变量 TAG 为例。

1. 安装插件 Git Parameter Plug-In

略。

2. 插件 Git Parameter Plug-In 的使用与 Git 参数的配置

  • i. 前往先前创建好的构建项目 (eg. GiteeTest) 的管理页面,点击 “配置”,进入配置页面
  • ii. 前往配置 General (通用) > Gitee connection (Gitee 链接),勾选 “This project is parameterized” 选项
  • iii. 点击 “添加参数”,选择 “Git Parameter”,然后,填入参数信息:
    • a. 名称: 填写参数名称,eg. TAG
    • b. 描述: 填写参数描述即可,eg. Git Tag Name.
    • c. 参数类型: 选择 Git 参数类型: 标签
    • d. 默认值: 填写 Git 参数的默认值,eg. v1.0

3. 查看配置后的 Git 参数效果

执行完以上操作后,前往先前创建好的构建项目 (eg. GiteeTest) 的管理页面,在左侧的菜单栏里,点击菜单选项: Build with Parameters,查看配置后的 Git 参数效果。

此时即可发现: 右侧页面已经较先前增加了一个新的基于 Git 标签名称 TAG 的构建选项下拉框。

从此,你就可以选择当前项目下的任意标签 (也即版本名称),然后点击 “开始构建” 了。

4. Git 参数的使用

承上所说,当我们选择了当前项目下的某一个标签,然后点击 “开始构建” 后,其实并不会真的如我们所愿,根据当前选中的 Git 标签进行构建。同样,还是因为我们尚未将该 Git 参数 (也即 Shell 变量) TAG 引入到先前写好的的构建部署 Shell 脚本中。那我们应该怎么做呢?

具体操作步骤如下:

  • 前往先前创建好的构建项目 (eg. GiteeTest) 的管理页面,点击 “配置”,进入配置页面
  • 前往配置 Build (构建),修改先前写好的构建部署 Shell 脚本:
cd /home/www/project_name/
git fetch --all
git checkout branch_name
git pull origin branch_name:branch_name --tags
git checkout ${TAG}
chown -R www:www /home/www/project_name/
# some other shell scripts ...
...

以上的 Shell 脚本,即可实现以下效果:

当我们在 “Build with Parameters” 页面选择了当前项目下的某一个标签,然后点击 “开始构建” 后,服务器端的项目代码即切换至当前选中的那个 Git 标签所对应的版本,并进行部署。

IV. Build on Remote Servers (Jenkins 的远程构建)

1. 安装插件 SSH Plugin

  • i. 前往:Manage Jenkins -> Manage Plugins -> Available
  • ii. 在下方可选列表中勾选 SSH Plugin
  • iii. 点击 Download now and install after restart
  • iv. 勾选重启服务

2. 插件 SSH Plugin 的配置

Remote Servers 远程服务器配置:

  • i. 前往 Manage Jenkins -> Configure System -> SSH remote hosts > SSH sites
  • ii. 填写 Hostname(Your_IP), Port(Default: 22)
  • iii. Credentials 点击 Add - > Jenkins:
    • a. Domain 选择 Global credentials
    • b. Kind 选择 Username with password
    • c. Scope 选择你需要的范围: Global
    • d. 输入 username, password
    • e. 在 ID, Descripiton 中输入你想要的 ID 和描述内容 (所填 ID 保证其唯一性即可)。
  • iv. Check connection 测试链接:Successful connection.

3. Remote Servers 远程服务器配置的使用

Note: 目前假设,刚才配置好的远程服务器,其用户身份 (username) 不是 root.

  • i. 前往先前创建好的构建项目 (eg. GiteeTest) 的管理页面,点击 “配置”,进入配置页面
  • ii. 前往配置 Build (构建),点击 “增添构建步骤”,选择 “Execute shell script on remote host using ssh”
    • a. SSH site: 选择先前配置好的远程服务器
    • b. 在 Shell 命令文本框内,输入如下构建部署 Shell 脚本:
    • c. 最后,一定不要勾选 “Execute each line”!!!
cd /home/www/project_name/
# 查看一下,Git 参数 (也即 Shell 变量) BRANCH 的输出结果,eg. origin/dev
echo ${BRANCH}
# echo ${GIT_BRANCH}
sudo git fetch --all
# Shell 的字符串截取操作,eg. ${BRANCH} 的值为 origin/dev,则:${BRANCH:7} 的值为 dev
sudo git checkout ${BRANCH:7}
sudo git pull origin ${BRANCH:7}:${BRANCH:7}
sudo chown -R www:www /home/www/project_name/
# some other shell scripts ...
...

以上,在先前配置好的远程服务器上,以非 root 用户身份执行的 Shell 脚本,即可实现以下效果:

当我们在 “Build with Parameters” 页面选择了当前项目下的某一个分支,然后点击 “开始构建” 后,远程服务器端的项目代码即切换至当前选中的那个 Git 分支,并进行部署。

4. 生成并添加 SSH 公钥

Note: 千万不要忘记,需要将该远程服务器当前用户下的 SSH 公钥添加至 gitee 用户配置中!!!

以上,Jenkins 高级应用介绍完毕。

— END —

本作品采用《CC 协议》,转载必须注明作者和本文链接
夏蟲不語冰
Elijah_Wang
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!