Я установил 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.

This is the screenshot of console output

Если я сделаю это как agent any, он выполнит команду sh.

0
Tarun Chawla 24 Окт 2019 в 20:46
См. мой ответ в этой теме: stackoverflow.com/questions/58346984/…
 – 
cipher0
30 Окт 2019 в 17:59
У меня такая же проблема. Вы смогли ее решить?
 – 
Daghan ---
3 Фев 2021 в 02:49

1 ответ

Я не уверен, что это поможет, но я помню, что образ узла по умолчанию запускается под учетной записью root. Jenkins использует собственный идентификатор при запуске контейнера. Так что, вероятно, это проблема с разрешениями. Попробуйте добавить аргумент -u 0:

agent {
    docker {
        image 'node:7-alpine'
        args '-u 0'
    }
}
1
Marat 26 Окт 2019 в 20:26