程式猿開發任務本來就比較繁鎖,如果搭建各種開源的軟體還需要搜尋這樣那樣的設定,那基本上兩鬢斑白的頭髮基本上都快脫光了,如何找女朋友呢?難道一直和五姑娘為伴?所以自己當第一個吃螃蟹的人摸索了一些套路,編寫一些簡易的 shell 指令碼幫我們快速的搭建伺服器,猿們只要按著套路「一步一步」的操作,基本上都可以快速部署服務,也有《Jenkins自動安裝指令碼》,大家根據自己的實際情況進行操作。
mac os:Monterey
mac version:12.4 (21F79)
mac type: MacBook Air (M1, 2020), Apple M1
docker desktop version:v4.10.0
docker version:v20.10.17
docker-compose version: v1.29.2
# 如果你比較懶可以使用最後的「Jenkins自動安裝指令碼」,mac電腦通用
https://hub.docker.com/r/jenkins/jenkins/tags
https://gitee.com/xiaoyaojiugui/technical/blob/master/docker/foundations/cicd/jenkins
# 跳轉到指定資料夾,並執行如下命令:
sh ./jenkins.sh
---------------函數開始執行---------------
1.1、檢查必要軟體,跳過此步驟,目錄已存在[/Users/jason.zhuo/data/docker/apps/jdk-17]
1.2、檢查必要軟體,跳過此步驟,目錄已存在[/Users/jason.zhuo/data/docker/apps/apache-maven-3.8.6]
1.3、檢查必要軟體,跳過此步驟,檔案已存在[/Users/jason.zhuo/codes/leisure/doc/technical/docker/foundations/cicd/jenkins/software/jenkins.war]
2.1、執行建立容器操作,跳過此步驟,映象已存在[jenkins/jenkins:latest]
2.2、執行建立容器操作,建立目錄並授權,執行命令:sudo mkdir -p -v /Users/jason.zhuo/data/docker/volumes/jenkins/{jenkins-home,conf} && sudo chown -R jason.zhuo /Users/jason.zhuo/data/docker/volumes/jenkins
mkdir: created directory '/Users/jason.zhuo/data/docker/volumes/jenkins'
mkdir: created directory '/Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home'
mkdir: created directory '/Users/jason.zhuo/data/docker/volumes/jenkins/conf'
2.3、執行建立容器操作,執行命令:docker run -d -p 39090:8080 -p 50000:50000 -v /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home:/var/jenkins_home --name jenkins jenkins/jenkins:latest
2.4.1、執行建立容器操作,根據伺服器效能調整時間,預設休息 10 秒,--> Tue 20 Sep 2022 11:12:41 AM CST <--
2.4.2、執行建立容器操作,根據伺服器效能調整時間,預設休息 10 秒,--> Tue 20 Sep 2022 11:12:51 AM CST <--
2.5.1、執行建立容器操作,修改組態檔[/Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/hudson.model.UpdateCenter.xml]
2.5.2、執行建立容器操作,檢視組態檔,執行命令:cat /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/hudson.model.UpdateCenter.xml | grep 'url'
2.5.3、執行建立容器操作,修改組態檔[/Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/updates/default.json]
sed -i "" 's/https:\/\/updates.jenkins.io\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/updates/default.json && sed -i "" 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/updates/default.json
2.5.5、執行建立容器操作,拷貝設定[/etc/profile]到本地並設定環境變數,執行命令:sudo docker cp $(docker ps -a | grep jenkins | awk '{print $1}'):/etc/profile /Users/jason.zhuo/data/docker/volumes/jenkins/conf/
2.6.1、執行重建容器操作,其容器為[jenkins/jenkins:latest],執行命令: docker run -d -p 39090:8080 -p 50000:50000 --privileged=true -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home:/var/jenkins_home -v /Users/jason.zhuo/data/docker/volumes/jenkins/conf/profile:/etc/profile -v /Users/jason.zhuo/data/docker/volumes/jenkins/conf/.bashrc:/root/.bashrc -v /Users/jason.zhuo/data/docker/apps/apache-maven-3.8.6:/usr/local/apps/apache-maven-3.8.6 -v /Users/jason.zhuo/data/docker/apps/jdk-17:/usr/local/apps/jdk-17 --name jenkins jenkins/jenkins:latest
2.6.2、複製Jenkins的最新war包到指定目錄,執行命令:docker cp ./software/jenkins.war $(docker ps -a | grep jenkins | awk '{print $1}'):/usr/share/jenkins/jenkins.war
2.7.1、檢視容器狀態,執行命令:docker inspect --format='{{.State.Status}}' jenkins
2.7.2、檢視容器狀態,[exited],啟動命令:docker start jenkins
jenkins
2.7.3、檢視容器詳情,執行命令:docker ps | grep jenkins/jenkins:latest
3.1、其他待執行命令,登入容器其命令為:docker exec -it -u root jenkins /bin/bash
3.2、其他待執行命令,複製最新war包其命令為:docker cp ./jenkins.war $(docker ps -a | grep jenkins | awk '{print $1}'):/usr/share/jenkins/jenkins.war
---------------函數執行完畢---------------
注意:此處休息10秒,是因為剛啟動該檔案沒有初始完成(hudson.model.UpdateCenter.xml)
1、檢查目標目錄,待執行指令碼的路徑為[/Users/jason.zhuo/code/leisure/doc/technical/docker/foundations/cicd/software],包括如下檔案:
2、檢查目標目錄,跳過此步驟,資料夾已存在[/Users/jason.zhuo/data/docker/apps]
3、檢查Maven軟體,其檔名[apache-maven-3.8.6],壓縮包名[apache-maven-3.8.6-bin.tar.gz]
4、檢查Maven軟體,解壓壓縮包,執行命令:tar -zxf apache-maven-3.8.6-bin.tar.gz
5、檢查Maven軟體,拷貝到指定目錄,執行命令:sudo cp -r apache-maven-3.8.6 /Users/jason.zhuo/data/docker/apps
6、檢查JDK軟體,其檔名[jdk-17],壓縮包[jdk-17_linux-aarch64_bin.tar.gz]
7、檢查JDK軟體,解壓壓縮包,執行命令:tar -zxf jdk-17_linux-aarch64_bin.tar.gz
8、檢查JDK軟體,重新命名檔案,執行命令:sudo mv jdk-17.0.4.1 jdk-17
9、檢查JDK軟體,拷貝到指定目錄,執行命令:sudo cp -r jdk-17 /Users/jason.zhuo/data/docker/apps
10、檢視目標目錄內容,執行命令:ls /Users/jason.zhuo/data/docker/apps
http://localhost:39090/login
docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
注意:此處不安裝任何外掛,因為Jenkins的官方外掛下載地址速度非常慢。
1、獲取密碼,登入即可;
2、「選擇外掛來安裝」而非社群推薦的外掛 --> 選擇「無」 --> 然後點選「安裝」即可;
3、建立第一個管理員賬戶,只有建立了新賬戶併成功登入後,才能執行如下《步驟1.6》
注意:執行完命令後請重啟!執行完命令後請重啟!執行完命令後請重啟!
1、Jenkins的官方外掛下載地址速度非常慢,需要替換成國內外掛地址;
2、手動更新設定,複製《1.2.1 安裝程式詳情》中的《2.5.3命令》,在終端執行即可;
3、執行完以下命令,需要重啟 jenkins 才能生效;
# 解決開啟登入介面時一直在轉圈圈,程式自動更新 update-center.json
sed -i "" 's/https:\/\/updates.jenkins.io\/update-center.json/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins\/updates\/update-center.json/g' /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-data/hudson.model.UpdateCenter.xml
# 替換成國內外掛地址,手動更新 default.json
# 其實有很多朋友會問,為什麼更新 default.json 不放在 shell 指令碼中操作呢?之前試過在 shell 指令碼中更新,但只要沒有建立第一個管理員賬戶,那 default.json 設定就會被還原成官方設定,請執行命令;
sed -i "" 's/https:\/\/updates.jenkins.io\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/updates/default.json && \
sed -i "" 's/https:\/\/www.google.com/https:\/\/www.baidu.com/g' /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/updates/default.json
1、以root使用者登入容器
docker exec -it -u root jenkins /bin/bash
2、跳轉到指定目錄
cd /usr/share/jenkins
3、讓環境變數生效
source /etc/profile
# 1、如果容器內沒有wget命令,則安裝應用:
sudo apt-get update && apt-get install wget
# 2、下載最新的映象
wget http://mirrors.jenkins.io/war/latest/jenkins.war
# 1、移除舊war包
rm -rf jenkins.war
# 2、重命令新war包
mv jenkins.war.1 jenkins.war
docker restart jenkins
注意:如果安裝外掛時失敗,且有提示要更新 Jenkins 版本,操作請按《步驟1.7》
Jenkins -> Manage Jenkins -> Manage Plugins,點選Available
序號 | 外掛 | 是否安裝 |
---|---|---|
1 | Folders | yes |
2 | OWASP Markup Formatter | |
3 | Build Timeout | yes |
4 | Credentials Binding | |
5 | Timestamper | yes |
6 | Workspace Cleanup | yes |
7 | Ant | yes |
8 | Maven Integration | yes |
9 | GitHub Branch Source | yes |
10 | Git | yes |
11 | Pipeline | yes |
12 | Pipeline: Groovy | yes |
13 | Pipeline: Stage View | yes |
14 | Pipeline: Declarative | yes |
15 | Pipeline: Basic Steps | yes |
16 | SSH Build Agents | yes |
17 | Publish Over SSH | yes |
18 | Matrix Authorization Strategy | |
19 | Parameterized Trigger | yes |
20 | Email Extension | yes |
21 | JUnit | yes |
22 | Localization: Chinese (Simplified) | yes |
開啟登入介面時,一直停留在「Please wait while Jenkins is restarting ...」
解決方案:請參考《步驟1.6》
Jenkins的官方外掛下載地址速度非常慢,需要替換成國內外掛地址
解決方案:請參考《步驟1.6》
Docker 中的 Jenkins 重啟時,「/etc/profile」環境變數失效
解決方案:
1.在/root/.bashrc檔案最下面新增如下指令:source /etc/profile
2.儲存檔案,然後執行:source /root/.bashrc
備註:此步驟請慎用,執行指令碼時後面加任意引數即可解除安裝
# 引數1:即刪除容器
sh ./jenkins.sh del1
# 引數1:刪除容器和資料夾
sh ./jenkins.sh delete
# 引數2:即刪除映象,刪除後需要重新下載映象才能初始化容器
sh ./jenkins.sh del1 del2
---------------函數開始執行---------------
1.1、執行容器刪除操作,跳過此步驟,檢查必要軟體
2.1、執行容器刪除操作,跳過此步驟,刪除原映象[jenkins/jenkins:latest]
2.2、執行容器刪除操作,跳過此步驟,建立目錄[/Users/jason.zhuo/data/docker/volumes/jenkins]
2.3、執行容器刪除操作,跳過此步驟,第一次初始化容器[jenkins]
2.4、執行容器刪除操作,跳過此步驟,休眠 120 秒
2.5、執行容器刪除操作,跳過此步驟,修改組態檔
2.6、執行容器刪除操作,執行命令:docker stop jenkins && docker rm jenkins
2.6、執行容器刪除操作,成功刪除容器[jenkins]
2.7、執行容器刪除操作,跳過此步驟,第二次初始化容器[jenkins]
2.8、執行容器刪除操作,跳過此步驟,檢查容器狀態
2.9.1、執行容器刪除操作,刪除資料夾,執行命令:sudo rm -rf /Users/jason.zhuo/data/docker/volumes/jenkins
2.9.2、執行容器刪除操作,成功刪除資料夾[/Users/jason.zhuo/data/docker/volumes/jenkins]
---------------函數執行完畢---------------
自動化指令碼安裝完成後,原生的 Jenkins 基本上就可以隨便玩,文章如有不對之處請留言,會及時修正,謝謝閱讀!!
所有文章均為本人原創,本人寫作的目的就是想幫助對技術有需要的人,所以歡迎同行轉載本站文章,但是,希望您註明來源,並留下原文連結地址,這是對文章作者的尊重,也是對知識的尊重。