2017-02-16 187 views
0

我有一个Dockerfile,它使用Jenkins Swarm插件来启动Jenkins从属节点。我在这张图片中有一个非root用户“jenkins”设置。 jenkins用户有nvm设置。我正在尝试使用serverspec测试这个Docker镜像,我似乎无法找到一种方法在服务器spec文件中以非root用户身份运行命令。测试Dockerfile使用Serverspec在非root用户上运行

这确认了用户詹金斯安装:

describe user('jenkins') do 
    it { should exist } 
    it { should belong_to_primary_group 'jenkins' } 
    end 

但我似乎无法使这项工作:

describe command('whoami') do 
    let(:sudo_options) { '-u jenkins -i' } 
    its(:stdout) { should match 'jenkins' } 
    end 

我甚至试过这样的事情:

describe command('sudo -u jenkins nvm --version') do 
    its(:stdout) { should match(/0.33.0/) } 
    end 

寻找使用serverspec进行此项工作的帮助。任何帮助将不胜感激。

+0

什么是错误信息? – BMW

+0

@BMW当我做“whoami”我期待“詹金斯”,但我得到根。并在nvm - 版本我期望“0.33.0”,但我回来“” –

回答

0

这解决了它对我来说。如果有人阅读这篇文章有更好的方式做这个请让我知道。

describe command("node --version") do 
    its(:stdout) { should match(/5.10.0/) } 
    end 

    describe command("su - jenkins -c 'node --version'") do 
    its(:stdout) { should match(/6.9.5/) } 
    end 

    describe command("su - jenkins -c 'nvm --version'") do 
    its(:stdout) { should match(/0.33.0/) } 
    end 

    describe command("su - jenkins -c 'nvm use 4.7.3'") do 
    its(:stdout) { should match(/4.7.3/) } 
    end 
相关问题