Понимание шагов Jenkinsfile для агента Docker - PullRequest
0 голосов
/ 27 марта 2019

У меня есть Jenkinsfile со следующими шагами:

stage('build') {
      agent {
           docker {
               image 'maven:3-alpine'
               args '-v /ec2-user/.m2:/root/.m2'
           }
      }
      steps {
        git(url: 'https://github.com/user/project.git', branch: 'master')
        sh 'cp /home/application-prod.properties src/main/resources'
        sh 'mvn clean install'
      }
    }

Согласно документации, Дженкинс должен Выполнить шаги на этом этапе во вновь созданном контейнере, используя это изображение.

Если это так, то почему команда sh второго шага выполнена успешно? Как он может получить доступ к файлу на хосте Jenkins?

Мне кажется, команды выполняются на хосте Jenkins. Тогда почему mvn clean install работает нормально? На хосте Jenkins не установлен Maven.

1 Ответ

2 голосов
/ 28 марта 2019

Поскольку для доступа к содержимому рабочей области обычно требуется доступ, Jenkins автоматически подключает его как том в контейнер. В противном случае, вероятно, в 99% всех заданий нужно будет указать, что выписанный репо должен быть смонтирован в контейнер.

Вы должны видеть параметры -v в выходных данных сборки, когда она запускает команду docker run.

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