前面做了在ubuntu中安裝jenkins+docker實現自動部署,但是得安裝jdk8+tomcat8環境,比較麻煩,因此本文記錄如何將jenkins直接裝在dockers內並且實現遠程觸發功能。 docker的安裝不做闡述,詳見 https://www.cnblogs.com/dhcnblog/ ...
前面做了在ubuntu中安裝jenkins+docker實現自動部署,但是得安裝jdk8+tomcat8環境,比較麻煩,因此本文記錄如何將jenkins直接裝在dockers內並且實現遠程觸發功能。
docker的安裝不做闡述,詳見
https://www.cnblogs.com/dhcnblog/p/11291709.html
安裝docker內的jenkins:
1、直接登陸jenkins官網查看最新的docker pull命令
https://jenkins.io/zh/download/
2、用docker命令拉取jenkins鏡像
sudo docker pull jenkins/jenkins:lts
3、配置宿主機映射到容器的目錄,之後jenkins的一些配置文件都將會存儲到該目錄下,這個目錄可以自己定,但是我建議遵守我這樣的規範,便於日後查找和管理
sudo mkdir /home/jenkins_home # 宿主機上創建jenkins_home目錄 sudo chown -R 1000:1000 /home/jenkins_home #設置該目錄的所有者和所屬的組
4、啟動jenkins鏡像,執行如下命令,本人用的vmware虛擬機直接複製粘貼會直接按行執行 這樣會報錯。因此用工具連接上虛擬機執行如下命令(工具用的:)
sudo docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -u root \ -v /home/jenkins_home:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker \ -v /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 \ -v /opt:/opt \ -v /etc/timezone:/etc/timezone jenkins/jenkins:lts
命令解析:
-d 表示以後臺模式運行 --name 為容器定義一個名字(後面可以代替容器id使用) -p 表示映射容器的埠到宿主機的埠 -v 表示映射宿主機的目錄到容器的目錄 -u root 使用root用戶運行,避免後面出現的一些執行許可權問題 -v /home/jenkins_home:/var/jenkins_home 映射jenkins_home,將數據存儲到宿主機,這樣配置就不會隨容器丟失 -v /var/run/docker.sock:/var/run/docker.sock 與 -v /usr/bin/docker:/usr/bin/docker 把宿主機docker 映射到容器內,可以直接在容器內使用宿主機docker -v /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 \ 容器內docker運行需要的庫文件 -v /opt:/opt \ 自主安裝的一些運行時軟體(如java/maven/git...) -v /etc/timezone:/etc/timezone 映射時區文件,保證容器的時區和宿主機相同(官網的jenkins容器時區不是中國的時區) 最後的jenkins/jenkins:lts是要啟動的鏡像
5、接下來就可以訪問jenkins了,第一次訪問需要輸入初始密碼。命令如下,然後需要安裝基本插件選擇第一個就好了-->創建用戶,就可以進入jenkins構建項目了。
sudo cat /home/jenkins_home/secrets/initialAdminPassword
註意:構建項目的時候,shell語句中不可以有“sudo”命令,因為jenkins啟動直接在docker容器中,我們對docker的命令做了映射使jenkins可以直接使用docker命令,但是,容器中無法識別sudo命令,具體原因有待詳查。這一點和直接裝在宿主機中不同,也許裝在宿主 機中的也可以設置,但是沒有細做考究。
使用本地jenkins遠程觸發伺服器上的jenkins:
可以通過好幾種方式來觸發,本人用的在遠程機上配置訪問用戶的方式。
1、配置登陸用戶,生成APIToken
進入配置頁方法:jenkins首頁-->系統管理-->管理用戶-->編輯當前用戶(也可以創建新用戶,創建好後得推出當前用戶用心用戶登陸才能看見token)-->添加新token,註意一次生成後只能顯示一次,一定牢記。不然就得重新生成
2、給需要遠程觸發的項目添加身份令牌
在項目配置中的 構建觸發器中 勾選 觸發遠程構建-->自己填寫身份令牌
3、最後回到本地的項目配置中觸發遠程的shell語句
curl -X POST http://dh:[email protected]:8090/job/dhtest/build?token=dhtest441358090
4、保存後立即構建、觸發成功
本地
遠程:
參考文章:
jenkins安裝:https://www.jianshu.com/p/9018cfa3654b
jenkins遠程觸發:https://blog.csdn.net/m0_37904728/article/details/82790390