1

If you have a workflow which uses multiple git repositories, each git push triggers a build in Jenkins.

If I have a workflow job configured to poll 10 git repositories and I pushed changes to all of them [quite possible when doing a release build] - that's 10 builds in the queue. This is both good and bad. Bad because we will have changes in different repositories and we would like to kick off the build once all the files are in. At the same time I don't want to avoid polling the repositories.

stage 'REPO-1' {
git branch: "feature/testbranch", changelog: true, poll: true, url: 'ssh://git@stash.com/repo1.git', credentialsId: 'xxx' }

stage 'REPO-2' {
git branch: "feature/testbranch", changelog: true, poll: true, url: 'ssh://git@stash.com/repo2.git', credentialsId: 'xxx' }

Is there a way I can prevent this behavior perhaps introduce a delay in polling.

4

2 に答える 2

0

休止期間オプションを有効にし、60 秒のタイムアウトを追加しました。これにより、Jenkins ワークフローは、SCM の変更ごとに複数のビルドをトリガーするのではなく、沈黙期間内の複数のリポジトリーへの変更を 1 つにまとめ、単一のビルドをトリガーすることができます。ここに画像の説明を入力

私の場合、沈黙期間は 60 秒に設定されていることに注意してください。他の変更が 60 秒以内である限り、リポジトリ内の他の変更を監視するためにさらに 60 秒の沈黙期間が追加されます。ただし、60 秒後にリポジトリに別の変更を加えると、別のビルドになります。

于 2016-04-06T21:14:14.063 に答える
0

の使用を検討しましたAdditional Behaviours: Polling ignores commits with certain messagesか?

設定されていて、Jenkins が変更をポーリングするように設定されている場合、Jenkins は、ビルドをトリガーする必要があるかどうかを判断するときに、パターンに一致するメッセージでコミットされたリビジョンを無視します...

手順:

  1. メッセージで変更をコミットしIGNOREます。
  2. すべてのリポジトリが最新の状態になったら、ビルドを手動またはno-IGNOREメッセージでトリガーします。

チェックアウト手順:

checkout([$class: 'GitSCM', 
    branches: [[name: '*/master']], 
    doGenerateSubmoduleConfigurations: false, 
    extensions: [[$class: 'UserExclusion', excludedUsers: ''], 
    [$class: 'MessageExclusion', excludedMessage: '.*\\[ignore-this-commit\\].*']], 
    submoduleCfg: [], 
    userRemoteConfigs: [[url: 'https://github.com/luxengine/math.git']]])
于 2016-04-05T20:56:21.020 に答える