Рабочий процесс триггера на Github push - Плагин трубопровода - Конфигурация с несколькими каналами
Мы используем плагин конвейера с конфигурацией с несколькими каналами для нашего компакт-диска.
Мы проверили файл Jenkins, который работает с git.
git url: "$url",credentialsId:'$credentials'
Работа отлично работает, но не запускается автоматически, когда изменение переносится на github.
Я правильно установил веб-крючки GIT.
Интересно, что когда я перехожу в ветку многодиапазонного задания, и я нажимаю "View Configuration", я вижу, что "Build, когда изменение переносится в Github" не отмечено. Невозможно проверить его, так как я не могу изменить конфигурацию задания (поскольку он берет у родителя), и такой же вариант отсутствует в родительском.
Есть идеи, как это исправить?
Ответы
Ответ 1
Я нашел способ установить флажок "Построить, когда изменение переместится в Github".
Эта строка сделала трюк:
properties([pipelineTriggers([[$class: 'GitHubPushTrigger'], pollSCM('H/15 * * * *')])])
Я думаю, что опрос необходим, чтобы заставить его работать. Было бы неплохо, если бы не проводился опрос.
Вот пример Jenkinsfile
с этим реализованным:
#!/usr/bin/env groovy
node ('master'){
stage('Build and Test') {
properties([pipelineTriggers([[$class: 'GitHubPushTrigger'], pollSCM('H/15 * * * *')])])
checkout scm
env.PATH = "${tool 'Maven 3'}/bin:${env.PATH}"
sh 'mvn clean package'
}
}
Ответ 2
Если вы используете Stash, например, вы можете зарегистрировать WebHook Post-Receive, где вам нужно вставить свою форму URL-адреса Jenkins, например: http://jenkinsHost:9090/git/notifyCommit?url=ssh://[email protected]:1234/test.git
В вашем jenkins Job вам нужно установить хотя бы триггер Build "Poll SCM".
И установите время опроса, например, 5 минут.
Это позволяет также автоматическое индексирование ветвей для вашей конфигурации с несколькими конфигурациями.
Ответ 3
Прибегая к опросу добавляет латентность - время, которое требуется для сборки, и, следовательно, завершение дачи результата.
Мне казалось, что базовые плагины имеют низкий уровень абстракции, поэтому я переключился на плагин Github Organization Folder, который зависит от все они и настраивает организационный крючок для запуска ветвей сборки и/или запросов на перенос.
Ответ 4
Прежде чем начать, я хотел бы подчеркнуть, что до сих пор у меня не было предыдущего опыта с Дженкинсом, поэтому там может быть множество лучших решений.
Что я хотел сделать в двух словах:
- После каждого нажатия, сделанного в репозиторий Bitbucket (test2), на каждой ветке,
вытащить и построить еще один битбот Bitbucket (test1), от идентичного
имя ветки и сразу после этого, постройте test2 с помощью test1 как
зависимость.
Как мне удалось это достичь?
- Я начал новую работу с типа "Multibranch Pipeline"
- Я добавил следующий файл Jenkins для test2:
pipeline {
agent any
stages {
stage('build') {
steps {
dir('test1') {
git branch: BRANCH_NAME, url: '[email protected]:user/test1.git', credentialsId: 'credentials_id'
}
sh('build_process')
}
}
}
}
Ответ 5
Для декларативных конвейеров попробуйте это:
pipeline {
agent any
triggers {
pollSCM('') //Empty quotes tells it to build on a push
}
}
Ответ 6
node{
stage('Build and Test') {
properties([pipelineTriggers([[$class: 'GitHubPushTrigger'], pollSCM('* * * * *')])])
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'xxx-xxx-xxxx[your credentails Id]', url: 'https://github.com/git']]])
echo 'Build and Test has been done'
}
}