Я установил Jenkins и Docker внутри виртуальной машины. Я использую проект конвейера Jenkins, и мой декларативный конвейер jenkins выглядит следующим образом.
pipeline {
agent {
docker { image 'node:7-alpine' }
}
stages {
stage('Test') {
steps {
echo 'Hello Nodejs'
sh 'node --version'
}
}
}
}
Это очень простой конвейер по этой ссылке https://jenkins.io/doc/book/ конвейер/докер/
Когда я пытаюсь создать задание jenkins, оно печатает Hello Nodejs
, но застревает на следующей инструкции, то есть на выполнении команды оболочки. Через 5 минут задание завершается с ошибкой
process apparently never started in /var/lib/jenkins/workspace/MyProject@tmp/durable-c118923c
(running Jenkins temporarily with -Dorg.jenkinsci.plugins.durabletask.BourneShellScript.LAUNCH_DIAGNOSTICS=true might make the problem clearer)
ERROR: script returned exit code -2
Я не понимаю, почему он не выполняет команду sh.
Если я сделаю это как agent any
, он выполнит команду sh
.
1 ответ
Я не уверен, что это поможет, но я помню, что образ узла по умолчанию запускается под учетной записью root. Jenkins использует собственный идентификатор при запуске контейнера. Так что, вероятно, это проблема с разрешениями. Попробуйте добавить аргумент -u 0:
agent {
docker {
image 'node:7-alpine'
args '-u 0'
}
}
Похожие вопросы
Связанные вопросы
Новые вопросы
docker
По вопросам создания и запуска контейнеров Docker. ВОПРОСЫ ПО DOCKER ДОЛЖНЫ ОТНОСИТЬСЯ К РАЗРАБОТКЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ. Подходящие темы включают Dockerfiles, Docker Compose и архитектуру. Как правило, если ваш вопрос о том, что происходит внутри контейнера, он, вероятно, здесь по теме; если это вне контейнера, это, вероятно, не по теме.