前提:GitlabとJenkinsはgitlab webhook pluginで連携済みである
連携方法などは他記事で詳しく解説されているので,そちらを参照ください
http://qiita.com/garbagetown/items/fe055dcfd8e0c090e610
なんでこんなことを?
pushイベントをトリガにCIすると,大量のブランチの成果物ができあがりますが,基本的にビルドごとに上書きされてしまいます.
それをブランチごとに最新の成果物を保管しておくことが目的です.
要は…
一言で言えば,Gitのブランチ名でディレクトリを切って,そこにビルド成果物をコピーするだけです.
ブランチごとに最新の成果物を保管する
手順は以下の通り
- ビルドコマンド実行後にビルド手順の追加
- Windowsバッチコマンドの実行,またはシェルコマンドの実行を追加
- ブランチでディレクトリ分け
- 成果物を保存のビルド手順を追加して,成果物の位置を指定
シェルコマンド例
./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
注意
ブランチが削除されても反映されないため,定期的なメンテ(削除されたブランチの成果物の削除)を行う必要があります.