Тестирование Dockerfile, который запускается не пользователем root с использованием Serverspec

У меня есть Dockerfile, который раскручивает подчиненные узлы Jenkins с помощью плагина Jenkins Swarm. У меня есть не-root пользовательские настройки "jenkins" в этом образе. Для пользователя jenkins есть настройка nvm. Я пытаюсь протестировать этот образ 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

Нужна помощь в создании этой работы с serverpec. Любая помощь будет оценена.

1 ответ

Это решило это для меня. Если у кого-то, кто читает этот пост, есть лучший способ сделать это, пожалуйста, дайте мне знать.

  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
Другие вопросы по тегам