2015-08-08 104 views
3

我想要自動構建所有在chroot:如何爲jenkins構建chroot?

sudo chroot mychroot 
apt-get install git build-essential make -y 
git clone myrepo 
cd myrepo/src 
make 

從這個線程,似乎我在管理詹金斯配置 - >配置系統應該是:

Name: trusty 
Tool: pbuilder 
Advanced configuration: checked 
Additional arguments: --distribution trusty --debootstrapopts --variant=buildd 

Shell command: 
Repositories: 
Name: universe 
Repository URL: deb http://us.archive.ubuntu.com/ubuntu/ trusty universe 
Keyfile URL: http://archive.ubuntu.com/ubuntu/project/ubuntu-archive-keyring.gpg 

我還添加了詹金斯成在issue中討論的/etc/sudoers文件。

任何人都可以分享他們的配置嗎?該wiki是偉大的,但我覺得有點欠缺:

什麼是described here正是我想要的:

Creates a new debootstrap-based chroot. 
Installs build-essential, mercurial, etc. 
Fetches the shource. 
Runs make. 
Copies the files produced in ./binary-out/ to a safe location. 
Cleans up. 

回答

2

它是否適合提前準備一個chroot(比如所有作業使用相同的配置) ,那麼你要可以很容易地在一個SSH從使用以下配置,以在從屬的/ etc/SSH/sshd_config中達到什麼:

Match User jenkins 
     ChrootDirectory /var/chroot/ 
     X11Forwarding no 
     AllowTcpForwarding no 

當詹金斯登錄到從通過SSH進行構建,他會自動拋出在不需要將Jenkins添加到sudoers的情況下創建chroot,創建​​chroot並在構建魔法發生之前安裝依賴關係。

在Jenkins總是與計算機上的chroot相同的情況下,這更簡單一些,更不用說容易出錯的路徑了。

+0

好主意。然而,我的構建chroot並不穩定,而且隨着它的發展每次都希望從頭開始(並且我想確保我沒有攜帶未知的工件,我想我可以有一個單獨的工作來初始化chroot,然後當那一個完成時,使用其他工作直接跳入它。 – tarabyte