Go Wiki: DashboardBuilders
LUCIビルダー
Goチームは、カスタムソリューションであるコーディネーターからLUCIにテストパイプラインを移行しました。LUCIは、GoogleのChromeオープンソースチームによって作成されたオープンソースの継続的インテグレーションシステムです。Goチームは、より多くの開発者によって使用およびサポートされている継続的インテグレーションソリューションを活用するために、LUCIの採用を決定しました。これにより、チームはコミュニティにより機能豊富なソリューションを提供できるようになります。
LUCIシステムでは、ビルダーがLUCIに認証され、ビルドを受信して処理する2つのアプリケーションを実行する必要があります。LUCIトークンデーモンは、認証に必要なトークンを生成します。スワーミングボットは、トークンを使用してLUCIに接続し、ビルドを処理します。
ビルダーの要件
- 以下の接続が可能なインターネット接続
- リソース
- 少なくとも512MBのメモリ。1GB以上を強く推奨します。
- 20GBのディスク容量が理想的です。
- できれば2つ以上の(V)CPU。
- Python3がインストールされており、
PATH
に含まれていること。 - 権限
ビルダーの設定方法
-
新しいビルダーの追加を要求するGo IssueトラッカーにIssueを作成し、自身に割り当てます。
- Issueのタイトルは、
x/build: add LUCI <os-arch> builder
の形式にする必要があります。 - ホスト名を選択し、Issue本文にその値を記載します。ホスト名は
<GOOS>-<GOOARCH>-<メインテナのGitHubハンドル>
の形式に従う必要があります。名前の競合がある場合は、Goチームが変更を要求することがあります。 - 「new-builder」ラベルを追加します。(Issueにコメントを投稿して
@gopherbot, please add label new-builder.
と入力すると、gopherbotがラベルを追加します。)
- Issueのタイトルは、
-
golang.org/x/build/cmd/genbotcert
を使用して、事前に選択したホスト名を入力として、証明書署名要求(_hostname_.csr)とTLS秘密キー(_hostname_.key)の両方を作成します。証明書署名要求(_hostname_.csr.txt)に.txtファイル拡張子を追加し、GitHub Issueに添付します。チームメンバーが生成された証明書(_hostname_.cert)をGitHub Issueに添付します。genbotcert -bot-hostname <hostname>
-
GoチームメンバーがLUCIで新しいビルダーを定義します。完了すると、Issueにコメントが追加されます。
-
マシンโทเค็นデーモンはโทเค็นサーバーと通信して、LUCIマシンโทเค็นを生成および更新します。
go.chromium.org/luci/tokenserver/cmd/luci_machine_tokend
をインストールし、cronを使用して10分ごとに実行されるように設定します。秘密キーはswarming
ユーザーから読み取れないようにする必要があるため、cronジョブは別のユーザーとして実行する必要があります。luci_machine_tokend -backend luci-token-server.appspot.com -cert-pem <path-to-the-certificate> -pkey-pem <path-to-the-private-key> -token-file=/var/lib/luci_machine_tokend/token.json
- /var/libがโทเค็นに適した場所ではない場合は、必要に応じて変更し、下記の
bootstrapswarm
を呼び出す際に環境変数LUCI_MACHINE_TOKEN
をファイルパスに設定します。
-
golang.org/x/build/cmd/bootstrapswarm
をインストールし、オペレーティングシステムのプロセススーパーバイザー(systemdなど)の下でswarming
ユーザーとしてループで実行されるように設定します。Bootstrapswarm
は、スワーミングボットの初期バージョンをダウンロードし、常に実行されていることを確認します。bootstrapswarm -hostname <hostname>
-
ログにエラーがないことを確認してボットが起動します。
セキュリティに関する注意事項
一般的に、低容量のビルダーは、すでにレビューされ、提出済みのコードのみを実行します(提出後テスト)。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の一部です。