鏡像準備
Docker run -u root -d -p 8024:8080 -p 50000:50000
-v /data/jenkinsData:/var/jenkins_home
-v /var/run/docker.sock:/var/run/docker.sock
-v /etc/localtime:/etc/localtime
--name jenkins
jenkinsci/blueocean
運行Docker中的Jenkins
# 這會將工作區存儲在/ var / jenkins_home中。所有Jenkins數據都存在于那里 - 包括插件和配置。您可能希望將其設為持久卷(推薦):
docker run -d -p 8080:8080 -p 50000:50000 -v /your/home:/var/jenkins_home jenkins
# 這會將jenkins數據存儲`/your/home`在主機上。確保`/your/home`容器中的jenkins用戶可以訪問它(jenkins user-uid 1000)或使用`-u some_other_user`參數`docker run`。
# 您還可以使用卷容器:
docker run -d --name myjenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins_home jenkins
報錯:
touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
需要修改下目錄權限, 因為當映射本地數據卷時,/home/docker/jenkins目錄的擁有者為root用戶,而容器中jenkins user的uid為1000
sudo chown -R 1000:1000 /home/docker/jenkins
jenkins系統時間不正確解決方案
問題:安裝完jenkins后發現時區不對
解決:打開jenkins的【系統管理】---> 【腳本命令行】,在命令框中輸入一下命令【時間時區設為 亞洲上海】:
System.setProperty('org.Apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')
多任務串行運行
安裝 Multijob 插件
參數化構建
- 字符參數 -> params:GIT_BRANCH_FRONT defineValue:dev
- MultiJob Phase -> pahase jobs -> Add Parameters -> Predefined parameters -> GIT_BRANCH=origin/${GIT_BRANCH_FRONT}
多用戶權限
安裝 Role-Based Strategy 插件
免密發送文件
每次登錄遠程主機都需要輸入密碼是很不方便的,如果想要省去這一步驟,可以利用密鑰對進行連接,還可以提高安全性。
在本機生成密鑰對
- 使用ssh-keygen命令生成密鑰對:
docker exec -it <容器ID> bash
ssh-keygen -t rsa
然后根據提示一步步的按enter鍵即可(其中有一個提示是要求設置私鑰口令passphrase,不設置則為空,這里看心情吧,如果不放心私鑰的安全可以設置一下),執行結束以后會在 /home/當前用戶 目錄下生成一個 .ssh 文件夾,其中包含私鑰文件 id_rsa 和公鑰文件 id_rsa.pub。
- 將公鑰復制到遠程主機中
使用ssh-copy-id命令將公鑰復制到遠程主機。ssh-copy-id會將公鑰寫到遠程主機的 ~/ .ssh/authorized_key 文件中
ssh-copy-id root@192.168.0.1
經過以上兩個步驟,以后再登錄這個遠程主機就不用再輸入密碼了。
參數化構建 Git Parameter
選擇分支構建
使用參數化構建的時候,選擇分支的時候一運行卻解析不出來,搜了很久都沒搜到,結果我瞎點結果誤打誤撞成功了,是因為最下面的Pipeline里的 Lightweight checkout(輕量級檢出) 一定不要勾選 ,因為勾選了之后它不會解析參數化構建的參數