CDのマルチブランチ構成でパイプラインプラグインを使用しています。 gitで動作するJenkinsfileをチェックインしました。
git url: "$url",credentialsId:'$credentials'
ジョブは正常に機能しますが、変更がgithubにプッシュされたときに自動的にトリガーされません。 GIT Webフックを正しく設定しました。
興味深いことに、マルチブランチジョブのブランチに移動して[構成の表示]をクリックすると、[変更がGithubにプッシュされたときにビルド]がオフになっていることがわかります。 (親から取得するため)ジョブの構成を変更できず、同じオプションが親にないため、チェックする方法はありません。
これを修正する方法はありますか?
「変更が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'
}
}
ポーリングに頼ると遅延が発生します。ビルドが開始され、結果が返されるまでにかかる時間です。
基本的なプラグインは抽象度が低いように思えたので、私は Github Organization Folder プラグインに切り替えました。またはプルリクエスト。
たとえば、Stashを使用する場合は、JenkinsのようなURLフォームを挿入する必要がある受信後WebHookを登録できます。 http:// jenkinsHost:9090/git/notifyCommit?url = ssh:// git @ gitHost :1234/test.git
Jenkinsジョブでは、少なくともビルドトリガー「Poll SCM」を設定する必要があります。また、ポーリング時間を5分などに設定します。これにより、マルチブランチプロジェクト構成の自動ブランチインデックス作成も可能になります。
宣言的パイプラインについては、これを試してください:
pipeline {
agent any
triggers {
pollSCM('') //Empty quotes tells it to build on a Push
}
}
始める前に、これまでJenkinsでの経験がなかったことを強調したいと思います。そのため、より良い解決策がたくさんあるかもしれません。
私が一言で達成したかったのは:
どうやってそれを達成できましたか?
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なしで何時間も苦労した後、私はなんとかそれを解決することができました。