跳至內容
原始碼建置

原始碼建置

當您需要自訂修補、開發用二進位檔或打包作業時,從原始碼建置。

前置需求

  • Go,版本如 mise.tomlgo.mod 中所宣告。
  • 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主機架構目標架構。
GOARM空白ARM 變體,如 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