Вызов удаленного файла Jenkins из другого файла Jenkins

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

Я из команды DevOps, которая контролирует конвейер Jenkins для нескольких команд разработчиков. Я в основном хочу написать файл Jenkins с несколькими этапами, который может выполняться несколькими командами. Я понимаю, что этот файл Jenkins можно зарегистрировать в Gitrepo каждой команды, и он может вызвать весь конвейер, как только будут внесены изменения в репозиторий кода.

Чтобы убедиться, что этот JenkinsFile обслуживается, и для любых будущих изменений этого файла Jenkins мне не нужно просить все различные команды обновить этот файл в их Gitrepo, я хочу разместить этот файл в центральном Gitrepo, который контролируется моей командой. .

Можно ли вызвать этот файл Jenkins из разных Gitrepos? Есть примеры?


person Ishu Gupta    schedule 26.06.2017    source источник


Ответы (2)


Вот как я мог это сделать:

Мое базовое репо просто вызывало удаленное репо следующим образом:

#!/usr/bin/env groovy
def jenkinsFile
stage('Loading Jenkins file') {
  jenkinsFile = fileLoader.fromGit('testjenkinsstuff/cicd/testMyPipeline', 'https://github.myorg.com/user/testjenkinsstuff.git', 'master', null, '')
}

jenkinsFile.start()
person Ishu Gupta    schedule 11.07.2017
comment
Если мне нужно передать параметры в сценарий Jenkinsfile. Как мне это сделать? Есть документация по этому поводу? - person AlexS; 17.10.2018
comment
@Ishu Gupta- Если у вас будет время, не могли бы вы предложить мне аналогичный вопрос, размещенный здесь - stackoverflow.com/questions/53695859/ - person asur; 09.12.2018
comment
Мне кажется важным упомянуть, что эта удаленная загрузка конвейера работает, только если вы установите этот плагин Jenkins: wiki.jenkins.io/display/JENKINS/Pipeline+Remote+Loader+Plugin - person jewbix.cube; 30.07.2019

Чтобы ответить на ваш вопрос, да, это возможно. Чтобы добиться этого, необходимо изменить подход (т.е.), насколько я понимаю, нет прямой конфигурации, доступной.

  1. Настройте задание конвейера с «конвейером из SCM», настроенным на поддерживаемое репо DevOps.
  2. Не включайте «Строить, когда изменения отправлены в SCM», поскольку мы настроили репозиторий github, который отличается от репозитория github пользователя / проекта.
  3. Создайте небольшой скрипт веб-перехватчика и настройте его в «GitHub Webhooks», поэтому он будет вызывать соответствующее задание jenkins, когда есть push (или) любой другой cond.
  4. Ваш сценарий конвейера должен иметь достаточные возможности для разработки "URL-адреса SCM". Например: оформление заказа scm: http://github.org.net/ $ {JOB_NAME} .git, здесь URL-адрес создается с использованием имени задания Дженкинса.
  5. Если какие-либо детали, связанные с проектом, должны поддерживаться отдельно (например, компиляция maven / ant / gradle (или) любая другая информация, используйте Shared Library для поддержки жестко закодированных входных данных для каждого проекта.
person Fidel    schedule 27.06.2017