Docker搭建Jenkins實現自動部署的圖文教程
概要
Jenkins 和 GitLab 是兩個流行的工具,通常一起使用來實現持續(xù)集成和持續(xù)交付(CI/CD)。以下是如何在 Jenkins 中集成 GitLab 的基本步驟:
安裝 Jenkins:
首先,在服務器上安裝 Jenkins??梢詮?Jenkins 的官方網站(https://www.jenkins.io/download/)下載適用于您操作系統(tǒng)的安裝包,并按照安裝說明進行安裝 或者 使用Docker容器。安裝 GitLab 插件:
在 Jenkins 中安裝 GitLab 插件,以便與 GitLab 服務器進行集成。您可以通過 Jenkins 管理面板的插件管理器來安裝該插件。配置 Jenkins 項目:
在 Jenkins 中創(chuàng)建一個新的項目(或者使用現有的項目)。
在項目配置中,選擇 GitLab 作為版本控制工具,并提供 GitLab 倉庫的 URL。
配置 Jenkins 如何獲取源代碼,您可以選擇通過 SSH 密鑰或者 GitLab 的訪問令牌進行認證。
配置構建觸發(fā)器,例如當 GitLab 上的特定分支有新的提交時觸發(fā)構建。配置構建步驟:
在 Jenkins 項目中添加構建步驟,例如構建、測試、部署等。您可以使用 Jenkins 的插件來執(zhí)行這些步驟,或者通過調用 shell 腳本來執(zhí)行相關操作。
環(huán)境安裝
linux上進行docker安裝有兩種方式:
- Docker自動化安裝
- Docker手動安裝
可以根據該文章的步驟進行安裝:http://www.dbjr.com.cn/server/339879ek2.htm
搭建Jenkins容器
- 拉取jenkins鏡像
docker pull jenkins/jenkins:lts-alpine-jdk17
- 生成jenkins容器
#!/bin/bash # 設置變量 PORT=8081 PROJECT_DIR="/opt/docker/jenkins" # 創(chuàng)建目錄結構 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容器中去構建docker或者打包鏡像的話需要進入容器內,安裝docker命令行工具,Docker CLI 提供了豐富的命令和選項,可以用于構建、運行、管理和監(jiān)視 Docker 容器。
docker exec -it jenkins /bin/sh
apk add docker-cli
通過shell腳本運行生成jenkisn容器
登陸網址,測試jenkins是否運行成功
配置Jenkins
- 首次登陸,根據密碼提示地址,找到初始密碼,修改jenkins密碼并登陸進行設置
- 安裝相應的插件
安裝插件
gitLab(代碼管理)
pipeline(流水線)(jenkins推薦安裝時自動安裝)
SSH(遠程登錄連接)
NodeJs(前端構建)
Role(jenkins用戶權限控制插件)
SonarQube(代碼檢測插件)
記錄job的歷史更新記錄插件(可找到歷史命令腳本)
在jenkins容器中安裝JDK、Maven、Node等環(huán)境(位置docker jenkins_home中)
jdk:jenkins docker 一般會自帶jdk版本(自帶的最方便)
jdk最好在docker容器中安裝openjdk使用,不會出現no found的情況
mavan:將maven的壓縮包解壓到相應位置
node:
- 進入jenkins對應容器中docker exec -it [對應容器id] bash
- 安裝nodejs , apk add --no-cache nodejs
- 再將需要的其他版本node的壓縮包解壓到相應位置 或者 可以在jenkins中選擇自動安裝node版本
注意: apk add --no-cache nodejs 這一步是必須的 否則構建前端可能會出現env: ‘node’: No such
file or directory的錯誤
配置JDK、Maven、Node環(huán)境
全局屬性配置
系統(tǒng)管理——>系統(tǒng)配置——>全局屬性
gitLab配置
SSH配置
在jenkins_home中加入私鑰文件(用于遠程訪問其他服務器等)
注意:首次訪問遠程服務器時,需要在jenkins的docker容器內 輸入命令ssh xxx.xxx.xxx.xxx 訪問其他服務器
授權成功后,jenkins才能無阻礙的訪問其他服務器,否則jenkins執(zhí)行腳本會訪問失敗
如果id_rsa 不行,那么就再加到 /root/.ssh/id_rsa 里面去
jenkins沒足夠權限訪問 就 chmod 600 ~/.ssh/id_rsa
被訪問的服務器需要填入公鑰
注意:若jenkins是docker運行,若id_rsa文件(ssh私鑰)不存在需要將id_rsa文件生成在容器內的jenkins_home目錄下,才會生效
在SSH Server中加入需要遠程連接的服務器,填寫完成后,可以點擊Test Configuration 查看是否成功
注意:遠程連接的服務器需要在該服務器的/root/.ssh/authorized_keys文件中加入公鑰
配置 全局工具配置
1. Maven 配置
2. JDK 安裝
3. git安裝
4. Maven安裝
5. NodeJs安裝
Role-based Authorization Strategy插件配置用戶權限
1.配置用戶權限流程
2.設置Global roles 全局角色設置 和 Item roles 項目設置
3.配置角色權限范圍
小結
可能遇見的問題:
1. 登陸初始密碼后報錯,該Jenkins實例似乎已離線。
解決方案:
原因一:升級站點的鏈接https://updates.jenkins.io/update-center.json默認是https
修改升級站點的鏈接
保留此離線頁面,重新開啟一個瀏覽器tab標簽頁
- 輸入jenkins登陸網址http://localhost:8080/pluginManager/advanced (自己的登陸地址+路徑/pluginManager/advanced )
- 進入該頁面最底下,找到【Update Site】,把其中的鏈接改成http,
http://updates.jenkins.io/update-center.json
,點擊Submit保存,Check now 能夠檢測當前URL是否能夠更新站點; - 提示jenkins,在重新啟動jenkins,已經可以重新連網,下載插件
重要:如果改完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在下載插件之前會檢查網絡鏈接,會去讀取配置文件的網址Jenkins_home/updates/default.json
修改default.json文件
- 不管是用本地運行war包的方式啟動的Jenkins,還是Docker運行的Jenkins,找到運行目錄下(Docker就是掛載出來的目錄)
- 一個叫updates目錄,修改里面的default.json文件,把第一個遇到的
www.google.com
,修改成www.baidu.com
- 重啟jenkins
注意:要先關閉jenkins后才能對該文件進行修改,否則修改保存無法生效
(docker 運行的jenkins 一定要掛載目錄(如:Jenkins_home) 否則容器關閉后無法進入容器內修改default.json文件)
原因三:Jenkins訪問連接被防火墻阻攔
關閉防火墻
- 檢查防火墻狀態(tài):
systemctl status firewalld.service
- 手動關閉防火墻:
systemctl stop firewalld.service
- 關閉防火墻開機自啟:
systemctl disable firewalld.service
原因四:Jenkins版本太老
- 重新拉取其他版本的jenkins鏡像,換一個可能就會成功,一般前面三個原因的不會出現,大概率的鏡像版本引起的。
- 例如:使用jenkins/jenkins:lts-alpine-jdk11 jenkins離線無法下載插件,換成jenkins/jenkins:lts-alpine-jdk17 就能正常運行
2. 前端npm構建找不到,env: ‘node’: No such file or directory
原因:出現問題是docker jenkins 里面沒有自動安裝node導致找不到這個Node命令
解決方案:手動安裝nodejs
# 進入jenkins對應容器中 # docker exec -it [對應容器id] bash # 安裝nodejs # apk add --no-cache nodejs # 檢查node # node -v
3. pipeline執(zhí)行過程中git參數的commit 版本選擇出現 版本無法顯示的問題
原因:原因未知
解決方案:
重新創(chuàng)建一個新的pipeline任務,可能解決該問題。
到此這篇關于Docker搭建Jenkins實現自動部署教程的文章就介紹到這了,更多相關Docker搭建Jenkins自動部署內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Docker自動化構建Automated Build實現過程圖解
這篇文章主要介紹了Docker自動化構建Automated Build實現過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-10-10Centos7安裝docker compse踩過的坑及解決方法
本文,我們介紹如何在centos7環(huán)境下安裝docker-compose, 記錄下安裝過程步驟以及遇到的問題還有解決辦法,感興趣的朋友參考下吧2018-01-01Docker NFS volume創(chuàng)建與使用方式
這篇文章主要介紹了Docker NFS volume創(chuàng)建與使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02Ubuntu24.04LTS在線安裝Docker引擎的詳細過程
本文介紹了在Ubuntu 24.04 LTS系統(tǒng)上安裝Docker引擎的步驟,包括卸載舊版本、設置Docker APT倉庫、安裝最新版或指定版本的Docker,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-11-11