Использование dockerfile с синтаксисом сценариев Jenkins Scripted Pipeline - PullRequest
1 голос
/ 10 января 2020

Используя Декларативный конвейер Jenkins , можно легко указать Dockerfile, метку агента, аргументы сборки и запустить аргументы следующим образом:

*Jenkinsfile (Declarative Pipeline)*
agent {
    dockerfile {
        dir './path/to/dockerfile'
        label 'my-label'
        additionalBuildArgs  '--build-arg version=1.0'
        args '-v /tmp:/tmp'
    }
}

Я пытаюсь добиться того же, используя скриптовый конвейерный синтаксис. Я нашел способ передать метку агента и запустить аргументы, но не смог передать каталоги и аргументы сборки . В идеале я написал бы что-то вроде этого (метки и аргументы запуска уже работают):

*Jenkinsfile (Scripted Pipeline)*

node ("my-label"){
    docker.dockerfile(dir: './path/to/dockerfile', additionalBuildArgs:'--build-arg version=1.0')
          .inside('-v /tmp:/tmp') {
        \\ add stages here
    }
}


Документация показывает, как это можно сделать с помощью существующего docker image, то есть с директивой image в конвейере.


*Jenkinsfile (Declarative Pipeline)*

pipeline {
    agent {
        docker { image 'node:7-alpine' }
    }
    stage('Test') {
        //...
    }
}


*Jenkinsfile (Scripted Pipeline)*

node {
    docker.image('node:7-alpine').inside {
        stage('Test') {
            //...
        }
    }
}


Однако синтаксис конвейерного сценария для директивы dockerfile отсутствует. Обходной путь, который я использую в данный момент, - это создание самого изображения.

node ("my-label"){
    def testImage = docker.build("test-image", "./path/to/dockerfile", "--build-arg v1.0") 

    testImage.inside('-v /tmp:/tmp') {
        sh 'echo test'
    }
}

Любая помощь очень ценится!

1 Ответ

0 голосов
/ 13 января 2020

Лично я помещаю аргументы docker cli перед путем к папке с изображениями и указываю имя файла docker с аргументом -f

Кроме того, вы делаете это правильно. Агент dockerfile создает образ docker точно так же, как и шаг docker.build. За исключением того, что вы можете * * * * * * * * * * * * * * * * - * * * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 100 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...