ドキュメント
circleci.com
Start Building for Free

オープンソース プロジェクトの構築

2 weeks ago1 min read
On This Page

以下のセクションでは、CircleCI でのオープンソースプロジェクトのビルドに関するヒントとベストプラクティスを紹介します。

概要

オープンソースコミュニティをサポートする目的で、GitHub または Bitbucket 上の組織には、オープンソースプロジェクト用にクレジットが毎週無料で提供されます。 これらのクレジットは、Linux のリソースで使用可能です。

注:

  • macOS でオープンソースプロジェクトをビルドする場合は、これらの追加コンテナを有効にする方法について billing@circleci.com にお問い合わせください。
  • 利用できるオープンソースクレジットの量や制限は、UI 画面上では確認できません。

セキュリティ

オープンソースは開放型の活動ですが、機密情報を「開放」しないように注意が必要です。

  • リポジトリをパブリックにすると、CircleCI プロジェクトとそのビルドログもパブリックになります。 出力する情報に注意してください。
  • CircleCI アプリケーション内に設定されている環境変数は、一般には公開されず、明示的に有効にされない限り フォークされたプルリクエストに共有されることはありません。

オープンソースプロジェクトの機能と設定

以下の機能と設定は、オープンソースプロジェクトにおいて特に便利です。

プライベート環境変数

多くのプロジェクトでは、API トークン、SSH キー、またはパスワードが必要です。 プライベート環境変数を使用すると、プロジェクトがパブリックの場合でもシークレットを安全に保存できます。

For more information, see the Environment Variables document.

プルリクエストのみをビルドする

CircleCI はデフォルトでは、すべてのブランチのすべてのコミットをビルドします。 プライベートプロジェクトよりもきわめて多くのコミットが存在するオープンソースプロジェクトでは、この動作は活動的すぎるかもしれません。

この設定を変更するには、プロジェクトの Project Settings>Advanced に移動して、Only build pull requests (プルリクエストのみビルド) オプションを オン に設定します。

注: このオプションが有効であっても、CircleCI はプロジェクトのデフォルトのブランチやタグからはすべてのコミットをビルドします。

フォークされたリポジトリからのプルリクエストをビルドする

多くのオープンソースプロジェクトは、フォークされたリポジトリから PR を受け入れます。 これらの PR をビルドすると、手動で変更をレビューする前にバグを捕捉することができるので、効果的な方法です。

CircleCI はデフォルトでは、フォークされたリポジトリからの PR をビルドしません。 この設定を変更するには、プロジェクトの Project Settings>Advanced に移動して、Build forked pull requests (フォークされたプルリクエストをビルド) オプションを_オン_に設定します。

注: 現在この機能は、Bitbucket ではサポートされていません。

注: ユーザーがフォークからプルリクエストをリポジトリに送信しても、パイプラインがトリガーされない場合、ユーザーは CircleCI のプロジェクトではなく個人アカウントでフォークされたプロジェクトをフォローしている可能性があります。その場合、ジョブは組織のアカウントではなくユーザー個人のアカウントでトリガーされます。 この問題を解決するには、そのユーザーに個人用フォークからフォローを解除してもらい、代わりにソースプロジェクトをフォローしてもらいます。 これにより、プルリクエストを送信すると、組織のアカウントでジョブの実行がトリガーされるようになります。

フォークされたプルリクエストからのビルドにシークレットを渡す

制限を設定していないビルドを親リポジトリ内で実行することは、場合によっては危険です。 プロジェクトにはしばしば機密情報が含まれており、ビルドをトリガーするコードをプッシュできるユーザーならだれでも、この情報を自由に入手できます。

デフォルトでは、CircleCI はオープンソースプロジェクトの場合、フォークされた PR からのビルドにシークレットを渡さず、以下の 4種類の設定データを隠します。

注: シークレットを必要とするオープンソースプロジェクトのフォークされた PR ビルドは、この設定を有効にしない限り CircleCI 上で正しく動作しません。

プロジェクトをフォークし、PR をオープンする任意のユーザーとシークレットを共有しても問題がない場合は、Pass secrets to builds from forked pull requests (フォークされたプルリクエストからのビルドにシークレットを渡す) オプションを有効にできます。 この設定を変更するには、プロジェクトの Project Settings>Advanced に移動して、Pass secrets to builds from forked pull requests (フォークされたプルリクエストからのビルドにシークレットを渡す) オプションを_オン_に設定します。

キャッシュ

キャッシュは、PR の GitHub リポジトリに基づいて分離されます。 CircleCI は、フォーク PR の生成元の GitHub リポジトリ ID を使用してキャッシュを識別します。

  • 同じフォークリポジトリからの PR 間でキャッシュを共有します。 たとえば、メインリポジトリからの PR は、メインリポジトリブランチ (特に main ブランチ) とキャッシュを共有します。
  • それぞれ異なるフォークリポジトリ内にある 2 つの PR は、別々のキャッシュを持ちます。 つまり、フォークからの PR はメインリポジトリの main ブランチとはキャッシュを共有しません。
  • フォークされたプルリクエストからのビルドにシークレットを渡すを有効にすると、元のリポジトリとフォークされたすべてのビルドでキャッシュを共有できるようになります。

現在、キャッシュの自動入力は行われていません。この最適化がまだ優先順位リストの上位に入っていないためです。

オープンソースプロジェクトの例

CircleCI でビルドされたさまざまな規模のプロジェクトをご紹介します。

  • React - Facebook の JavaScript ベースの React は、CircleCI (および他の CI ツール) でビルドされています。
  • React Native - JavaScript と React を使用してネイティブ モバイル アプリケーションをビルドします。
  • Flow - JavaScript に静的な型指定を追加して、開発者の生産性とコードの品質を向上させます。
  • Vue - Vue.js は、Web 上で UI をビルドするための漸進的な JavaScript フレームワークであり、段階的に採用できます。
  • Storybook - 対話型 UI コンポーネントの開発とテストを行います (React、React Native、Vue、Angular、Ember)。
  • Electron - JavaScript、HTML、および CSS でクロスプラットフォームのデスクトップ アプリケーションをビルドします。
  • Angular - ブラウザーおよびデスクトップ Web アプリケーションをビルドするためのフレームワーク。
  • Apollo - GraphQL 用の柔軟なオープンソース ツールをビルドしているコミュニティ。
  • PyTorch - データ操作および機械学習のプラットフォーム。
  • Calypso - WordPress.com を活用するための次世代 Web アプリケーション。
  • fastlane - Android および iOS 用の自動ビルド ツール。
  • Yarn - npm に代わるツール

設定ファイルの詳細

Refer to the Examples document for more public and open source project configuration links organized by CircleCI features and by programming language.


ドキュメントの改善にご協力ください

このガイドは、CircleCI の他のドキュメントと同様にオープンソースであり、 GitHub でご利用いただけます。 ご協力いただき、ありがとうございます。

サポートが必要ですか

CircleCI のサポートエンジニアによる、サービスに関する問題、請求およびアカウントについての質問への対応、設定の構築に関する問題解決のサポートを行っています。 サポートチケットを送信して、CircleCI のサポートエンジニアにお問い合わせください。日本語でお問い合わせいただけます。

または、 サポートサイト から、サポート記事やコミュニティフォーラム、トレーニングリソースをご覧いただけます。