Search Results for ""

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

ここでは、以下のセクションに沿って、CircleCI 上でのオープンソースプロジェクトのビルドに関するヒントとベストプラクティスについて説明します。

概要

オープンソースコミュニティをサポートする目的で、GitHub または Bitbucket 上のパブリックプロジェクトには 3つの無料のビルドコンテナが提供され、コンテナ数は合計 4つになります。 複数のビルドコンテナを使用することで、単一のプルリクエスト (PR) を並列処理で高速に、または複数の PR を一斉にビルドできます。

Linux 上で動作するパブリックプロジェクトの場合、これらの追加コンテナは自動的に有効になります。 追加コンテナを使用しない場合、または CircleCI プロジェクトをパブリックにしない場合には、この設定を変更できます。 プロジェクトの [Advanced Settings (詳細設定)][Free and Open Source (無料オープンソース)] オプションをオフに設定します。

メモ: macOS 上のオープンソースプロジェクトをビルドする場合は、これらの追加コンテナを有効にする方法について billing@circleci.com にお問い合わせください。

セキュリティ

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

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

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

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

プライベート環境変数

多くのプロジェクトでは、API トークン、SSH キー、またはパスワードが必要です。 プライベート環境変数を使用すると、プロジェクトがパブリックの場合でもシークレットを安全に格納できます。 詳細については、「プロジェクト内で環境変数を設定する」を参照してください。

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

CircleCI はデフォルトですべてのブランチのすべてのコミットをビルドします。 この動作は、オープンソースプロジェクトで使用するには活動的すぎることがあり、場合によってはプライベートプロジェクトよりもきわめて多くのコミットが存在することになります。 この設定を変更するには、プロジェクトの [Advanced Settings (詳細設定)] に移動して、[Only build pull requests (プルリクエストのみビルド)] オプションをオンに設定します。

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

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

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

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

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

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

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

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

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

キャッシュ

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

  • 同じフォークリポジトリからの PR は、キャッシュを共有します (前述のように、これにはマスターリポジトリ内の PR とマスターによるキャッシュの共有が含まれます)。
  • それぞれ異なるフォークリポジトリ内にある 2つの PR は、別々のキャッシュを持ちます。

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

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

CircleCI 上でビルドされたさまざまな規模のプロジェクトを以下にいくつかご紹介します。

  • React - Facebook の JavaScript ベースの React は、CircleCI (および他の CI ツール) でビルドされています。
  • React Native - JavaScript と React を使用してネイティブモバイルアプリケーションをビルドします。
  • Flow - JavaScript に静的な型指定を追加して、開発者の生産性とコードの品質を向上させます。
  • Relay - データ駆動型の React アプリケーションをビルドするための 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 の機能とプログラミング言語ごとに紹介されています。