Start Building for Free
CircleCI.comアカデミーブログコミュニティサポート

オープンソースプロジェクトのビルド

4 days ago1 min read
このページの内容

このドキュメントでは、CircleCI でのオープンソースプロジェクトのビルドに関するヒントとベストプラクティスを紹介します。

概要

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

注:

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

セキュリティ

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

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

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

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

プライベート環境変数

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

詳細については、 環境変数の設定 を参照してください。

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

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 に代わるツール

設定ファイルの詳細

サンプル設定 のドキュメントでは、パブリックおよびオープンソースのプロジェクト設定に関する各種のリンクが、CircleCI の機能とプログラミング言語ごとに紹介されています。


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

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

サポートが必要ですか

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

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