mcpField
U
upgrading-golang

upgrading-golang

github.com/chainloop-dev開発60744 回インストール今日更新
リポジトリ

upgrading-golang について

Chainloopの各コンポーネントでGoのバージョンを更新する手順を案内するスキルです。モジュールやDockerイメージの更新、任意のAtlas更新、プロジェクトの検証を扱います。

主な機能

  1. 01Goと任意のAtlasの目標バージョン確認
  2. 02GoディレクティブとDockerイメージのダイジェスト更新
  3. 03ドキュメント内のバージョン表記更新
  4. 04任意のAtlasイメージとCLIの更新
  5. 05テスト、lint、最終確認の実行

活用シーン

  1. 01Chainloopの各コンポーネントでGoを更新する
  2. 02固定したGo Dockerイメージを更新する
  3. 03Atlasのマイグレーションイメージも更新する
  4. 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. 対象バージョンの確認

ユーザーに以下を尋ねます。

  1. アップグレード先の Go バージョン(例:「1.25.3」)
  2. 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 が使用されています。

コメント