はじめに

CI に必要な権限だけを渡す

専用のサービスアカウントと、実行するエンドポイントグループに必要な権限のキーを用意します。サービスアカウントの作成・キー発行には管理権限が必要です。api-keys リファレンスで権限を確認してください。

手順

npm install -g @orchestor-inc/cli@0.5.0
orc --version
orc auth status --json
orc service-accounts create \
  --workspace WORKSPACE_ID \
  --name "CI bot" \
  --scope workspace \
  --json

作成結果のサービスアカウント ID を使い、ジョブが呼ぶエンドポイントグループだけを許可します。キーの出力先にはソース管理外の新しいファイルを指定します。

orc service-accounts keys create SERVICE_ACCOUNT_ID \
  --workspace WORKSPACE_ID \
  --name "CI read key" \
  --permissions '{"answers":"read"}' \
  --output /secure/path/service-account-key \
  --json

CLI はキーを標準出力と標準エラーへ出しません。所有者だけが読める出力ファイルから CI のシークレット機能へ値を登録し、登録後にファイルを安全に削除します。CI ジョブではそのシークレットを ORCHESTOR_API_KEY として注入し、WORKSPACE_ID をジョブの対象に置き換えます。ブラウザーログインやキーを保存する init はジョブで実行しません。

ジョブから次の取得を実行します。answers グループの read 権限が必要です。

orc answers list --workspace WORKSPACE_ID --limit 1 --json

バージョン、対象 ID、取得の成否だけを記録し、キーや認証ヘッダーをログへ出さないでください。403 は不足する権限を確認し、管理者キーへの置き換えで回避しません。キーが不要になったら、管理用の CLI 認証へ戻して orc api-keys delete API_KEY_ID --workspace WORKSPACE_ID --yes を実行します。

失敗が残る場合は、失敗を報告して再検証するで、このワークフローと失敗した手順を報告へ添えます。