2017-02-16 2 views
0

Ich habe eine Dockerfile, die Jenkins Slave-Knoten mit dem Jenkins Swarm-Plugin spinnt. Ich habe ein Nicht-Root-Benutzer "Jenkins" Setup in diesem Bild. Es gibt nvm-Setup für den Benutzer jenkins. Ich versuche, dieses Docker-Image mit Serverspec zu testen, und ich finde keine Möglichkeit, einen Befehl als Nicht-Root-Benutzer in der Serverspezifikationsdatei auszuführen.Testen von Dockerfile, die auf Nicht-Root-Benutzer mit Serverspec läuft

Dies bestätigt, dass Benutzer jenkins installiert ist:

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

Aber ich kann nicht, diese Arbeit zu machen scheinen:

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

ich sogar so etwas wie dies versucht:

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

Suchen Sie nach Hilfe bei der Arbeit mit Serverspec. Jede Hilfe wird geschätzt.

+0

Was ist die Fehlermeldung? – BMW

+0

@BMW Wenn ich das "whoami" mache, erwarte ich "jenkins", aber ich bekomme die Wurzel zurück. Und in nvm --version erwarte ich "0.33.0", aber ich bekomme zurück "" –

Antwort

0

Dies löste es für mich. Wenn jemand, der diesen Beitrag liest, einen besseren Weg hat, lass es mich wissen.

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 
Verwandte Themen