1

現在の 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が開始されることです。問題の原因は次のとおりだと思います。

  1. developブランチへのコミット/プッシュ
  2. developブランチの構築中に作成されたタグ
  3. featureブランチでコミット/プッシュ
  4. Jenkins は、develop で新しいタグを確認しbranch、ビルドを開始します

したがって、Jenkinsに特定のブランチへのコミット/プッシュのみを考慮させて、特定のビルドをトリガーする方法を探しています。または、ビルドの開始を検討するときに、Jenkins がタグの一部として変更を無視するように強制します。

別の SO 投稿を見つけたことに注意してください: Jenkins git commit for specific branch triggers build jobs for other branch too

4

1 に答える 1