0

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

这确认用户 jenkins 已安装:

  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 进行这项工作时寻求帮助。任何帮助将不胜感激。

4

1 回答 1

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
于 2017-02-16T02:30:27.710 回答