web-dev-qa-db-ja.com

jenkinsfileで「スキャンマルチブランチパイプライントリガー」を設定するにはどうすればよいですか?

現在、すべてのマルチブランチパイプラインジョブを手動で構成し、「マルチブランチパイプライントリガーのスキャン」を3分に設定します。

これをJenkinsfileに入れるにはどうすればよいですか?この例が見つかりません。 「マルチブランチパイプライントリガーのスキャン」はtriggers{}ブロック?

8
red888

マルチブランチ構成ページの設定は、マルチブランチスキャンジョブ自体のみを構成し、マルチブランチ「フォルダ」内で作成された個々のジョブは構成しません。

「マルチブランチパイプライントリガーのスキャン」の下にある「そうでない場合は定期的に実行される」というオプションは、マルチブランチジョブが新しい​​ブランチをスキャンするタイミングのトリガーにすぎません。既存のブランチに変更が見つかった場合、またはブランチの仕様に一致するJenkinsfileで新しいブランチが検出された場合、新しいビルドがトリガーされますが、これはジョブのトリガー方法ではありません。

実際、SCM構成にプロパティを追加して「自動SCMトリガーを無効にする」ことにより、変更が見つかった場合に自動ビルドを無効にすることができます。その後、マルチブランチスキャントリガーが表示されますが、変更が見つかってもジョブ自体はビルドされません。

ジョブをトリガーするには、できればwebhookを使用するのが理想的です。 (githubプラグインではなく)gitプラグインを使用してgitフックを使用する場合、PollSCMトリガーを有効にする必要があります(まれにしかポーリングしないか、まったくポーリングしないように設定できます)。

2.22の時点で通常のトリガーオプションだけが必要な場合は、cronまたはpollSCMトリガーのいずれかを構成できます。

pipeline {
    triggers {
        cron('H/4 * * * 1-5')
        pollSCM('0 0 * * 0')
    }

次に、スキャンを実行するタイミングをマルチブランチジョブに通知するようにwebhookを構成できると思います。私はそれを試していません。 「それ以外の場合は定期的に実行する」を使用して、1時間ごとまたは1日に数回スキャンするように指示します。

同じことは、ビルド破棄と、マルチブランチジョブで設定する他のことにも当てはまります。 Web UIでは、マルチブランチジョブ自体のみを構成でき、マルチブランチジョブから作成された個々のジョブは構成できません。ジョブを構成するには、Pipelineを使用する必要があります。

11
Rob Hales

dsl内で、次の行を追加して「スキャンマルチブランチパイプライントリガー」を構成できます。

configure {
    it / 'triggers' << 'com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger'{
        spec '* * * * *'
        interval "60000"
    }
}
3
ManishSingh