本文將簡單介紹如何在Linux下配置Jenkins+gitlab持續整合構建流程
目標:
- 能構建成功併發布到測試環境
- gitlab推指定分支程式碼可以觸發構建
- 設定開發者郵箱通知
流程
- linux基礎
- 環境:java node jenkins git yarn
注意:全域性環境變數的配置 - Jenkins 配置
- gitlab->webhook 配置
- webhook: webhook外掛允許你建立或設定GitLab上訂閱某些事件。當其中一個事件被觸發時,我們將傳送一個HTTP POST負載到webhook的配置URL。webhook可以用來更新外部問題跟蹤器、觸發CI構建、更新備份映象,甚至部署到生產伺服器。
linux基礎
- 命令
- pwd: 檢視當前目錄
- vi 目錄: 進入編輯該目錄
- esc + : + q + !: 強制退出不儲存
- esc + : + w + q: 儲存並退出
- source /etc/profile: 修改後的/etc/profile檔案立即生效
- shift + g: 到達檔案底部
- mv 原名稱 新名稱: 重新命名
- yum命令
步驟
軟體安裝
wget
yum install wget
複製程式碼
unzip
yum install unzip
複製程式碼
nodejs
- 檢視Linux系統位數
uname -a
複製程式碼
-
進入安裝目錄(/usr/local/src)
-
下載對應安裝包
wget https://nodejs.org/dist/v8.5.0/node-v8.5.0-linux-x64.tar.xz
複製程式碼
- 解壓並進入
tar -zxvf node-v8.5.0-linux-x64.tar.xz
複製程式碼
z: 有gzip屬性的
x: 解壓
v: 顯示所有過程
f: 使用檔案名字,該引數只能放在最後
出現如上錯誤說明這個壓縮包沒有用gzip格式壓縮,所以上述解壓命令去掉z就行
- 配置全域性變數
- 編輯 /etc/profile檔案
- 在檔案尾部新增如下程式碼,儲存並退出檔案
export NODE_PATH=/usr/local/src/node-v8.5.0-linux-x64/bin
export PATH=$PATH:$NODE_PATH
複製程式碼
- 檢驗是否配置為全域性變數
node -v
npm -v
複製程式碼
yarn
npm install --global yarn@13.2
複製程式碼
java
- 安裝
wget http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.tar.gz?AuthParam=1521104652_72aaa3f990b00fe806f0156100c8c245
複製程式碼
- 重新命名
mv jdk-8u161-linux-x64.tar.gz?AuthParam=1521104652_72aaa3f990b00fe806f0156100c8c245 java-jdk.tar.gz
複製程式碼
- 解壓
tar xzf java-jdk.tar.gz
複製程式碼
- 配置全域性變數
export JAVA_HOME=/usr/local/jdk1.8.0_91
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
複製程式碼
git
- 下載,壓縮,進入目錄
wget https://github.com/git/git/archive/v1.7.1.zip
unzip v1.7.1.zip
cd git-1.7.1
複製程式碼
- 安裝需要的外掛
yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
複製程式碼
- 編譯, 安裝
make prefix=/usr/local/git all
make prefix=/usr/local/git install
複製程式碼
- 配置全域性環境變數
- 編輯/etc/profile
- 檔案尾部新增如下程式碼,儲存並退出檔案
export PATH=/usr/local/git/bin:$PATH
複製程式碼
- 配置git
- 設定user,生成ssh key
git config --global user.name "xxx"
git config --global user.email "mailto:xxx@gmail.com"
ssh-keygen -t rsa -C "mailto:qiubing.it@gmail.com"
複製程式碼
- 將上述生成的ssh key新增到gitlab
cat ~/.ssh/id_rsa.pub
複製程式碼
複製內容,頭部加上ssh-rsa
Jenkins
wget http://updates.jenkins-ci.org/download/war/2.109/jenkins.war
複製程式碼
Jenkins + gitlab 配置
Jenkins配置(1)===》推薦使用
- 啟動Jenkins
nohup java -jar /root/app/jenkins.war --httpPort=8080 2>&1 &
複製程式碼
&:當在前臺執行某個作業時,終端被該作業佔據;可以在命令後面加上& 實現後臺執行
nohup: 當使用&命令後,作業被提交到後臺執行,當前控制檯沒有被佔用,但是一旦把當前控制檯關掉(退出賬戶時),作業就會停止執行。nohup命令可以在使用者退出賬戶之後繼續執行相應的程式。
注: 1. 第一次啟動時需要輸入一個祕鑰(xshell中可看到)
2. 預設admin登入的話密碼在.jenkins/secrets/initialAdminPassword檔案裡(下次登入使用)
3. 也可以修改密碼
- 新建一個專案
- jenkins配置hookplugin
- 安裝外掛:系統管理 –> 管理外掛 –> 可選外掛 –> 選擇安裝 gitplugin,gitlab ,gitlab plugin,gitlab hook plugin, Build Authorization Token, gitlab Authorization
- 專案配置
- general: 填寫專案名稱
- 原始碼管理:
- 構建觸發器:
- 正則過濾觸發分支
- 記錄下url
- 記錄下token
- 寫打包命令
Jenkins配置(2)===》不知如何選擇觸發分支
- 隨機生成token
openssl rand -hex 12
複製程式碼
會生成一串token,儲存下來
- 構建觸發器
- 勾選‘觸發遠端構建(例如,使用指令碼)’,在身份驗證令牌欄輸入隨機生成的token:上面儲存的
- 記錄url
- 勾選上‘gitlab hook trigger for gitScm polling’
- 勾選‘觸發遠端構建(例如,使用指令碼)’,在身份驗證令牌欄輸入隨機生成的token:上面儲存的
gitlab配置
- 新增ssh key
- 配置webhook
- 選擇專案 –> setting –> webhook
- 填寫上面儲存的url
- 填寫上面儲存的token
- 新增webhook
- test(測試流程是否能跑通)
- 報錯403,未登入啥的,解決方法就是將url的`http://`後面加上 使用者名稱:密碼 的形式
- 報錯no valid crumb was included in th request,解決方法:進入jenkins系統管理 –> 全域性安全配置 –> 取消選中:防止跨站點請求偽造
- 選擇專案 –> setting –> webhook
Jenkins郵箱通知配置
-
系統管理 —> 系統設定
- 設定管理員郵件地址
- Extended E-mail Notification
- 未選中‘allow sending to unregistered users’報錯資訊:
- 選中後:
- 未選中‘allow sending to unregistered users’報錯資訊:
- 郵件通知
- 可以通過傳送測試郵件看下是否成功
- 可以通過傳送測試郵件看下是否成功
- 設定管理員郵件地址
-
專案設定
- 增加構建後操作步驟,選擇E-mail Notification,Editable E-mail Notification
- E-mail Notification
- Editable E-mail Notification—>Advances Settings,新增Triggers
- 增加構建後操作步驟,選擇E-mail Notification,Editable E-mail Notification