Go Wiki: DashboardBuilders

LUCI ビルダー

Go チームは、テストパイプラインをカスタムソリューションであるコーディネーターから LUCI に移行しました。LUCI は、Google の Chrome オープンソースチームによって作成されたオープンソースの継続的インテグレーションシステムです。Go チームは、より多くの開発者グループによって使用され、サポートされている継続的インテグレーションソリューションを活用するために LUCI の使用を採用しました。これにより、チームはコミュニティにより多くの機能豊富なソリューションを提供できるようになるはずです。

LUCI システムは、ビルダーが LUCI に対して認証を行い、ビルドを受信して処理する 2 つのアプリケーションを実行することを要求します。LUCI トークンデーモンは、認証に必要なトークンを生成します。スワーミングボットは、トークンを使用して LUCI に接続し、ビルドを処理します。

ビルダーの要件

ビルダーの設定方法

  1. 新しいビルダーの追加を要求し、自分にアサインする Go Issue tracker で issue を作成します。

    1. issue のタイトルは x/build: add LUCI builder の形式である必要があります。
    2. ホスト名を選択し、その値を issue の本文に記述します。ホスト名は -- の形式に従う必要があります。名前との競合がある場合、Go チームは変更を要求する場合があります。
    3. 「new-builder」ラベルを追加します。(issue に @gopherbot, please add label new-builder. とコメントを投稿すると、gopherbot が追加してくれます。)
  2. golang.org/x/build/cmd/genbotcert を使用して、ホスト名 (事前に選択したもの) を入力として、証明書署名要求 (hostname.csr) と TLS プライベートキー (hostname.key) の両方を生成します。証明書署名要求 (hostname.csr.txt) に .txt ファイル拡張子を追加し、GitHub issue に添付します。チームメンバーが結果の証明書 (hostname.cert) を GitHub issue に添付します。

    1. genbotcert -bot-hostname <hostname>
  3. Go チームメンバーが LUCI で新しいビルダーを定義します。これが完了すると、issue にコメントが追加されます。

  4. マシン・トークン・デーモンは、トークン・サーバーと通信して LUCI マシン・トークンを生成および更新します。go.chromium.org/luci/tokenserver/cmd/luci_machine_tokend をインストールし、cron を介して 10 分ごとに実行するように設定します。プライベートキーは swarming ユーザーが読み取ることができないため、cron ジョブは別のユーザーとして実行する必要があります。

    1. luci_machine_tokend -backend luci-token-server.appspot.com -cert-pem <パス-証明書> -pkey-pem <パス-プライベートキー> -token-file=/var/lib/luci_machine_tokend/token.json
    2. /var/lib がトークンに適さない場所である場合、適切に変更し、以下の bootstrapswarm を呼び出すときに環境変数 LUCI_MACHINE_TOKEN をファイルパスに設定します。
  5. golang.org/x/build/cmd/bootstrapswarm をインストールし、オペレーティングシステムのプロセススーパーバイザー (systemd など) の下で swarming ユーザーとしてループで実行するように設定します。Bootstrapswarm はスワーミングボットの初期バージョンをダウンロードし、常に実行されていることを保証します。

    1. bootstrapswarm -hostname <hostname>
  6. ログにエラーがなくボットが起動することを確認します。

セキュリティに関する注意点

通常、低容量のビルダーは、すでにレビューおよび提出されたコード (ポストコミットテスト) のみを実行します。大量のハードウェアを利用できる Go チームが実行するビルダーに対してのみ、プレコミットテストを有効にします。ただし、Gomote ツールは、Go チームおよび Go コミュニティの多くの人々が利用でき、開発およびデバッグのためにビルダーへの任意のアクセスを許可します。

念のため、ビルダーを内部リソースにアクセスできない分離されたネットワークで実行したい場合があります。

コーディネータービルダー (レガシー)

このセクションでは、LUCI への移行前に Go プロジェクトで以前使用されていたカスタムテストソリューションについて説明します。

ビルド設定 (上部) とホスト設定 (下部) がここにリストされています

https://farmer.golang.org/builders

ビルダーは特定のホストタイプで実行されます。(例: linux-386-387 はビルドタイプです。これは Kubernetes ベースの linux/amd64 ホストである host-linux-kubestd で実行されます)

それらはファイル https://cs.opensource.google/go/x/build/+/master:dashboard/builders.go から来ています

コーディネーターの設計詳細については、https://go.dokyumento.jp/s/builderplan を参照してください

ビルダーマシンの情報、稼働している数、およびそのステータスは https://farmer.golang.org/ で確認できます


このコンテンツはGo Wikiの一部です。