CLIツールの配布
クロスコンパイル、goreleaser、Homebrew tap
「CLIツールの配布」はCoddyKit上の無料Go Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはGo Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Go Academyコースには全4レッスンが含まれています。
ローカル配布のための go install
go install github.com/user/tool@latest はバイナリをコンパイルし、$GOPATH/bin にインストールします。ユーザー側に Go のインストールが必要です。
クロスコンパイル
Go は標準でクロスコンパイルに対応しています。GOOS と GOARCH を設定して、異なるオペレーティングシステムを対象にします:
GOOS=linux GOARCH=amd64 go build -o myapp-linux-amd64
GOOS=darwin GOARCH=arm64 go build -o myapp-darwin-arm64
GOOS=windows GOARCH=amd64 go build -o myapp-windows-amd64.exeリリース用のビルドフラグ
デバッグ情報を削除し、CGO を無効にして、より小さな静的バイナリを作成します:
CGO_ENABLED=0 go build -ldflags="-s -w" -o myappバージョン情報の埋め込み
ldflags を使って、ビルド時の情報を注入します:
var version = "dev"
var commit = "none"
// Build: go build -ldflags="-X main.version=1.2.3 -X main.commit=abc1234"GoReleaser
GoReleaser は、クロスコンパイル、パッケージ化(tar.gz、.zip)、チェックサムの生成、GitHub へのリリースのアップロードを自動化します。.goreleaser.yaml で設定します。
# .goreleaser.yaml
builds:
- env: [CGO_ENABLED=0]
goos: [linux, darwin, windows]
goarch: [amd64, arm64]Homebrew tap
Homebrew の formula を公開すると、macOS/Linux ユーザーは brew install でインストールできます。GoReleaser で formula を自動生成することもできます。
GitHub Actions CI/CD
GitHub Action を使って、タグが push されるたびにビルドとリリースを行います。GoReleaser には公式の GitHub Action があります。
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v5
with: { version: latest, args: release --clean }
env: { GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" }Docker による配布
コンテナを好むユーザー向けに、CLI を Docker イメージとしてパッケージ化します。マルチステージビルドを使って、最終イメージを最小限に抑えます。
FROM golang:1.22 AS build
WORKDIR /app
COPY . .
RUN CGO_ENABLED=0 go build -o myapp
FROM scratch
COPY --from=build /app/myapp /myapp
ENTRYPOINT ["/myapp"]アセット用の go:embed
//go:embed を使って静的ファイル(テンプレート、構成スキーマ)をバイナリに埋め込み、バイナリを完全に自己完結させます。
//go:embed templates/*
var templates embed.FSバージョン付きモジュール
Go モジュールのバージョニングに従って CLI モジュールを公開します。v2 以降では、インポートパスに /v2 を含め、go.mod の module パスも一致させる必要があります。
後方互換性
semver に従ってください。マイナーリリースではフラグを追加できますが、既存のフラグを削除または名前変更してはいけません。互換性を壊す変更にはメジャーバージョンの更新が必要です。
クイックチェック
macOS のマシン上で Linux 用の静的 Go バイナリをビルドするには、どうすればよいですか
振り返り: CLI ツールの配布
要点:
- GOOS/GOARCH でクロスコンパイルし、静的バイナリには CGO_ENABLED=0 を使用します
- リリースパイプラインの自動化には GoReleaser を使用します
- -ldflags "-X main.version=..." でバージョンを注入します
- go:embed でアセットを埋め込み、自己完結型バイナリを作成します
よくある質問
「CLIツールの配布」レッスンは無料ですか?
はい。「CLIツールの配布」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Go Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Go Academyコースには全4レッスンが含まれています。
「CLIツールの配布」で何を学びますか?
クロスコンパイル、goreleaser、Homebrew tap ブラウザで直接実行するハンズオンコードでGo Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Go Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのGo Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「CLIツールの配布」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このGo Academyレッスンでコードを書いて実行できますか?
はい。すべてのGo Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Cobraの基本
- フラグと永続フラグ
- サブコマンドとコマンドグループ
- CLIツールの配布