web-dev-qa-db-ja.com

Jenkins PipelineプラグインでSCMポーリングを有効にする方法

これは Jenkins WorkflowプラグインでSCMポーリングを機能させる方法 に関連する質問です。そのスレッドは、パイプラインスクリプトでSCMポーリングを使用する方法に応答しますonceSCMポーリングは有効になっていますが、方法はカバーしていませんenableSCMポーリング。

たとえば、 mulit-branch pipeline plugin を使用してJenkinsfileを使用してジョブを自動的に作成したい場合、ジョブで「Poll SCM」オプションを有効にする方法はありません。これにより、最初からジョブをセットアップするdockerコンテナーを作成するなど、オンデマンド環境をプロビジョニングすることが難しくなります。コンテナが起動したら、Jenkinsにサインインして構成に移動し、「Poll SCM」オプションを選択する必要があるためです。 Cloudbeesは、この問題の解決に役立つ テンプレートプラグイン を提供しています。

ただし、無料版を使用しているJenkinsはこれを利用できません。 Jenkinsの無料版のユーザー向けの回避策または解決策はありますか?

16
mdo123

マルチブランチパイプラインプラグインを使用してJenkinsfileを使用してジョブを自動的に作成する場合、ジョブで「Poll SCM」オプションを有効にする方法はありません。

必要ありません。マルチブランチプロジェクトには、ブランチ全体のインデックス作成に対して設定可能なポーリング間隔があります。これは、ブランチごとのビルドトリガーとしても機能し、Webhookも自動的に受信します。

22
Jesse Glick

SCMポーリングを有効にする方法の質問に答えるには、以下を実行する必要があります。

パイプライン構文ジェネレーターと「プロパティ:ジョブプロパティの設定」を使用して、SCMポーリングを有効にする次のものを生成できます。

properties([pipelineTriggers([pollSCM('H * * * *')])])

ただし、Jesse GlickはMultibranchパイプラインを指摘しているため、SCMポーリングを有効にする必要はありません。

12
pdross

私は同じ問題について考えています。

GithubBitbucketなどのオンラインGitサービスを使用している場合は、Webhooks機能を使用して解決できると思います。私はまだソリューションをテストすることができませんでしたが、それはshould動作します。

あなたのMultibranch Pipeline設定、Trigger builds remotelyオプション。

次に、パスを使用して、リポジトリでGithub/Bitbucket Webhookを有効にする必要があります(Jenkinsの構成の説明を参照):JENKINS_URL/job/test/build?token=TOKEN_NAME

2
tvdw

BitbucketをWebフックに接続するには、宣言型パイプラインに次を追加する必要がありました。

pipeline {
    stages {
        stage('Initialize') {
            steps {
                //enable remote triggers
                script {
                    properties([pipelineTriggers([pollSCM('')])])
                }
                //define scm connection for polling
                git branch: BRANCH_NAME, credentialsId: 'my-credentials', url: 'ssh://[email protected]/stash/my-project.git'
            }
        }
    }
}

これにより、multibranchiverse全体をスキャンせずにブランチを再構築できます。これは、Bitbucket Project/Github Team-multibranchプロジェクトを使用する場合に特に役立ちます。そこにいくつかのリポジトリ/ブランチがあると、スキャンには数分かかることがあります。

ブランチに直接フックできるようにすることで、ビルド結果をより速く、副作用なしで取得できます。

注意:宣言的なパイプラインでは、プロパティ呼び出しをスクリプトブロックでラップする必要があります。

0
Rick Moritz