LoginSignup
13

More than 5 years have passed since last update.

Gitlabと連携したJenkinsで,ブランチごとに最新の成果物を保管する

Last updated at Posted at 2014-08-22

前提:GitlabとJenkinsはgitlab webhook pluginで連携済みである

連携方法などは他記事で詳しく解説されているので,そちらを参照ください
http://qiita.com/garbagetown/items/fe055dcfd8e0c090e610

なんでこんなことを?

pushイベントをトリガにCIすると,大量のブランチの成果物ができあがりますが,基本的にビルドごとに上書きされてしまいます.
それをブランチごとに最新の成果物を保管しておくことが目的です.

要は…

一言で言えば,Gitのブランチ名でディレクトリを切って,そこにビルド成果物をコピーするだけです.

ブランチごとに最新の成果物を保管する

手順は以下の通り

  1. ビルドコマンド実行後にビルド手順の追加
  2. Windowsバッチコマンドの実行,またはシェルコマンドの実行を追加
  3. ブランチでディレクトリ分け
  4. 成果物を保存のビルド手順を追加して,成果物の位置を指定

シェルコマンド例

./app/build/outputs/apk/app-debug.apk がビルド成果物と仮定

mkdir -p build
branch=`echo ${GIT_BRANCH} | sed -e "s/\//_/"`
targetDir=./build/$branch
rm -rf $targetDir
mkdir -p $targetDir
cp -f ./app/build/outputs/apk/app-debug.apk $targetDir

バッチコマンドの2行目では,ブランチのグルーピング利用される "/" を "_" に変更しています.
例えば,origin/master ブランチであれば origin_master ディレクトリが作成され,そこにビルド成果物が保存されます.

成果物を保存の設定

build/**/*.apk

注意

ブランチが削除されても反映されないため,定期的なメンテ(削除されたブランチの成果物の削除)を行う必要があります.

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13