天天看點

Jenkins+Gitlab實作代碼自動建構部署

一、環境準備

主機名 ip 安裝軟體
jenkins 192.168.75.149 jenkins
gitlab 192.168.75.147 gitlab
web 192.168.75.155 部署應用

二、jenkins伺服器配置

1、生産公鑰

(2)擷取公鑰資訊

公鑰資訊在配置 Gitlab SSH Keys 時用到。

Jenkins+Gitlab實作代碼自動建構部署

(3)擷取私鑰資訊

私鑰資訊在配置 Jenkins Publish over SSH 時用到。

Jenkins+Gitlab實作代碼自動建構部署

(4)複制公鑰到應用伺服器

三、配置 Gitlab

1、建立示例項目 git-test

Jenkins+Gitlab實作代碼自動建構部署

2、配置 SSH Keys

Jenkins+Gitlab實作代碼自動建構部署

将jenkins的公鑰複制過來,點選add key

Jenkins+Gitlab實作代碼自動建構部署

3、配置 Access Token

Jenkins+Gitlab實作代碼自動建構部署

點選create按鈕

Jenkins+Gitlab實作代碼自動建構部署

将生成的 Access Token 記錄下來,後面在配置 GitLab 憑據時用到:

Jenkins+Gitlab實作代碼自動建構部署

四、配置 Jenkins

1、安裝插件

進入“插件管理”,安裝插件:GitLab、Generic Webhook Trigger、Git Parameter、Publish Over SSH,安裝完插件重新開機系統

2、配置 GitLab 憑據

進入系統配置,點選【添加】添加憑據

Jenkins+Gitlab實作代碼自動建構部署

選擇Gitlab API token,輸入從gitlab生成的token,輸入ID,點選确定

Jenkins+Gitlab實作代碼自動建構部署

輸入gitlab的連接配接名稱、連接配接位址,點選【Test Connection】測試成功後點選【儲存】

Jenkins+Gitlab實作代碼自動建構部署

3、配置 Publish over SSH

進入系統配置,配置 Publish over SSH,輸入jenkins的私鑰

Jenkins+Gitlab實作代碼自動建構部署

4、配置 SSH Servers

輸入應用伺服器的ip和使用者名,點選測試,成功之後點選儲存

注意:配置 Jenkins SSH Servers 時,Remote Directory 設為 “/”,如果不設定,檔案會預設拷貝到 /root 目錄下

Jenkins+Gitlab實作代碼自動建構部署

5、建立任務

點選“建立任務”,建立任務 pipeline-test,選擇自由風格的軟體項目

Jenkins+Gitlab實作代碼自動建構部署

6、配置任務

(1)配置git

輸入gitlab的位址和憑證(我用的是使用者名和密碼的)

Jenkins+Gitlab實作代碼自動建構部署

(2)建構觸發器

Jenkins+Gitlab實作代碼自動建構部署

點選進階,點選Generat生産token

Jenkins+Gitlab實作代碼自動建構部署

(3)建構

選中“Send files or execute command over SSH”

Jenkins+Gitlab實作代碼自動建構部署
Jenkins+Gitlab實作代碼自動建構部署

(4)jenkins其他配置

勾選匿名使用者具有可讀權限

Jenkins+Gitlab實作代碼自動建構部署

Error 403 No valid crumb was included in the request

報錯解決 容器化jenkins關閉CSRF

參考連結:

進入jenkins容器修改/usr/local/bin/jenkins.sh腳本,将原來的

exec java -Duser.home="$JENKINS_HOME" ${FUTURE_OPTS} "${java_opts_array[@]}" -jar ${JENKINS_WAR} "${jenkins_opts_array[@]}" "$@"

改為

exec java -Duser.home="$JENKINS_HOME" -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true "${java_opts_array[@]}" -jar ${JENKINS_WAR} "${jenkins_opts_array[@]}" "$@"

,儲存退出,重新開機容器即可

Jenkins+Gitlab實作代碼自動建構部署

取消勾選Enable authentication for ‘/project’ end-point

Jenkins+Gitlab實作代碼自動建構部署

五、配置 Gitlab Webhook

進入gitlab項目,選擇webhook,填寫jenkins上的位址和token儲存即可

Jenkins+Gitlab實作代碼自動建構部署
Jenkins+Gitlab實作代碼自動建構部署

傳回200則說明成功

Jenkins+Gitlab實作代碼自動建構部署

六、測試

修改代碼并 push 到遠端倉庫

Jenkins+Gitlab實作代碼自動建構部署
Jenkins+Gitlab實作代碼自動建構部署
Jenkins+Gitlab實作代碼自動建構部署

其他:需提前安裝以下插件:

gitlab hook-plugin,gitlab-plugin,gitlab