CircleCIをpublic reposに使うときに気をつけること

CircleCIをpublic reposに使うときに気をつけること

TL;DR

CircleCIをpublic reposに使うときは、気をつけて使う必要がある。秘匿情報を入れてる時は、fork reposからのpull requestをbuildしてはいけない(CircleCIデフォルト設定)。

経緯

CircleCIでfork reposからのpull requestが来ない。
Tachikoma.io を使ってみた – えいのうにっき

circle ciでpublicで同じように使えてる、気がしてたけどprivateとは条件がよく考えると違ったり、travis-ciと全く同じようにはいかない、部分があった。
で、普通に考えるとcircleci的には危ない機能なので設定は安全に倒してあった。

注意

悪意のあるpull requestがたとえばrake testputs YOUR_CREDENTIALSってやってると、credentials取れてしまう(疑似コード)
CircleCIにデプロイ設定書く運用はprivate reposだと普通なので、同じようにやりつつpublicにするとアブナイ。

設定

Circle CIのOSS用エントリを読み直す。

http://blog.circleci.com/a-step-into-open-source/

We only have experimental support for building pull requests from forks automatically — there are some weird edge cases, and it’s hard to find a model of sharing settings that works right. (If you’d like to try what we have, it’s available in Project Settings > Experiment Settings as well).

設定箇所が書いてあった。

Circle CI
> Project Settings
> Tweaks
> Experimental Settings
> Project fork pull requests: On

設定箇所には注意書き

Project fork pull requests
CircleCI will automatically update the commit status shown on GitHub’s pull request page. Builds will be run using the parent repository’s plan and will be able to access the parent project’s environment settings.

If you have SSH keys or AWS credentials stored in your project settings and untrusted forks can make pull requests against your repo, then this option isn’t for you!

これをonにすると、これがこうなる。

Exec tachikoma update 20150208025527 by tachikomapocket · Pull Request #7 · metarubygems/carrion_crow
Exec tachikoma update 20150208035252 by tachikomapocket · Pull Request #11 · metarubygems/carrion_crow

forkからのpull request、いわゆるフツーのpull requestでcircle ci動くようになる。で、注意書きが問題になる。

結論

で、どうすればいいの? まだ頭のなかで詰められてない。travis-ciのencrypt使うしかない? encryptがどこまで安全かは未調査。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中