Le contexte :
Je suivais Télécharger et exécuter Jenkins dans Docker pour mettre en place Jenkins
Serveur. Le paramètre suivant a été utilisé pour exécuter Docker
.
docker run \
-u root \
--rm \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean
La construction se déroule avec succès, cependant, quand il s'agit de Integration Test
scène, un MySQL
est nécessaire.
Le plan est Utilisation de plusieurs conteneurs alors que mon Jenkinsfile
est le suivant :
pipeline {
agent {
docker {
image 'maven:3-alpine'
args '-v /root/.m2:/root/.m2'
}
}
stages {
stage('Build') {
when {
changeRequest()
}
steps {
sh 'mvn -B -DskipTests clean package'
}
}
stage('Test') {
agent {
docker {
image 'mysql/mysql-server'
args '--name some-mysql -e MYSQL_ROOT_PASSWORD=password -d'}
}
steps {
sh 'mvn test -DforkCount=0'
sh '''
docker exec some-mysql sh -c 'exec mysql < ./db/dump.sql
'''
}
post {
always {
junit 'target/surefire-reports/*.xml'
}
}
}
}
}
Le site ./db/dump.sql
est dans le même dépôt git avec Jenkinsfile
sur db
sous-répertoire.
Problème :
[workspace@2] Running shell script
+ docker inspect -f . mysql/mysql-server /var/jenkins_home/jobs/myproject/branches/master/workspace@2@tmp/durable-77d559d6/script.sh: line 1: docker: not found
[Pipeline] sh
[workspace@2] Running shell script
+ docker pull mysql/mysql-server /var/jenkins_home/jobs/myproject/branches/master/workspace@2@tmp/durable-21da0ff2/script.sh: ... line 1: docker: not found
ERROR: script returned exit code 127
Finished: FAILURE
Puisque vous vous exécutez en tant que root, le privilège ne devrait pas être le problème, n'est-ce pas ? Utilisation de Docker avec Pipeline a proposé plusieurs solutions, une autre solution serait-elle beaucoup plus facile à mettre en place le Integration Test
l'environnement ?