【问题标题】:How to set up chroot for jenkins build?如何为詹金斯构建设置chroot?
【发布时间】:2015-08-08 03:21:12
【问题描述】:

我想在 chroot 中自动构建所有内容:

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

从这个线程看来,我在 Manage Jenkins -> Configure System 中的配置应该是:

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

我还将 jenkins 添加到 /etc/sudoers 文件中,如 issue 中所述。

谁能分享他们的配置? 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.

【问题讨论】:

    标签: ubuntu jenkins chroot


    【解决方案1】:

    如果适合提前准备一个 chroot(假设所有作业使用相同的配置),那么您可以在 SSH 从站上轻松实现您想要的,只需在从站上使用以下配置到 /etc/ssh/sshd_config :

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

    当 Jenkins 通过 SSH 登录到 slave 执行构建时,他将自动被扔进 chroot,而无需在构建魔法发生之前将 Jenkins 添加到 sudoers、创建 chroot 并安装依赖项。

    如果 Jenkins 总是在机器上的同一个 chroot 中,这是一个更简单的方法,更不用说更不容易出错了。

    【讨论】:

    • 好主意。但是,我的构建 chroot 还不稳定,并且希望每次随着它的发展都从头开始(并且我想确保我没有携带未知的工件。我想我可以有一个单独的工作来初始化 chroot,然后当那个完成后,使用另一个工作直接跳进去。
    猜你喜欢
    • 2019-05-03
    • 2020-03-22
    • 2020-07-04
    • 2016-07-16
    • 2014-07-18
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多