我正在使用Jenkins在一些基础设施项目上实现持续交付。 ATM Master-Slave Jenkins模型用于工作总是由一些奴隶而不是主人建造的,我的意图是使用LXC建立和运行测试厨房和莱布尼兹测试。所有的要求都匹配vagrant-lxc,lxc box,leibniz和test-kitchen配置,一切正常在我的电脑或我的团队成员的任何其他工作正常但是当谈到通过Jenkins的Master-Slave运行Job时似乎有环境方面的一些问题,详见:
1-当我作为构建步骤"which lxc-create"
的一部分运行时,它可以工作并显示/usr/bin/lxc-create
,但它应该
2-运行时kitchen test
显示失败:
+ kitchen test
-----> Starting Kitchen (v1.1.1)
-----> Cleaning up any prior instances of <default-ubuntu-1204>
-----> Destroying <default-ubuntu-1204>...
Finished destroying <default-ubuntu-1204> (0m0.00s).
-----> Testing <default-ubuntu-1204>
-----> Creating <default-ubuntu-1204>...
>>>>>> ------Exception-------
>>>>>> Class: Kitchen::ActionFailed
>>>>>> Message: Failed to complete #create action: [Expected process to exit with [0], but received '1'
---- Begin output of vagrant up --no-provision --provider=lxc ----
STDOUT:
STDERR: The `lxc` package does not seem to be installed or is not accessible on the PATH.
---- End output of vagrant up --no-provision --provider=lxc ----
Ran vagrant up --no-provision --provider=lxc returned 1]
>>>>>> ----------------------
>>>>>> Please see .kitchen/logs/kitchen.log for more details
似乎有些环境变量丢失或有线,重要的是说,sshing到奴隶并手动构建它工作正常所以不是一个设置问题,但主从环境传输问题或我遗漏了一些关键在配置上。任何人都可以提供一些帮助吗?
lxc版本:1.0.0
vagrant-lxc:0.8.0
詹金斯:1.5.49更新1: 这是我的厨房配置:
---
driver:
name: vagrant
require_chef_omnibus: false
require_chef_berkshelf: true
customize:
memory: 1024
provisioner:
name: chef_solo
platforms:
- name: ubuntu-12.04
driver:
box: "ubuntu-12.04"
box_url: "http://dl.company.com/ubuntu1204-lxc-amd64.box"
provider: lxc
suites:
....
答案 0 :(得分:1)
解决了这个问题! Jenkins提出的错误消息是错误的,我将Jenkins用户添加到了NOPASSWORD的sudoers中,它运行得很好。我想通了,因为在我的个人电脑上创建一个容器总是要求输入密码。