Как я могу запустить что-то во время установки агента в декларативном конвейере Jenkins? - PullRequest
0 голосов
/ 01 ноября 2018

Наш текущий трубопровод Дженкинса выглядит так:

pipeline {

  agent {
    docker {
      label 'linux'
      image 'java:8'
      args '-v /home/tester/.gradle:/.gradle'
    }
  }

  environment {
    GRADLE_USER_HOME = '/.gradle'
    GRADLE_PROPERTIES = credentials('gradle.properties')
  }

  stages {
    stage('Build') {
      steps {
        sh 'cp ${GRADLE_PROPERTIES} ${GRADLE_USER_HOME}/'
        sh './gradlew clean check'
      }
    }
  }

  post {
    always {
      junit 'build/test-results/**/*.xml'
    }
  }

}

Мы монтируем /.gradle, потому что хотим повторно использовать кэшированные данные между сборками. Проблема в том, что если машина является новой машиной сборки, каталог на хосте еще не существует.

Куда мне поместить логику установки, которая запускается до , чтобы я мог убедиться, что этот каталог существует до запуска образа докера?

1 Ответ

0 голосов
/ 01 ноября 2018

Вы можете запустить этап подготовки перед всеми этапами и сменить агента после этого

pipeline {

  agent { label 'linux' } // slave where docker agent needs to run

  environment {
    GRADLE_USER_HOME = '/.gradle'
    GRADLE_PROPERTIES = credentials('gradle.properties')
  }

  stages {

    stage('Prepare') {
      // prepare host
    }

    stage('Build') {

      agent {
        docker {
          label 'linux' // should be same as slave label
          image 'java:8'
          args '-v /home/tester/.gradle:/.gradle'
        }
      }

      steps {
        sh 'cp ${GRADLE_PROPERTIES} ${GRADLE_USER_HOME}/'
        sh './gradlew clean check'
      }
    }
  }

  post {
    always {
      junit 'build/test-results/**/*.xml'
    }
  }

}

Указание метки докера

Конвейер предоставляет глобальную опцию на странице «Управление Jenkins» и на уровне папок для указания, какие агенты (по меткам) использовать для запуска конвейеров на основе Docker.

Как ограничить агента докера конвейера jenkins для конкретного ведомого?

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