Декларативный .withRun Jenkins Docker

Я использую декларативный формат для файлов конвейера и работаю внутри контейнера докеров, который определяется с помощью файла Dockerfile в корневом каталоге моего проекта.

Мой Jenkinsfile выглядит так:

pipeline {
  agent {
    dockerfile {
      additionalBuildArgs '--network host'
    }
  }
  stages {
    stage('Test') {
      steps {
        sh 'pytest --version'
      }
    }
}

Я хотел бы передать дополнительные аргументы команде запуска докера, аналогичной этому вопросу... running-the-image-in-a-jenkinsfile">Как передать аргументы контейнера Docker при запуске образа в Jenkinsfile

Можно ли сделать это в декларативном формате конвейера или мне следует переключиться?

Редактировать:

По сути, это эквивалент того, что я пытаюсь сделать в недекларативном режиме:

node {
  def pytestImage = docker.build('pytest-image:latest', '--network host .')

  pytestImage.inside('--network=host') {
    sh 'pytest --version'
    // other commands ...
  }
}

person janDro    schedule 29.05.2018    source источник


Ответы (1)


Вы можете добавить опцию args к вашему dockerfile. Он передает аргументы непосредственно вызову docker run:

pipeline {
  agent {
    dockerfile {
      additionalBuildArgs '--network host'
      args '--network=host'
    }
  }

  stages {
    stage('Test') {
      steps {
        sh 'pytest --version'
      }
    }
}

Подробнее здесь

person Igor-S    schedule 16.10.2018
comment
Я больше не использую Jenkins, но я думаю, что это должно сработать! Спасибо! - person janDro; 16.08.2019
comment
Благодаря тонну! Я целую вечность искал способ передать параметры запуска моему контейнеру от Jenkins! - person Jason; 01.11.2019