upgrading-golang について
Chainloopの各コンポーネントでGoのバージョンを更新する手順を案内するスキルです。モジュールやDockerイメージの更新、任意のAtlas更新、プロジェクトの検証を扱います。
主な機能
- 01Goと任意のAtlasの目標バージョン確認
- 02GoディレクティブとDockerイメージのダイジェスト更新
- 03ドキュメント内のバージョン表記更新
- 04任意のAtlasイメージとCLIの更新
- 05テスト、lint、最終確認の実行
活用シーン
- 01Chainloopの各コンポーネントでGoを更新する
- 02固定したGo Dockerイメージを更新する
- 03Atlasのマイグレーションイメージも更新する
- 04プロジェクトのチェックで更新内容を検証する
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ chainloop-dev/ chainloop --skill upgrading-golangインストール後、Claude Code で/upgrading-golangを入力して読み込まれたか確認します。
同梱ファイルfiles-to-update.md
詳細
Go バージョンのアップグレード
このスキルは、Chainloop プロジェクトのすべてのコンポーネントで Go のバージョンを包括的にアップグレードするプロセスを自動化します。
プロセス
1. 対象バージョンの確認
ユーザーに以下を尋ねます。
- アップグレード先の Go バージョン(例:「1.25.3」)
- Atlas マイグレーションの Docker イメージもアップグレードするかどうか(アップグレードする場合は、対象の Atlas バージョンも尋ねます。例:「0.38.0」)
2. Docker イメージのダイジェストを取得
公式の golang Docker イメージをプルし、SHA256 ダイジェストを抽出します。
docker pull golang:X.XX.X
出力から SHA256 ダイジェストを抽出します(形式:sha256:abc123...)。
3. ソースコードを更新
以下のファイルの go ディレクティブを更新します。
./go.mod
重要:プロジェクトの方針により、./extras/dagger/go.mod は更新しないでください。
置換するパターン:
go X.XX.X
4. Docker イメージを更新
新しいバージョンと SHA256 ダイジェストを使用して、すべての Dockerfile を更新します。完全な一覧は files-to-update.md を参照してください。
置換するパターン:
FROM golang:X.XX.X@sha256:OLD_DIGEST AS builder
以下に置換します。
FROM golang:X.XX.X@sha256:NEW_DIGEST AS builder
5. ドキュメントを更新
./CLAUDE.md の「Key Technologies」にあるバージョン参照を更新します。
- **Language**: Go X.XX.X. To know how to upgrade go version, see docs/runbooks
6. Atlas Docker イメージと CLI を更新(任意)
ユーザーが Atlas のアップグレードを希望した場合:
6a. Atlas Docker イメージをプルし、SHA256 ダイジェストを抽出します。
docker pull arigaio/atlas:X.XX.X
出力から SHA256 ダイジェストを抽出します(形式:sha256:abc123...)。
6b. ./app/controlplane/Dockerfile.migrations を更新します。
置換するパターン:
# from: arigaio/atlas:X.XX.X
# docker run arigaio/atlas@sha256:OLD_DIGEST version
# atlas version vX.XX.X
FROM arigaio/atlas@sha256:OLD_DIGEST as base
以下に置換します。
# from: arigaio/atlas:X.XX.X
# docker run arigaio/atlas@sha256:NEW_DIGEST version
# atlas version vX.XX.X
FROM arigaio/atlas@sha256:NEW_DIGEST as base
7c. make init のために ./common.mk を更新します。
重要:common.mk のバージョンを更新する前に、必ず curl コマンドで Atlas のバージョンが利用可能であることを確認してください。
curl -sSf https://atlasgo.sh | ATLAS_VERSION=vX.XX.X sh -s -- --version
コマンドが失敗する場合、またはそのバージョンが利用できない場合は、common.mk を更新しないでください。この場合、Docker イメージのみを更新してください。
init ターゲットの Atlas CLI インストールバージョンを更新します。
置換するパターン:
curl -sSf https://atlasgo.sh | ATLAS_VERSION=vX.XX.X sh -s -- -y
新しいバージョンに置換します(バージョンには v プレフィックスを付けてください)。
curl -sSf https://atlasgo.sh | ATLAS_VERSION=vX.XX.X sh -s -- -y
7. 変更を検証
検証コマンドを実行します。
make test
make lint
エラーが発生した場合は、アップグレードを完了する前に対処してください。
8. 最終確認
- すべてのライセンスヘッダーが更新されていることを確認します(2024 → 2024-2025、または現在の年を追加)。
- proto ファイルに変更があった場合は、
buf format -wを実行します。 - コンストラクターの依存関係に変更があった場合は、
wire ./...を実行します。 go mod tidyでgo.modの変更を確認します。
重要な注意事項
- セキュリティと再現性を確保するため、Docker イメージには必ず SHA256 ダイジェストを使用してください。
- dagger モジュール(
./extras/dagger/go.mod)は更新しないでください。 - Go のアップグレードによって互換性を損なう変更が生じることがあるため、十分にテストしてください。
- CLI、Control Plane、Artifact CAS など、複数のコンポーネントで Go が使用されています。