現在の Jenkins Pipeline ジョブは、Git からチェックアウトされたブランチを構築するようにセットアップされています。チェックアウトを行うには、SCM プラグインを使用します。
triggers {
pollSCM scmpoll_spec: ''
}
checkout(
poll: true,
scm: [$class: 'GitSCM',
branches: [[name: 'refs/heads/develop']],
userRemoteConfigs: [
[url: 'https://git-server/repo.git',
name: 'origin',
refspec: '+refs/heads/develop:refs/remotes/origin/develop',
credentialsId: 'XXX']
],
extensions: [
[$class: 'WipeWorkspace'],
[$class: 'CloneOption', honorRefspec: true, noTags: true, reference: '', shallow: false],
[$class: 'LocalBranch', localBranch: 'develop']
],
browser: [$class: 'GitList', repoUrl: 'https://git-server/gitlist/repo.git']
]
)
npm version patch
ビルド中に、ファイルを更新し、package.json
ローカルでタグをコミットして作成する呼び出しがあります。次に、これをサーバー側の git リポジトリにプッシュします。Jenkins が別のビルドを開始するのを止めるために、オプションを指定してプッシュし、post-receive フックはこれらのプッシュを無視します。
git push origin develop --follow-tags --push-option=nobuild
サーバーの post-receive フックは、オプションを使用しないため、ユーザーがプッシュしたときにのみ Jenkins に POST します。
"https://jenkins-server/git/notifyCommit?url=https://git-server/repo.git"
これはすべてうまく機能していますが、問題は、開発者がブランチにコミットするfeature
と、ブランチのビルドdevelop
が開始されることです。問題の原因は次のとおりだと思います。
develop
ブランチへのコミット/プッシュdevelop
ブランチの構築中に作成されたタグfeature
ブランチでコミット/プッシュ- Jenkins は、develop で新しいタグを確認し
branch
、ビルドを開始します
したがって、Jenkinsに特定のブランチへのコミット/プッシュのみを考慮させて、特定のビルドをトリガーする方法を探しています。または、ビルドの開始を検討するときに、Jenkins がタグの一部として変更を無視するように強制します。
別の SO 投稿を見つけたことに注意してください: Jenkins git commit for specific branch triggers build jobs for other branch too