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 協議》,轉載必須註明作者和本文連結