# Takumi Guard が GitLab CI/CD に正式対応

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

![Takumi Guard が GitLab CI/CD に正式対応](/docs/ja/_md-assets/7cb6957ee9-eyecatch.png)

## 概要 {#overview}

GitLab CI/CD のジョブでは、OIDC を利用して、ボットとして Shisho Cloud に認証します。ID トークンはボットに設定された GitLab CI/CD の信頼条件に基づいて検証され、検証に成功すると、有効期間の短いアクセストークンが発行されます。この仕組みにより、CI 環境に長期有効な API キーやトークンを保存する必要がありません。

これまでも GitLab CI/CD からボットとして Takumi Guard を利用できましたが、詳細が記録されていませんでした。今回の対応により、取得したアクセストークンを使用したパッケージのダウンロードは、GitHub Actions と同様に、組織の[インストールログ](/docs/ja/t/guard/features/installation-logs)に記録されます。

npm、PyPI、RubyGems、Go モジュール、Packagist のすべてのエコシステムで利用できます。

## 利用開始 {#getting-started}

まず、Shisho Cloud でボットを作成し、対象プロジェクトの GitLab CI/CD の信頼条件を設定してください。信頼条件では、GitLab のプロジェクトパスを照合します。設定方法については、[ボットの認証](/docs/ja/c/bot/authentication#gitlab-ci-oidc)を参照してください。

次に、`.gitlab-ci.yml` のジョブに、shishoctl を使用してボットとしてサインインし、取得したアクセストークンをパッケージマネージャーに設定する処理を追加します。

例えば、npm の場合は以下のように設定します。

```yaml
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」タブを参照してください。

- [npm](/docs/ja/t/guard/quickstart/npm#setup-ci)
- [PyPI](/docs/ja/t/guard/quickstart/pypi#setup-ci)
- [RubyGems](/docs/ja/t/guard/quickstart/rubygems#setup-ci)
- [Go モジュール](/docs/ja/t/guard/quickstart/golang#setup-ci)
- [Packagist](/docs/ja/t/guard/quickstart/packagist#setup-ci)
