2016-11-01 8 views
0

(ここでは新人です)タグを特定のブランチにプッシュするとJenkinsのビルドがトリガーされるシステムを実装しようとしています。開発者は変更をプッシュしたいのでJenkins:ブランチがタグ付けされたときのビルド

git checkout production 
git pull 
git checkout `git describe --abbrev=0 --tags` 

を:現在、私の上司は、私たちのAPIサーバ(Node.jsのを実行している)に、cronジョブが実行される5分ごとに実行される単純なのPoCがインストールされています最新のコミットを新しいバージョン番号でタグ付けしてから、git push origin --tagsを使用して変更をプッシュします。npm version patchを実行するだけです。その後、APIボックス上のすべてのAPIサービスを再開するスクリプトをJenkins経由で実行します。

これをエミュレートして完全に自動化するには、私たちのproductionブランチに新しいバージョンのタグが付いていることが検出されたときに、これをすべて実行するJenkinsジョブが必要です。

これは可能ですか?私が見つけたほとんどのドキュメントは、repoにプッシュされたANYタグのビルドを引き起こします。特定のリポジトリへのコミットを指すタグをトリガーしたい

これは高度なケースであり、代わりにそれを行うためのスクリプトを書くことができましたが、私はJenkinsとgitのベストプラクティスを習得しようとしています。いくつかの反パターンに。

答えて

0

私はがありません実際にジェンキンスがどのように使用されるのか、この答えは全く役に立たないかもしれません。あなたはこのように切り離さHEADを使用する場合にGitでは

は、しかし、あなたが必要とするすべてを一度フェッチする前に、二度git describeを実行することで、一度の後:

otag=$(git describe --tags --abbrev=0 origin/production) || 
    die "help, no initial tag" 
git fetch origin 
ntag=$(git describe --tags --abbrev=0 origin/production) || 
    die "help, no new tag" 
if [ "$otag" = "$ntag" ]; then 
    echo the tag we would check out now is the same as the one 
    echo we checked out last time, so we do nothing 
else 
    echo moving from tag: $otag to tag: $ntag 
    git checkout $ntag 
    ... build ... 
fi 

git describeはあなたが指定することができますあなたが説明したいと思っているので、ブランチをチェックアウトしたり、フェッチしたり、マージ・アンド・ファースト・フォワードしたりする必要はありません。ローカルブランチはが本当にを使用したことがないですので、これは、ローカルブランチproductionが古く、徐々により多く得るために、あるいは単に全く存在しないことを可能にすることを

注意。あなたのサンプルコードであなたに与えているのは、アップストリーム設定だけです。