Подтвердить что ты не робот

Рабочий процесс триггера на Github push - Плагин трубопровода - Конфигурация с несколькими каналами

Мы используем плагин конвейера с конфигурацией с несколькими каналами для нашего компакт-диска. Мы проверили файл Jenkins, который работает с git.

git url: "$url",credentialsId:'$credentials'

Работа отлично работает, но не запускается автоматически, когда изменение переносится на github. Я правильно установил веб-крючки GIT.

Интересно, что когда я перехожу в ветку многодиапазонного задания, и я нажимаю "View Configuration", я вижу, что "Build, когда изменение переносится в Github" не отмечено. Невозможно проверить его, так как я не могу изменить конфигурацию задания (поскольку он берет у родителя), и такой же вариант отсутствует в родительском.

Есть идеи, как это исправить?

4b9b3361

Ответ 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'
}

}