Pipelineプラグインを使用してJenkins2を実行しています。各ブランチ(マスター、開発など)のルートにJenkinsfileがあるマルチブランチパイプラインプロジェクトをセットアップしました。これを設定するのは簡単でした。ただし、コードが変更されていない場合でも、各ブランチを定期的に実行する方法(ブランチのインデックス作成ではない)に戸惑っています。定期的なビルドを有効にするには、Jenkinsfileに何を入力する必要がありますか?
回答:
宣言型のパイプラインを使用していて、特定のブランチでのみビルドをトリガーしたい場合は、次のようにすることができます。
String cron_string = BRANCH_NAME == "master" ? "@hourly" : ""
pipeline {
agent none
triggers { cron(cron_string) }
stages {
// do something
}
}
見つかったジェンキンスはJira
master
ブランチでのみcronトリガーを作成する方法はありますか?コンテキストを与えるために:チームメイトが新しい機能ブランチを作成してそこでコミットするとき、Jenkinsファイルは(ポーリングまたはプッシュを介して)トリガーする必要がありますが、私が望まないのは、これらの機能ブランチでのcronトリガーの起動です。
古いビルドを破棄することを示す例を見つけることができました。これも私が望んでいたことです。
Jenkinsfile
jenkins-infra / jenkins.io:
properties(
[
[
$class: 'BuildDiscarderProperty',
strategy: [$class: 'LogRotator', numToKeepStr: '10']
],
pipelineTriggers([cron('H/30 * * * *')]),
]
)
buildDiscarder
、パイプライン構文が示すように、記号を使用して構文を簡略化できます。
pipelineTriggers([[$class: "TimerTrigger", spec: "H 1 * * *"]])
これは私のために働いています:
triggers {
cron(env.BRANCH_NAME == 'development' ? 'H */12 * * *' : '')
}
この記事でもっと見る
上記の解決策で問題が発生しました。
私はJenkinsウィザードではないので、古い形式/構文などを使用しているかどうかはわかりませんが、次のように機能します。
#!/usr/bin/env groovy
properties(
[
pipelineTriggers([
[
$class: 'TimerTrigger',
spec: 'H 7,19 * * *'
]
])
]
)
決定元:https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/triggers/TimerTrigger.java