2017-08-30 6 views
0

Ich versuche, meine Pipeline-Tests innerhalb (oder gegen) eines Docker-Containers auszuführen, den ich habe. Ich habe ursprünglich eine Docker-Datei verwendet, um den Container zu erstellen, aber die Tests würden immer gegen den jenkins-Knoten laufen, der den Job ausführt. Ich habe meine jenkinsfile geändert, um etwas Standard zu verwenden, aber immer noch nicht das, was ich erwarte.Jenkins-Pipeline-Tests im Docker-Container ausführen

Was bin ich schließlich zu erreichen versuchen, ist:

  1. einen Docker Container Werfen Sie oben
  2. mein Quellcode
  3. Skript ausführen meine Python auf dem Behälter in den Behälter Kopieren

Ich habe 1 & 2 funktioniert, aber nicht 3. Für jetzt würde ich mich freuen, wenn ich nur Tests gegen einen Container ausführen könnte, weshalb ich die Jenkinsfile so modifiziert habe, dass sie einfacher ist.

Mein Jenkinsfile:

pipeline { 
    agent { 
     docker { image 'node:7-alpine' } 
    } 
    stages { 
     stage('Test') { 
      steps { 
       sh 'pwd' 
       sh 'ls -al' 
      } 
     } 
    } 
} 

Als ich docker run node:7-alpine pwd laufen, docker run node:7-alpine ls -al lokal, erhalte ich folgendes:

/ 

und

bin 
dev 
etc 
home 
lib 
linuxrc 
media 
mnt 
opt 
proc 
root 
run 
sbin 
srv 
sys 
tmp 
usr 
var 

Aber Jenkins erhalte ich:

[test_job] Running shell script 
+ pwd 
/srv/jenkins/workspace/test_job 

und

[test_job] Running shell script 
+ ls -al 
total 36 
drwxr-x--- 4 5003  5003   4096 Aug 29 20:44 . 
drwxr-xr-x 4 root  root   4096 Aug 29 20:44 .. 
drwxr-x--- 8 5003  5003   4096 Aug 29 20:44 .git 
-rw-r----- 1 5003  5003   1184 Aug 29 19:24 .gitignore 
-rw-r----- 1 5003  5003   802 Aug 29 19:47 Dockerfile 
-rw-r----- 1 5003  5003   247 Aug 29 20:44 Jenkinsfile 
-rw-r----- 1 5003  5003   417 Aug 29 20:24 OriginalJenkinsfile 
-rw-r----- 1 5003  5003   2534 Aug 29 19:24 README.md 
drwxr-x--- 5 5003  5003   4096 Aug 29 19:24 framework 

Antwort

0

Soweit ich weiß, dass diese Befehle das aktuelle Verzeichnis von jenkins in den Behälter und legt es als workdir montieren. Außerdem gibt es einen Fehler und Sie können das Verzeichnis innerhalb des Containers nicht wechseln.

Versuchen Sie ls/welche sollte Liste, was im Stammverzeichnis des Containers ist

+0

ich die Docker Pipeline-Plugin bin mit, ist mein Code tatsächlich das erste Beispiel hier erwähnt: https://jenkins.io/doc/book/pipeline/docker/- aber die Testschritte funktionieren nicht wie beschrieben. – cdm

+0

Schauen Sie sich meine bearbeitete Antwort an. Sie erwarten, dass das Stammverzeichnis des Andockcontainers ist. Aber Sie listen tatsächlich den Inhalt eines eingehängten Verzeichnisses auf. Versuche 'ls' – herm

Verwandte Themen