Takumi Guard が GitLab CI/CD に正式対応
Takumi Guard が GitLab.com の GitLab CI/CD に正式対応しました。これまでの GitHub Actions に加え、GitLab CI/CD のジョブからも、長期有効なシークレットを保存することなく、OIDC 認証を利用してボットとして Shisho Cloud にサインインすることで、Takumi Guard 経由のパッケージダウンロードが組織のインストールログに記録されるようになりました。

概要
GitLab CI/CD のジョブでは、OIDC を利用して、ボットとして Shisho Cloud に認証します。ID トークンはボットに設定された GitLab CI/CD の信頼条件に基づいて検証され、検証に成功すると、有効期間の短いアクセストークンが発行されます。この仕組みにより、CI 環境に長期有効な API キーやトークンを保存する必要がありません。
これまでも GitLab CI/CD からボットとして Takumi Guard を利用できましたが、詳細が記録されていませんでした。今回の対応により、取得したアクセストークンを使用したパッケージのダウンロードは、GitHub Actions と同様に、組織のインストールログに記録されます。
npm、PyPI、RubyGems、Go モジュール、Packagist のすべてのエコシステムで利用できます。
利用開始
まず、Shisho Cloud でボットを作成し、対象プロジェクトの GitLab CI/CD の信頼条件を設定してください。信頼条件では、GitLab のプロジェクトパスを照合します。設定方法については、ボットの認証を参照してください。
次に、.gitlab-ci.yml のジョブに、shishoctl を使用してボットとしてサインインし、取得したアクセストークンをパッケージマネージャーに設定する処理を追加します。
例えば、npm の場合は以下のように設定します。
build:
image: node:22-bookworm
id_tokens:
ID_TOKEN:
aud: https://gitlab.com
variables:
SHISHOCLOUD_BOT_ID: "BT01EXAMPLE..." # Shisho Cloud コンソールからコピー
before_script:
# shishoctl をインストールする
- SHISHOCTL_URL="https://shisho.dev/releases/shishoctl-0.15.0-x86_64-unknown-linux-gnu"
- curl -L $SHISHOCTL_URL -o /usr/local/bin/shishoctl
- chmod +x /usr/local/bin/shishoctl
# ボットとしてサインインし、アクセストークンを取得する
- shishoctl auth signin:bot
--bot ${SHISHOCLOUD_BOT_ID}
<<< ${ID_TOKEN}
--expires-in-minutes 30 # 既定は 30 分(最大 1440 分)。ジョブに合わせて調整する
- export ACCESS_TOKEN="$(shishoctl auth print-access-token)"
# アクセストークンを npm に設定する
- npm config set registry https://npm.flatt.tech/
- npm config set //npm.flatt.tech/:_authToken "$ACCESS_TOKEN"
script:
- npm install
- npm test
アクセストークンの有効期間はデフォルトで 30 分です。--expires-in-minutes オプションを使用すると、最大 24 時間まで指定できます。ジョブの実行時間に応じて調整してください。
ほかのエコシステムの設定例については、各クイックスタートの「CI/CD」セクションにある「GitLab CI/CD」タブを参照してください。
