Visual Studio Marketplace が Trusted Publishing に対応。GitHub Actions または Azure Pipelines が連携 ID を提示し、検証後に拡張を公開する。CI/CD に長寿命の Azure DevOps PAT を置かない。従来の PAT 公開は引き続き利用可能。

GitHub Actions 向けの流れ:

  1. CI/CD が Visual Studio Marketplace に連携 ID を提示する。
  2. Marketplace が GitHub Trusted Publishing ポリシー、または Azure Pipelines の workload identity を検証する。
  3. 公開ツールが検証済み ID で拡張を公開する(PAT 不要)。

GitHub Actions では Marketplace が一時資格情報を発行し、有効期限は 15 分。Azure Pipelines では Microsoft Entra 連携の WIF サービス接続を使い、Marketplace の Trusted Publishing ページにポリシーを作らない。

#GitHub Actions: Trusted Publishing ポリシー

  1. Visual Studio Marketplace にサインインする。
  2. 拡張を所有する publisher を開く。
  3. Trusted Publishing を選ぶ。
  4. Create を展開し、次の項目を入力する。
項目内容
Policy name例: Release workflow
Repository ownerリポジトリを所有する GitHub org またはユーザーのログイン名(例: contoso)
Repositoryowner を除いたリポジトリ名(例: sample-extension)
Workflow.github/workflows 配下のワークフローファイル名(例: publish.yml)
Environment(任意)ワークフローが GitHub environment を使う場合、その名前(例: production)
  1. Create を選ぶ。

プライベートリポジトリでは、ポリシー作成から 48 時間以内に設定どおりのワークフローを実行する。初回のトークン交換が成功するとポリシーは恒久的に有効化される。48 時間内に使われなければ失効し、再度 48 時間の猶予を開ける操作が可能。Trusted Publishing ページで各ポリシーの状態と最終利用を確認できる。

#GitHub Actions: VS Code 拡張の公開

公開ジョブに id-token: write を付け、npx @vscode/vsce publish --oidc で OIDC 公開する。GitHub OIDC トークンは 1 回だけ交換可能。

yaml
jobs:
  publish:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      id-token: write
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
      - run: npm ci
      - run: npx @vscode/vsce publish --oidc

Visual Studio 拡張は Visual Studio ドキュメントのコマンドライン公開手順に従う。

#Azure Pipelines

Azure Pipelines では GitHub 用の Marketplace ポリシーを作らない(Trusted Publishing ページの Create は使わない)。

  1. Workload Identity Federation(WIF)を使う Azure Pipelines サービス接続を構成する。Microsoft Entra のアプリ登録とサービスプリンシパル、またはマネージド ID を裏付けにできる。
  2. その ID を Visual Studio Marketplace の publisher メンバーに追加し、Contributor ロールを付与する。
  3. 公開ステップで WIF サービス接続を参照する。

構成後、Visual Studio Code / Visual Studio 拡張を Marketplace PAT なしで公開できる。

#PAT からの移行(GitHub Actions)

既存の vsce + PAT 公開がある場合:

  1. 対象リポジトリとワークフロー用の Trusted Publishing ポリシーを作成する。
  2. 公開ジョブに id-token: write を追加する。
  3. 公開コマンドを OIDC 用に更新する。
  4. ワークフローを実行し、OIDC 公開が成功することを確認する。
  5. 成功後、ワークフローとリポジトリシークレットから Marketplace PAT を削除する。

初回の Trusted Publishing 実行が成功するまで PAT を残す運用が推奨される。Azure Pipelines も WIF 接続と publisher 側 ID を先に揃え、連携公開が成功してから PAT を外す。

Marketplace Trusted Publishing は GitHub OIDC と Azure Pipelines WIF 以外の OIDC プロバイダーには未対応。

#参考文献