我面臨同樣的問題,上面的帖子幫助我弄清楚我的環境配置中出現了什麼問題。但是,過了好一會兒,我理解這句話的邏輯:
Ok, so the way I've solved this problem was to mount a dir on the container from the slave docker container, then using NFS (Instructions are shown below) I've mounted the that slave docker container onto Jenkins master.
所以我決定了澄清,並寫一些更多的解釋例子...
這是我的工作環境:
- 在Ubuntu 16.04服務器上運行的Jenkins master,IP:192.168.1.111
- 在Ubuntu 16.04服務器上運行的Jenkins Slave Build Server,IP:192.168.1。112
- 啓用Docker的Build Server(用於啓動Docker容器),在Ubuntu 16.04服務器上運行,IP:192.168.1.114。
問題聲明:在Docker容器上運行項目時,「Workspace」在Jenkins界面下不可用。
目標:能夠瀏覽Jenkins界面以及Jenkins主/從和碼頭服務器主機上的「工作區」。
好了,我的問題開始與不同的問題,這使我找到這篇文章,弄清楚什麼是錯在我的環境配置...
讓我們假設你已經正確配置詹金斯工作詹金斯/泊塢環境Docker插件。對於第一次運行,我沒有在Jenkins Docker插件的「容器設置...」選項下進行配置。一切順利 - 工作競爭成功,顯然我無法瀏覽作業工作空間,因爲Jenkins Docker Plugin設計在完成工作後破壞了碼頭集裝箱。到目前爲止這麼好......我需要保存碼頭工作空間以便能夠在作業失敗時查看文件或修復一些問題。對於使用「卷」從主持人在做容器的容器/路徑所以我已經映射的主機/路徑「容器設置...」,在詹金斯泊塢窗插件選項:
我已經運行相同作業再次和它詹金斯與以下錯誤消息失敗:
花費一些時間來學習詹金斯泊塢窗插件如何工作之後,我想通了,上述錯誤的原因是碼頭工人在主機服務器上錯誤的權限( 192.168.1.114)在自動創建的「workspace」文件夾中LY:
所以,從這裏我們必須分配「其他」組寫權限到該文件夾。將[email protected]用戶設置爲workspace文件夾的所有者是不夠的,因爲我們需要[email protected]用戶能夠在192.168.1.114服務器的workspace文件夾下創建子文件夾。 (在我的情況下,我有Jenkins主服務器上的jenkins用戶 - 192.168.1.111和jenkins用戶以及Docker主機服務器 - 192.168.1.114)。 爲了幫助解釋所有的分組和字母的意思是,看看這個特寫鏡頭的方式在上面的截圖:
ssh [email protected]
cd /home/jenkins
sudo chmod o+w workspace
現在一切重新正常工作:詹金斯旋轉起來泊塢窗容器,當搬運工運行,工作區在詹金斯接口:
但它的作業完成後消失...
有些可以說,這是沒有問題的這裏,從集裝箱,現在保存在泊塢窗主機服務器上的工作空間目錄下的所有文件(我們下詹金斯泊塢窗插件的設置映射的文件夾)...這是對的!所有文件都在這裏: /home/jenkins/workspace/"JobName"/
Docker主機服務器(192.168.1。114) 但是在某些情況下,人們希望能夠直接從Jenkins界面瀏覽作業工作空間...
因此,從這裏我已經按照Fadi的後續鏈接 - 如何設置NFS共享。
提醒,我們的目標是:能夠瀏覽搬運工的工作直接從工作區詹金斯接口... 我做搬運工主機服務器(192.168.1.114)上什麼:
1. sudo apt-get install nfs-kernel-server nfs-common
2. sudo nano /etc/exports
# Share docker slave containers workspace with Jenkins master
/home/jenkins/workspace 192.168.1.111(rw,sync,no_subtree_check,no_root_squash)
3. sudo exportfs -ra
4. sudo /etc/init.d/nfs-kernel-server restart
這將允許裝載碼頭工人主機服務器(192.168.1.114)/家庭/詹金斯/工作區詹金斯主服務器(192.168.1.111)
在詹金斯主服務器上的文件夾:
1. sudo apt-get install nfs-client nfs-common
2. sudo mount -o soft,intr,rsize=8192,wsize=8192 192.168.1.114:/home/jenkins/workspace/ /home/jenkins/workspace/<JobName/
現在,192.168.1.114:/home/jenkins/workspace文件夾已安裝,並且在Jenkins master上的/ home/jenkins/workspace /「JobName」/文件夾下可見。
到目前爲止這麼好...我再次運行這個工作並面對相同的行爲:當docker仍在運行時 - 用戶可以從Jenkins界面瀏覽工作區,但是當作業完成時,我會得到相同的錯誤。沒有工作區「。儘管我現在可以瀏覽詹金斯主服務器本身的作業文件,但它仍然不是我們所期望的......
順便說一句,如果你需要卸載詹金斯主服務器,使用在工作區目錄下面的命令:
sudo umount -f -l /home/jenkins/workspace/<<mountpoint>>
瞭解更多關於NFS:
How to configure an NFS server and mount NFS shares on Ubuntu 14.10
此問題的解決辦法是在詹金斯安裝Multijob Plugin,新作業添加到詹金斯將使用多椎插件選項:
在我的情況,我也轉移所有碼頭相關的作業,以便在奴隸生成服務器(192.168.1.112)上運行。因此,在此服務器上我已經安裝了NFS相關工作人員,正是因爲詹金斯在主服務器上,也可以添加多克主機服務器上的一些工作人員(192.168.1.114):
ssh [email protected]
sudo nano edit /etc/exports
# Share docker slave containers workspace with build-server
/home/jenkins/workspace 192.168.1.112(rw,sync,no_subtree_check,no_root_squash)
在另外的詹金斯從(192.168.1.112 )服務器我已經跑了以下內容:
1. sudo apt-get install nfs-client nfs-common
2. sudo mount -o soft,intr,rsize=8192,wsize=8192 192.168.1.114:/home/jenkins/workspace/ /home/jenkins/workspace/<JobName/
後上述配置是這樣做,我對詹金斯跑了新的工作,終於得到了我想要的:我可以直接從詹金斯接口使用工作區選項。
對不起,長的帖子...我希望這是對你有幫助。
注意:在遠程FS根目錄中寫入的地方,沒有工作空間。在我的情況下,我剛創建了另一個名爲workspace的文件夾。 – Fadi