Дженкинс: как использовать переменные в аргументах агента? - PullRequest
0 голосов
/ 21 декабря 2018

Jenkins не хочет использовать какие-либо переменные в разделе аргументов докера агента, кроме основных переменных Jenkins, таких как JENKINS_URL.

Контейнерный Jenkins 2.152.Попытка запустить агент Docker с пользовательскими аргументами из переменных.Пробовал использовать Groove var, окружение var как env.Var, окружение var как $ {Var}.Все они использовались как имена, но не как их значения.

Jenkinsfile

Gpath = "/var/log:/opt/gpath"
pipeline {
agent {
    docker {
        image "bash:latest"
        args '--network proxy_nw -v Gpath -v ${Ppath} -v env.Ppath2 -v /var/log:/${NODE_LABELS}'
    }
}
environment {
    Ppath = "/var/log:/opt/ppath"
    Ppath2 = "/var/log:/opt/ppath2"
}
    stages {
        stage ('main') {
            steps {
               script {
                sh 'echo "Ppath= " ${Ppath} "; Ppath2= " ${Ppath2} "; NODE_LABELS= " ${NODE_LABELS}'
                sh 'printenv'
                input message: "wait"
            }
        }
    }
}

}

Вывод на консоль Jenkins

docker run -t -d -u 1000:1000 --network proxy_nw -v Gpath -v ${Ppath} -v env.Ppath2 -v /var/log:/${NODE_LABELS}

Как видите, я использовал несколько переменных внутри секции args.Хорошо, из-за одинарных кавычек кажется разумным, что Groovy-переменные идут как имена.Мы можем видеть это на выходе консоли Jenkins.Но переменные окружения тоже не работают.Они актуальны внутри строительного контейнера, а не на уровне Дженкинса.Так.Как определить переменные для раздела args директивы агента docker?

1 Ответ

0 голосов
/ 25 декабря 2018

Я нашел обходной путь.

Я добавил на верхний уровень agent none и перевел все свои этапы на сцену, просто объявив контейнер.Да, это потому, что мы можем поместить stages внутрь stage

pipeline {
    agent none
    environment {
    WORKDIR = getVar(G_workdir)
    DIRDOUBLE = getVar(G_dirdouble)
    }
    stages {
        stage('build container up') {
            agent {
                docker {
                    image G_container
                    args '--network proxy_nw -v ${DIRDOUBLE}'
                }
            }
            stages {
                stage('Initialise') {
                        steps {
            ........
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...