Мой экземпляр Jenkins запускается из образа jenkins / jenkins docker. При установке docker -in- docker через настройку тома, например: -v /var/run/docker.sock:/var/run/docker.sock
, этот экземпляр может запускать контейнеры. Я также установил docker -compose в dockerfile, который создан из образа jenkins / jenkins, как описано в руководстве по установке docker -compose.
Я столкнулся с проблемой при использовании docker - Компоновка и тома в сценариях Jenkinsfile:
version: "3"
services:
newman_tests:
image: postman/newman
container_name: newman
volumes:
- ./postman:/etc/newman
./postman - это папка в каталоге E2E.Tests, которая используется в Jenkinsfile следующим образом:
stage ('Run E2E Tests'){
stage ('Test API') {
agent any
steps {
dir('E2E.Tests') {
sh "docker-compose up --force-recreate -d"
// Wait for the test container to exit and fail build if needed
sh "docker-compose logs -f newman"
sh "docker wait newman"
}
}
post {
always {
dir('E2E.Tests') {
sh "docker-compose down"
archiveArtifacts artifacts: 'postman/newman/*.html'
}
}
}
}
}
Сам по себе машина, эта docker -композиция прекрасно работает внутри этой папки. Внутри контейнера newman при запуске Jenkins эта папка /etc/newman
ничего не содержит. Кажется, том подключен неправильно.
Есть ли какие-либо конфигурации, которые я пропустил? В нескольких статьях я нашел именно такой подход, но я предполагаю, что они не запускают jenkins внутри контейнера.