一、環境準備
主機名 | ip | 安裝軟體 |
---|---|---|
jenkins | 192.168.75.149 | jenkins |
gitlab | 192.168.75.147 | gitlab |
web | 192.168.75.155 | 部署應用 |
二、jenkins伺服器配置
1、生産公鑰
(2)擷取公鑰資訊
公鑰資訊在配置 Gitlab SSH Keys 時用到。
(3)擷取私鑰資訊
私鑰資訊在配置 Jenkins Publish over SSH 時用到。
(4)複制公鑰到應用伺服器
三、配置 Gitlab
1、建立示例項目 git-test
2、配置 SSH Keys
将jenkins的公鑰複制過來,點選add key
3、配置 Access Token
點選create按鈕
将生成的 Access Token 記錄下來,後面在配置 GitLab 憑據時用到:
四、配置 Jenkins
1、安裝插件
進入“插件管理”,安裝插件:GitLab、Generic Webhook Trigger、Git Parameter、Publish Over SSH,安裝完插件重新開機系統
2、配置 GitLab 憑據
進入系統配置,點選【添加】添加憑據
選擇Gitlab API token,輸入從gitlab生成的token,輸入ID,點選确定
輸入gitlab的連接配接名稱、連接配接位址,點選【Test Connection】測試成功後點選【儲存】
3、配置 Publish over SSH
進入系統配置,配置 Publish over SSH,輸入jenkins的私鑰
4、配置 SSH Servers
輸入應用伺服器的ip和使用者名,點選測試,成功之後點選儲存
注意:配置 Jenkins SSH Servers 時,Remote Directory 設為 “/”,如果不設定,檔案會預設拷貝到 /root 目錄下
5、建立任務
點選“建立任務”,建立任務 pipeline-test,選擇自由風格的軟體項目
6、配置任務
(1)配置git
輸入gitlab的位址和憑證(我用的是使用者名和密碼的)
(2)建構觸發器
點選進階,點選Generat生産token
(3)建構
選中“Send files or execute command over SSH”
(4)jenkins其他配置
勾選匿名使用者具有可讀權限
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[@]}" "$@"
,儲存退出,重新開機容器即可
取消勾選Enable authentication for ‘/project’ end-point
五、配置 Gitlab Webhook
進入gitlab項目,選擇webhook,填寫jenkins上的位址和token儲存即可
傳回200則說明成功
六、測試
修改代碼并 push 到遠端倉庫
其他:需提前安裝以下插件:
gitlab hook-plugin,gitlab-plugin,gitlab