2016-05-12 1 views
1

gitがGitHub webhooksによって報告されたときに反応してビルドするようなCIを設定したい、私のrepoのサブフォルダ内のコンテンツの変更を含むようにしたい。例えばCircleCIでどのgithubがビルドするかを制御する方法は?

myRepo 
> code1.js 
> workers <-- run when this ... or anything under this changes 
    > worker1.js 

、私はCircleCIは、それがコミットを見て、変更履歴にworkersを検索する正規表現にマッチするコミットの変更履歴に基づいて構築するためgo? or no-go?を決定するためのスクリプトを実行することができ構築セットアップしたいですペイロード。

私はどこで、どのようにフックするかわからない:変更履歴は何もworkersフォルダに言及している場合

  1. は、私はセットアップ私のGitHubウェブフックは賢く何とかなると識別する必要がありますか? WebHookは、コミットペイロードをいつ自分のCIにプッシュするかについて決定を下すので、この方法では私のCIは馬鹿にしておくことができます。
  2. CircleCIのyamlファイルにどこかで接続して、どうすればchangelogにworkersという名前のフォルダがあるかどうかを判別できますか?もしそうならどこ?

私は自分の正規表現を書くことができますが、私はスクリプトを注入/フックインする場所を知る必要があります。


私が求めていないよ物事:

  1. 私はGitのサブモジュール
  2. のような代替案を求めていないよ私は2つの別々のレポ

答えて

4
に分割する必要はありません

CircleCIは、この機能を内蔵していません。 CircleCI側では、workersディレクトリの変更を確認するいくつかのロジックをcircle.ymlに含めることができますが、ビルドプロセスが既に開始されている場合にのみ評価されます。あまり効率的ではありません。

GitHubウェブフックについては、私はそれができるようなことを認識していませんでした。もしそうなら、それは素晴らしいです、私に知らせてください。

私の提案

CircleCIは、コミットメッセージに[skip ci] or [ci skip]フラグをサポートしています。 workersディレクトリ以外の変更が頻繁でない場合は、そのフラグをコミットメッセージに追加するだけです。変更が頻繁に発生する場合は、面倒ですので代わりにGit commit-msgフックを使用します。そのフックのための小さなスクリプトを書いて、どのディレクトリに変更が含まれているかを調べることができます。 workers/*の中の何かが変更されていない場合は、コミットメッセージに[skip ci]を追加(または追加)してください。 Gitのドキュメントはここでかなり裸ですが、フックのページはhttps://git-scm.com/book/en/v2/Customizing-Git-Git-Hooksです。

私は役立つことを願っています。

-Ricardo
デベロッパーエバンジェリスト、CircleCI

+2

FYI:これは、ブログの記事になっていますhttps://circleci.com/blog/circleci-hacks-automate-the-decision-to-skip-ビルドを使用する - git-hook / – FelicianoTech

関連する問題