web-dev-qa-db-ja.com

Githubプッシュのトリガーワークフロー-パイプラインプラグイン-マルチブランチ構成

CDのマルチブランチ構成でパイプラインプラグインを使用しています。 gitで動作するJenkinsfileをチェックインしました。

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

ジョブは正常に機能しますが、変更がgithubにプッシュされたときに自動的にトリガーされません。 GIT Webフックを正しく設定しました。

興味深いことに、マルチブランチジョブのブランチに移動して[構成の表示]をクリックすると、[変更がGithubにプッシュされたときにビルド]がオフになっていることがわかります。 (親から取得するため)ジョブの構成を変更できず、同じオプションが親にないため、チェックする方法はありません。

これを修正する方法はありますか?

24
Punit Agrawal

「変更が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'
    }
}
5
Max

ポーリングに頼ると遅延が発生します。ビルドが開始され、結果が返されるまでにかかる時間です。

基本的なプラグインは抽象度が低いように思えたので、私は Github Organization Folder プラグインに切り替えました。またはプルリクエスト。

1
giorgiosironi

たとえば、Stashを使用する場合は、JenkinsのようなURLフォームを挿入する必要がある受信後WebHookを登録できます。 http:// jenkinsHost:9090/git/notifyCommit?url = ssh:// git @ gitHost :1234/test.git

Jenkinsジョブでは、少なくともビルドトリガー「Poll SCM」を設定する必要があります。また、ポーリング時間を5分などに設定します。これにより、マルチブランチプロジェクト構成の自動ブランチインデックス作成も可能になります。

1
mrkernelpanic

宣言的パイプラインについては、これを試してください:

pipeline {
    agent any
    triggers {
        pollSCM('') //Empty quotes tells it to build on a Push
    }
}
1
DarkHark

始める前に、これまでJenkinsでの経験がなかったことを強調したいと思います。そのため、より良い解決策がたくさんあるかもしれません。

私が一言で達成したかったのは:

  • すべてのプッシュがBitbucketリポジトリ(test2)に対して行われた後、すべてのブランチで、
    同一のものから別のBitbucket repo(test1)を引き出して構築します
    ブランチ名とその後、test1を使用してtest2をビルドします
    依存。

どうやってそれを達成できましたか?

  • 「Multibranch Pipeline」タイプの新しい仕事を始めました
  • 次のJenkinsfileを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')
            }
        }
    }
}
  • パイプラインにBitbucketフックを設定できないという問題に遭遇しました

  • JenkinsにBitbucket Branch Source Pluginを追加しました

  • ジョブをセットアップするときに「Branch Sources」でBitbucketを選択しました

  • 資格情報を追加し、webhookの自動登録にチェックマークを付けました

  • 「マルチブランチパイプライントリガーのスキャン」で、1分間隔で定期的に実行しない場合は定期的にチェックマークを付けます

  • Bitbucketリポジトリにwebhookを追加しました

  • すべてのプラグインを更新し、Jenkinsを再起動すると準備完了です

私がインストールした他のプラグイン:Bitbucket Plugin、Pipelineプラグイン。これが誰かに役立つことを願っていますが、Bitbucket Branch Source Pluginなしで何時間も苦労した後、私はなんとかそれを解決することができました。

0
f4z3k4s