2016-11-25 6 views
2

私はGitlabをしばらく使用しており、ビルドサーバーを設定しています。私はマシン(ノートブック/ PC)を変更すると、内容が定期的にクラウドにバックアップされるので、自分の仕事を自分のgitlabサーバーに保存することを頻繁に行います。コミットメッセージに応じてGitlabランナー条件付き実行

ビルドサーバーは素晴らしいですが、完全なプロジェクトはあらゆるプッシュで構築されています。そのかなり大きなものとして、私はこのような何かをしたいと思います:

  • プッシュコメント「1.2.3.4をリリースする」とコミット - > Gitlabはコミットの他のすべてのプッシュがで無視され ビルド
  • をトリガーランナー。

ビルド時にヘッドコミットコメントのみをチェックしても問題ありません。

私は.gitlab.ymlのドキュメントを検索しましたが、役に立たないものは見つかりませんでした。

+0

コミットがreadmeの変更だけだった場合、git commitメッセージに '[skip ci]'や '[ci skip]'と書くことができます。それを見つけることができる。プッシュにこのスキップマーカーがあるコミットのみが含まれている場合、CIビルドはスキップされます。 –

+0

また、プロジェクトを複数のgit reposと複数のCIターゲット(build_x、build_y、build_z、xとy、zは別々に構築され、パイプラインをparellelizeすることができます)に分割することについて考えるときです。また、インクリメンタルビルドが可能になるように、Cachingの使用について考えることも考えられます。キャッシュは、C/C++、Java、およびその他のコンパイルされた言語ビルドで時間を節約することができ、増分ビルディングで時間を節約できます。 –

答えて

2

サンプルメッセージ "リリース1.2.3.4"に基づいて、最良の方法は、ビルドをタグ付きコミットのみに制限することです。

gitlab-ci.ymlファイルの場合は、制限するステップの最後に「唯一の」属性を追加します。

job1: 
    stage: build 
script: 
- echo "building..." 
# - Your commands here 
only: 
- tags 

さて、あなたはそれを構築する必要があるたびに、ちょうど使用してコミットにタグ付け:あなたは本当に、すべてはあなたがCI Variablesになりますコミットメッセージを表示する必要がある場合は

git tag "release 1.2.3.4" 

、方法があります現在のコミットハッシュリファレンスを取得します。

+1

Tortoiseを使用すると、ネットがこれを実行して実行します。私はコミットし、タグを付けてプッシュしますが、何も起こりません。新しいパイプラインは開始されません。 – MichaSchumann

+1

しかしあなたのヒントに基づいて、私は "only: - master"を使ってみました。これはうまくいきます!だから私は支店で開発し、それをリリースでマスターに合併するだけです。たぶん、タトゥーがgitコマンドをラップする方法のためにタグのthingyが動作しない可能性があります。しかし、私はあなたの答えを私が解決策を見つけるのを助けたので受け入れます。 – MichaSchumann

+1

git push origin --tagsを使ってコミットした後でも、タグをプッシュしましたか?リポジトリ - >タグでGitlabでチェックアウトすることができます。また、Webインターフェイスのこのセクションでタグを作成することもできます。しかし、とにかく、私は助けることができてうれしい。 –

関連する問題