Go CLI をビルド
GitLab Runner を使って Go の CLI アプリをビルドします。
設定ファイル
.gitlab-ci.yml
cf.
下記ステージで構成します:
- ビルド
go buildでバイナリを作成します。- サンプルとして linux 向けの arm64, amd64 対応版をビルドしています。
- 複数 OS, アーキに対応する場合はそれぞれのバージョンに対してビルドしてください。
- リリース
gitlab-cliを使います。- build ジョブで作成した artifact をダウンロードし、release 時の asset に追加します。
stages:
- build
- release
variables:
MODULE: easycli # アプリのモジュール名
COMMAND: cmd/${MODULE} # バイナリの生成場所
build:
stage: build
image: golang:1.24
script:
- cd ${COMMAND}
- GOOS=linux GOARCH=arm64 go build -o ${MODULE}_${CI_COMMIT_TAG}_linux_arm64
- GOOS=linux GOARCH=amd64 go build -o ${MODULE}_${CI_COMMIT_TAG}_linux_amd64
artifacts:
paths:
- ${COMMAND}/${MODULE}_${CI_COMMIT_TAG}_*
expire_in: "10 days"
rules:
- if: $CI_COMMIT_TAG
release:
stage: release
image: registry.gitlab.com/gitlab-org/cli:latest
script:
- echo "Running the release job."
release:
tag_name: ${CI_COMMIT_TAG}
name: ${CI_COMMIT_TAG}
description: Release version ${CI_COMMIT_TAG}
assets:
links:
- name: ${MODULE}_${CI_COMMIT_TAG}_linux_arm64
url: ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/jobs/artifacts/${CI_COMMIT_TAG}/raw/${COMMAND}/${MODULE}_${CI_COMMIT_TAG}_linux_arm64?job=build
- name: ${MODULE}_${CI_COMMIT_TAG}_linux_amd64
url: ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/jobs/artifacts/${CI_COMMIT_TAG}/raw/${COMMAND}/${MODULE}_${CI_COMMIT_TAG}_linux_amd64?job=build
rules:
- if: $CI_COMMIT_TAG