2017-02-16 16 views
0

Jenkins Swarm 플러그인을 사용하여 Jenkins 종속 노드를 회전시키는 Dockerfile이 있습니다. 이 이미지에는 비 루트 사용자 "젠킨스"설정이 있습니다. jenkins 사용자를위한 nvm 설정이 있습니다. serverspec을 사용하여이 Docker 이미지를 테스트하려고하는데 서버 사양 파일에서 루트가 아닌 사용자로 명령을 실행하는 방법을 찾지 못하는 것 같습니다.Serverspec을 사용하여 비 루트 사용자에서 실행되는 Dockerfile을 검사합니다.

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

그러나 나는이 작업 할 수없는 것 :

사용자 젠킨스가 설치되어 있는지 확인

describe command('sudo -u jenkins nvm --version') do 
    its(:stdout) { should match(/0.33.0/) } 
    end 
: 심지어 이런 식으로 뭔가를 시도

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

서버 스펙으로이 작업을 수행하는 데 필요한 도움말을 찾으십시오. 어떤 도움을 주시면 감사하겠습니다.

+0

무엇이 오류 메시지입니까? – BMW

+0

@BMW "whoami"를 할 때 나는 "젠킨스"를 원하지만 나는 뿌리를 찾는다. 그리고 nvm --version에서 "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