Тестирование 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