Skip to content

chore(ci): Scoop 用 PAT を 1Password 管理に移行する - #22

Merged
kwrkb merged 3 commits into
masterfrom
chore/scoop-pat-via-1password
Aug 15, 2026
Merged

kwrkb merged 3 commits into
masterfrom
chore/scoop-pat-via-1password

Conversation

@kwrkb

@kwrkb kwrkb commented Aug 15, 2026

Copy link
Copy Markdown
Owner

概要

GitHub Actions Secrets に直接置いていた SCOOP_GITHUB_TOKEN を、1Password の gh vault(op://gh/SCOOP_GITHUB_TOKEN/credential)からリリース時に読み出す方式へ移行する。

GitHub 側に残る長期シークレットは 1Password サービスアカウントのトークン 1 つだけになり、PAT のローテーションは 1Password 側で完結する。シークレットの数が減るわけではなく、得られるのは一元管理と監査ログ。

変更点

  • .github/workflows/release.yml — 1password/load-secrets-action@v5 を追加し、secrets.SCOOP_GITHUB_TOKEN の参照を steps.op.outputs.SCOOP_GITHUB_TOKEN に置換
  • .goreleaser.yaml — 変更なし({{ .Env.SCOOP_GITHUB_TOKEN }} のまま通る)
  • .gitlab-ci.yml — 変更なし(GitLab 側は release-cli で goreleaser を使っていないため無関係)

export-env は v5 で既定 false のため、環境変数にばら撒かず outputs 経由で goreleaser ステップにのみ渡している。旧 secrets.* の行を残さず置換したのは、step レベルの env: が勝つため、併存させたまま GitHub 側の secret を削除すると空文字が渡り goreleaser の scoop push が不可解な認証エラーで落ちるため。

検証

.goreleaser.yaml の skip_upload: auto によりプレリリースでは scoop アップロード自体がスキップされるため、-rc タグを打ってもトークンを試せない。本番リリースを消費せずに確かめるため、一時ジョブ op-check.yml をこのブランチ限定で走らせて確認し、その後削除した。

  • run 31868231450 — push permission: true
  • fine-grained PAT が対象リポジトリを含まない場合 API は 403 ではなく 404 を返すため、呼び出しの成否ではなく permissions.push を明示確認している

マージ後

既存の GitHub Secret SCOOP_GITHUB_TOKEN は、本番リリース(プレリリースでない v* タグ)が新経路で 1 回成功するまで残す。成功を確認してから削除する。

🤖 Generated with Claude Code

kwrkb and others added 3 commits August 15, 2026 14:57
GitHub Secrets に直接置いていた SCOOP_GITHUB_TOKEN を、1Password の `gh`
vault(op://gh/SCOOP_GITHUB_TOKEN/credential)からリリース時に読み出す方式へ
移行する。GitHub 側に残る長期シークレットは 1Password サービスアカウントの
トークンのみになり、PAT のローテーションは 1Password 側だけで完結する。

load-secrets-action は v5 で export-env が既定 false のため、outputs 経由で
goreleaser ステップにのみ渡す。旧 `secrets.SCOOP_GITHUB_TOKEN` の行は残さず
置換する。step レベルの env が勝つため、併存させたまま GitHub 側の secret を
削除すると空文字が渡り、goreleaser の scoop push が不可解な認証エラーで落ちる。

.goreleaser.yaml は `{{ .Env.SCOOP_GITHUB_TOKEN }}` のままで変更不要。

op-check.yml は移行の検証用の一時ジョブ。`skip_upload: auto` によりプレリリース
では scoop アップロード自体がスキップされ、タグを打ってもトークンを試せない。
本番リリースを消費せずに push 権限を確かめるため、このブランチ限定で走らせる。
検証後に削除する。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
run 31868231450 で 1Password 経由の PAT 読み出しと kwrkb/scoop-bucket への
push 権限(permissions.push = true)を確認できたため、役割を終えた。
vault 単位でしかアクセス権を切れない制約から専用 vault を切った判断と、
skip_upload: auto によりプレリリースでは検証にならない点を残す。
@kwrkb
kwrkb force-pushed the chore/scoop-pat-via-1password branch from d17b701 to 41ae4eb Compare August 15, 2026 07:49
@kwrkb
kwrkb merged commit f43f531 into master Aug 15, 2026
1 check passed
@kwrkb
kwrkb deleted the chore/scoop-pat-via-1password branch August 15, 2026 07:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant