Docker搭建Jenkins實現(xiàn)自動部署的圖文教程
概要
Jenkins 和 GitLab 是兩個流行的工具,通常一起使用來實現(xiàn)持續(xù)集成和持續(xù)交付(CI/CD)。以下是如何在 Jenkins 中集成 GitLab 的基本步驟:
安裝 Jenkins:
首先,在服務(wù)器上安裝 Jenkins??梢詮?Jenkins 的官方網(wǎng)站(https://www.jenkins.io/download/)下載適用于您操作系統(tǒng)的安裝包,并按照安裝說明進(jìn)行安裝 或者 使用Docker容器。安裝 GitLab 插件:
在 Jenkins 中安裝 GitLab 插件,以便與 GitLab 服務(wù)器進(jìn)行集成。您可以通過 Jenkins 管理面板的插件管理器來安裝該插件。配置 Jenkins 項目:
在 Jenkins 中創(chuàng)建一個新的項目(或者使用現(xiàn)有的項目)。
在項目配置中,選擇 GitLab 作為版本控制工具,并提供 GitLab 倉庫的 URL。
配置 Jenkins 如何獲取源代碼,您可以選擇通過 SSH 密鑰或者 GitLab 的訪問令牌進(jìn)行認(rèn)證。
配置構(gòu)建觸發(fā)器,例如當(dāng) GitLab 上的特定分支有新的提交時觸發(fā)構(gòu)建。配置構(gòu)建步驟:
在 Jenkins 項目中添加構(gòu)建步驟,例如構(gòu)建、測試、部署等。您可以使用 Jenkins 的插件來執(zhí)行這些步驟,或者通過調(diào)用 shell 腳本來執(zhí)行相關(guān)操作。
環(huán)境安裝
linux上進(jìn)行docker安裝有兩種方式:
- Docker自動化安裝
- Docker手動安裝
可以根據(jù)該文章的步驟進(jìn)行安裝:http://www.dbjr.com.cn/server/339879ek2.htm
搭建Jenkins容器
- 拉取jenkins鏡像
docker pull jenkins/jenkins:lts-alpine-jdk17
- 生成jenkins容器
#!/bin/bash # 設(shè)置變量 PORT=8081 PROJECT_DIR="/opt/docker/jenkins" # 創(chuàng)建目錄結(jié)構(gòu) mkdir -p "$PROJECT_DIR/jenkins_home" mkdir -p "$PROJECT_DIR/logs" # 運行 Jenkins 容器 docker run -d \ --restart=always \ --privileged=true \ --name jenkins \ -u root \ -p "$PORT:8080" \ -v "$PROJECT_DIR/jenkins_home:/var/jenkins_home" \ -v "$PROJECT_DIR/logs:/var/log/jenkins" \ -v "/var/run/docker.sock:/var/run/docker.sock" \ -v "/etc/localtime:/etc/localtime" \ jenkins/jenkins:lts-alpine-jdk17
注意:如果需要在jenkins的docker容器中去構(gòu)建docker或者打包鏡像的話需要進(jìn)入容器內(nèi),安裝docker命令行工具,Docker CLI 提供了豐富的命令和選項,可以用于構(gòu)建、運行、管理和監(jiān)視 Docker 容器。
docker exec -it jenkins /bin/sh
apk add docker-cli
通過shell腳本運行生成jenkisn容器

登陸網(wǎng)址,測試jenkins是否運行成功

配置Jenkins
- 首次登陸,根據(jù)密碼提示地址,找到初始密碼,修改jenkins密碼并登陸進(jìn)行設(shè)置
- 安裝相應(yīng)的插件

安裝插件
gitLab(代碼管理)

pipeline(流水線)(jenkins推薦安裝時自動安裝)




SSH(遠(yuǎn)程登錄連接)

NodeJs(前端構(gòu)建)

Role(jenkins用戶權(quán)限控制插件)

SonarQube(代碼檢測插件)

記錄job的歷史更新記錄插件(可找到歷史命令腳本)

在jenkins容器中安裝JDK、Maven、Node等環(huán)境(位置docker jenkins_home中)
jdk:jenkins docker 一般會自帶jdk版本(自帶的最方便)
jdk最好在docker容器中安裝openjdk使用,不會出現(xiàn)no found的情況

mavan:將maven的壓縮包解壓到相應(yīng)位置
node:
- 進(jìn)入jenkins對應(yīng)容器中docker exec -it [對應(yīng)容器id] bash
- 安裝nodejs , apk add --no-cache nodejs
- 再將需要的其他版本node的壓縮包解壓到相應(yīng)位置 或者 可以在jenkins中選擇自動安裝node版本
注意: apk add --no-cache nodejs 這一步是必須的 否則構(gòu)建前端可能會出現(xiàn)env: ‘node’: No such
file or directory的錯誤

配置JDK、Maven、Node環(huán)境
全局屬性配置
系統(tǒng)管理——>系統(tǒng)配置——>全局屬性

gitLab配置

SSH配置
在jenkins_home中加入私鑰文件(用于遠(yuǎn)程訪問其他服務(wù)器等)


注意:首次訪問遠(yuǎn)程服務(wù)器時,需要在jenkins的docker容器內(nèi) 輸入命令ssh xxx.xxx.xxx.xxx 訪問其他服務(wù)器
授權(quán)成功后,jenkins才能無阻礙的訪問其他服務(wù)器,否則jenkins執(zhí)行腳本會訪問失敗
如果id_rsa 不行,那么就再加到 /root/.ssh/id_rsa 里面去
jenkins沒足夠權(quán)限訪問 就 chmod 600 ~/.ssh/id_rsa

被訪問的服務(wù)器需要填入公鑰

注意:若jenkins是docker運行,若id_rsa文件(ssh私鑰)不存在需要將id_rsa文件生成在容器內(nèi)的jenkins_home目錄下,才會生效

在SSH Server中加入需要遠(yuǎn)程連接的服務(wù)器,填寫完成后,可以點擊Test Configuration 查看是否成功
注意:遠(yuǎn)程連接的服務(wù)器需要在該服務(wù)器的/root/.ssh/authorized_keys文件中加入公鑰

配置 全局工具配置
1. Maven 配置

2. JDK 安裝

3. git安裝

4. Maven安裝

5. NodeJs安裝

Role-based Authorization Strategy插件配置用戶權(quán)限
1.配置用戶權(quán)限流程

2.設(shè)置Global roles 全局角色設(shè)置 和 Item roles 項目設(shè)置

3.配置角色權(quán)限范圍

小結(jié)
可能遇見的問題:
1. 登陸初始密碼后報錯,該Jenkins實例似乎已離線。

解決方案:
原因一:升級站點的鏈接https://updates.jenkins.io/update-center.json默認(rèn)是https
修改升級站點的鏈接
保留此離線頁面,重新開啟一個瀏覽器tab標(biāo)簽頁
- 輸入jenkins登陸網(wǎng)址http://localhost:8080/pluginManager/advanced (自己的登陸地址+路徑/pluginManager/advanced )
- 進(jìn)入該頁面最底下,找到【Update Site】,把其中的鏈接改成http,
http://updates.jenkins.io/update-center.json,點擊Submit保存,Check now 能夠檢測當(dāng)前URL是否能夠更新站點; - 提示jenkins,在重新啟動jenkins,已經(jīng)可以重新連網(wǎng),下載插件

重要:如果改完Http還是不行,請改成如下鏡像
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
http://mirror.esuni.jp/jenkins/updates/update-center.json
http://mirror.xmission.com/jenkins/updates/update-center.json
原因二:Jenkins在下載插件之前會檢查網(wǎng)絡(luò)鏈接,會去讀取配置文件的網(wǎng)址Jenkins_home/updates/default.json
修改default.json文件
- 不管是用本地運行war包的方式啟動的Jenkins,還是Docker運行的Jenkins,找到運行目錄下(Docker就是掛載出來的目錄)
- 一個叫updates目錄,修改里面的default.json文件,把第一個遇到的
www.google.com,修改成www.baidu.com - 重啟jenkins
注意:要先關(guān)閉jenkins后才能對該文件進(jìn)行修改,否則修改保存無法生效
(docker 運行的jenkins 一定要掛載目錄(如:Jenkins_home) 否則容器關(guān)閉后無法進(jìn)入容器內(nèi)修改default.json文件)


原因三:Jenkins訪問連接被防火墻阻攔
關(guān)閉防火墻
- 檢查防火墻狀態(tài):
systemctl status firewalld.service - 手動關(guān)閉防火墻:
systemctl stop firewalld.service - 關(guān)閉防火墻開機(jī)自啟:
systemctl disable firewalld.service
原因四:Jenkins版本太老
- 重新拉取其他版本的jenkins鏡像,換一個可能就會成功,一般前面三個原因的不會出現(xiàn),大概率的鏡像版本引起的。
- 例如:使用jenkins/jenkins:lts-alpine-jdk11 jenkins離線無法下載插件,換成jenkins/jenkins:lts-alpine-jdk17 就能正常運行
2. 前端npm構(gòu)建找不到,env: ‘node’: No such file or directory
原因:出現(xiàn)問題是docker jenkins 里面沒有自動安裝node導(dǎo)致找不到這個Node命令
解決方案:手動安裝nodejs
# 進(jìn)入jenkins對應(yīng)容器中 # docker exec -it [對應(yīng)容器id] bash # 安裝nodejs # apk add --no-cache nodejs # 檢查node # node -v
3. pipeline執(zhí)行過程中g(shù)it參數(shù)的commit 版本選擇出現(xiàn) 版本無法顯示的問題

原因:原因未知
解決方案:
重新創(chuàng)建一個新的pipeline任務(wù),可能解決該問題。

到此這篇關(guān)于Docker搭建Jenkins實現(xiàn)自動部署教程的文章就介紹到這了,更多相關(guān)Docker搭建Jenkins自動部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker自動化構(gòu)建Automated Build實現(xiàn)過程圖解
這篇文章主要介紹了Docker自動化構(gòu)建Automated Build實現(xiàn)過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10
Docker實現(xiàn)TLS和CA認(rèn)證的方法步驟
為了更便捷地連接Docker服務(wù)器,Docker服務(wù)器需要開放2375端口才能連接docker,本文主要介紹了Docker實現(xiàn)TLS和CA認(rèn)證的方法步驟,具有一定的參考價值,感興趣的可以了解一下2024-06-06
Centos7安裝docker compse踩過的坑及解決方法
本文,我們介紹如何在centos7環(huán)境下安裝docker-compose, 記錄下安裝過程步驟以及遇到的問題還有解決辦法,感興趣的朋友參考下吧2018-01-01
Docker NFS volume創(chuàng)建與使用方式
這篇文章主要介紹了Docker NFS volume創(chuàng)建與使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
Ubuntu24.04LTS在線安裝Docker引擎的詳細(xì)過程
本文介紹了在Ubuntu 24.04 LTS系統(tǒng)上安裝Docker引擎的步驟,包括卸載舊版本、設(shè)置Docker APT倉庫、安裝最新版或指定版本的Docker,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-11-11

