コンテンツにスキップ

ソースビルド

カスタムパッチ、開発用バイナリ、パッケージング作業が必要な場合はソースからビルドします。

前提条件

  • mise.tomlgo.mod で宣言されているバージョンの Go。
  • バージョンスタンプとリポジトリ操作用の Git。

プロジェクトツールチェーンのインストールには mise を使用します:

mise install

スクリプトでのビルド

ビルドスクリプトは出力を dist/<os>_<arch>/ に書き込み、sha256sum が利用可能な場合はチェックサムを生成します:

sh scripts/build/binaries.sh

Linux では以下をビルドします:

  • composia
  • composia-controller
  • composia-agent

macOS と Windows では CLI のみをビルドします。

ビルド変数

変数デフォルト目的
VERSIONgit describe --tags --always --dirtyバイナリに埋め込まれるバージョン。
OUTPUT_DIRdist出力ディレクトリ。
GOOSホスト OSターゲット OS。
GOARCHホストアーキテクチャターゲットアーキテクチャ。
GOARMARM バリアント(例: 7)。
CGO_ENABLED0静的クロスビルド。

例:

GOOS=linux GOARCH=arm64 sh scripts/build/binaries.sh
GOOS=linux GOARCH=arm GOARM=7 sh scripts/build/binaries.sh

手動 Go ビルド

LDFLAGS="-s -w -X forgejo.alexma.top/alexma233/composia/internal/version.Value=$(git describe --tags --always --dirty)"

CGO_ENABLED=0 go build -trimpath -ldflags "$LDFLAGS" -o composia ./cmd/composia
CGO_ENABLED=0 go build -trimpath -ldflags "$LDFLAGS" -o composia-controller ./cmd/composia-controller
CGO_ENABLED=0 go build -trimpath -ldflags "$LDFLAGS" -o composia-agent ./cmd/composia-agent

コンテナイメージのビルド

ルートの Dockerfile には各ランタイム向けのターゲットがあります:

docker build --target cli -t composia-cli:local .
docker build --target controller -t composia-controller:local .
docker build --target agent -t composia-agent:local .
docker build --target dev -t composia-dev:local .

dev イメージには Go、Air、Docker CLI、Docker Buildx、Docker Compose、Git が含まれています。

最終更新日 • Renovate Bot