8

新しいブランチが作成されたとき、または既存のブランチが削除されたときにトリガーされるようにしたい、GitHub のプロジェクトの Jenkins での仕事があります。これは可能ですか?

注: Jenkins サーバーは社内にあるため、GitHub からの Web フックを使用することはできません。

4

4 に答える 4

3

良さそうな場合は、このアプローチを試すことができます。:)

ビルド マシンで cron をスケジュールして、次のタスクを実行します。

  1. Git リポジトリからブランチのリストを取得し、ファイルに保存します (例: branch_list)

    Gitolite を使用し、git ls-remoteコマンドを使用してブランチ名にアクセスします。

    git ls-remote gitolite@git.server.com:repository_name

    例えば、

    [tom@master ~]$ git ls-remote gitolite@git.server.com:repository_name
    08a119f0aec5d4286708d2e16275fcd7d80d2c25        HEAD
    a91ef29f1be5bfe373598f6bb20d772dcc65b8ca        refs/heads/dev-mob
    d138356cf752a46fd8c626229809c9eaae63a719        refs/heads/dev-ssorel
    e7d7e2c617c4a42b299b29c0119283813800f1bb        refs/heads/dev-omni
    3193b36d678f1af2dcc3a291c6313f28ede97149        refs/heads/dev-pay
    72fd9d8586708011c763cd7bc4f7bd2a3513a12f        refs/heads/dev-sell
    39455fc2672039a7f325e9cafe3777ed563368ef        refs/heads/dev-apis
    a22eb000ffa1ac0fbbf51b6bc8aea31b040567a3        refs/heads/dev-front
    78a63105ec754d7ba758af97d542e749ceb9c533        refs/heads/dev-tpsp
    82d99796690b6c562872ea68655c74ebc3f0abfb        refs/heads/mainline
    fd82522f9999cedb11e245b515d480187c2e9cc6        refs/heads/master
    

    ブランチ名のみを除外するには、次を使用できます。

    [tom@master ~]$ git ls-remote gitolite@git.server.com:repository_name | grep -v HEAD | cut -d/ -f3 | sort > branch_list_latest
    
  2. 最後に取得したファイル、つまりbranch_listとの差分を実行します。違いがある場合は、ビルドをトリガーします。diffまたはcmpコマンドを使用できます。

    git ls-remote gitolite@git.server.com:repository_name | grep -v HEAD | cut -d/ -f3 | sort > branch_list_latest
    
    if ! cmp -s branch_list branch_list_latest; then
       mv branch_list_latest branch_list
       echo "Files differ which means branch created or removed. Triggering build..."
       # Trigger build command
    fi
    

Cron は、一定の間隔の後、ブランチのリストをフェッチし続けます。必要に応じて間隔を定義できます。

于 2014-09-27T06:23:34.660 に答える
0

https://jenkins-ci.org/blog/2015/12/03/pipeline-as-code-with-multibranch-workflows-in-jenkins/によると、作成に応じてジョブを作成および削除できるはずですそして枝の除去。

私は試していませんが...

https://blog.codecentric.de/en/2015/04/generated-jenkins-jobs-and-automatic-branch-merging-for-feature-branches/もお読みください。

于 2016-02-04T10:38:38.927 に答える