注意: 官方文檔 https://docs.gitlab.com/ee/integration/jenkins.html
1. 安裝gitlab
1. 安裝依賴及配置
sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
2. 添加gitlab倉庫並且安裝
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
sudo EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-ee
3. 安裝Postfix以發送郵件通知(可跳過,但添加用戶需用到)
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
4. 配置gitlab
-
vim /etc/gitlab/gitlab.rb
- 將
ternal_url 'http://gitlab.example.com'
修改爲external_url 'http://<你的服務器地址或域名>'
- 爲了方便jenkins調用,此處使用80端口
- 將
unicorn['port'] = 8080
修改爲unicorn['port'] = 11001
- 將
prometheus['listen_address'] = 'localhost:9090'
改爲prometheus['listen_address'] = 'localhost:11002'
- 將
5. 生效配置並啓動
sudo gitlab-ctl reconfigure
sudo gitlab-ctl start/stop
6. 訪問gitlab
http://<IP>
2. 安裝jenkins
1. 下載war包
curl -O http://static.outsidelook.cn/software/jenkins/jenkins.war
2. 運行Jenkins
nohup java -jar jenkins.war --httpPort=12000 &
3. 訪問12000端口打開jenkins
http://localhost:12000
4. 查看jenkins初始密碼
cat /root/.jenkins/secrets/initialAdminPassword
5. 根據提示完成創建
3. jenkins添加插件
1. 登錄賬戶
- admin - 123456 (這是我的賬號)
2. 在線升級jenkins
- 升級完需重啓jenkins
3. 安裝git、gitlab插件
-
系統管理
->管理插件
->可選插件
-
安裝以下插件
- Git plugin
- GitLab plugin
4. 配置gitlab api token
-
打開Gitlab,點擊右上角用戶圖標,選擇
Settings
->Account
, -
打開Jenkins,選擇
系統管理
->系統設置
->配置
->Gitlab
- Connection name : 隨便填
- Gitlab host URL : Gitlab的訪問地址
- 點擊
Add
->Jenkins
- 類型選擇GitLab API token,API token填入在gitlab中生成的token
- Credentials : 選擇剛纔添加的Credentials
- 點擊
Test Connection
,返回Success - 點擊
應用
->保存
5. 配置Git插件
-
打開Jenkins
- 點擊
系統管理
->系統設置
->配置
->Git plugin
- 設置賬戶和郵箱
- 點擊
應用
->保存
- 點擊
6. 使用Jenkins安裝Maven
- 打開Jenkins
- 點擊
系統管理
->全局工具配置
->Maven
->Maven安裝
- 輸入名稱,選擇Maven版本
Apply
->Save
7. 創建配置Jenkins Job
1. 創建一個Job
- 點擊
創建一個新任務
- 名字可以自己起,然後點擊
構建一個自由風格的軟件項目
->確定
2. 在Gitlab中添加ssh祕鑰
- 具體步驟自己查詢
- 此處生成是爲了jenkins服務器能訪問到你的gitlab,所以添加的是jenkins所在服務器上的密鑰。
3. 配置Job
-
打開jenkins,進入job頁面,點擊
配置
-
選擇
源碼管理
->Git
- Repository URL: gitlab倉庫地址
- 點擊
Add
->Jenkins
- 類型: SSH Username with private key
- Username: 自己的用戶名
- Private Key: 填寫jenkins服務器上的私鑰(注意:此處爲私鑰)
- 點擊
添加
- Credentials: 選擇剛纔添加的Credentials
- 點擊
保存
7. 配置Job的構造觸發器
-
打開jenkis,進入job頁面,點擊
配置
-
選擇
構造觸發器
,選擇輪詢SCM
- 日程表: H/1 * * * *(此有缺陷, 可以使用 H/2 * * * * 替代,表示一分鐘輪詢一次)
-
點擊
保存
8. 配置Job的構造腳本
-
打開jenkins,進入job頁面,點擊
配置
-
選擇
構造
,點擊增加構造步驟
,選擇調用頂層Maven目標
- Maven版本:選擇剛纔安裝的Maven
- 目標: clean package
-
點擊
增加構造步驟
->執行shell
,內容(例子)如下#!/bin/bash echo "Stopping pavilion-api-service" pid=`ps -ef | grep pavilion-api-service | grep -v grep | awk '{print $2}'` if [ -n "$pid" ] then echo "kill -9 的pid:" $pid kill -9 $pid fi echo "Copy jar file" /bin/cp -rf /root/.jenkins/workspace/pavilion-api-service/target/pavilion-api-service-1.0.0.jar /opt/pavilion-api-service/ echo "Run pavilion-api-service-1.0.0.jar" cd /opt/pavilion-api-service/ OLD_BUILD_ID=$BUILD_ID BUILD_ID=DONTKILLME # DONTKILLME只爲可讀,此處可使用任何內容 nohup java -jar pavilion-api-service-1.0.0.jar > nohup.out & BUILD_ID=$OLD_BUILD_ID
-
點擊
增加構建後操作步驟
,選擇Publish build status to GitLab
-
點擊
高級
,填寫build name -
點擊
應用
->保存
9. 測試
- 在master分支提交代碼進行測試