0Pricing
Go Academy · 강의

CLI 도구 배포

크로스 컴파일, goreleaser 및 homebrew 탭

CLI 도구 배포은(는) CoddyKit의 무료 Go Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 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 탭

Homebrew 수식을 배포하면 macOS/Linux 사용자가 brew install로 설치할 수 있습니다. GoReleaser는 수식을 자동으로 생성할 수 있습니다.

GitHub Actions CI/CD

GitHub Action을 사용하여 태그가 푸시될 때마다 빌드하고 릴리스합니다. 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를 사용하여 정적 파일(templates, 구성 스키마)을 실행 파일에 포함하면 실행 파일을 완전히 독립적으로 만들 수 있습니다.

//go:embed templates/*
var templates embed.FS

버전이 지정된 모듈

Go 모듈 버전 관리 규칙에 따라 CLI 모듈을 배포합니다. v2+에서는 가져오기 경로에 /v2를 포함해야 하며 go.mod 모듈 경로도 이에 맞아야 합니다.

하위 호환성

semver를 따르십시오. 마이너 릴리스에서는 플래그를 추가할 수 있지만 기존 플래그를 삭제하거나 이름을 바꾸면 안 됩니다. 호환성을 깨는 변경에는 주 버전 증가가 필요합니다.

빠른 확인

macOS 컴퓨터에서 Linux용 정적 Go 실행 파일을 어떻게 빌드하나요?

복습: CLI 도구 배포

핵심 사항:

  • GOOS/GOARCH로 크로스 컴파일하고, 정적 실행 파일에는 CGO_ENABLED=0을 사용합니다
  • 자동화된 릴리스 파이프라인에는 GoReleaser를 사용합니다
  • -ldflags "-X main.version=..."으로 버전을 주입합니다
  • 포함된 에셋을 갖춘 독립 실행 파일에는 go:embed를 사용합니다

자주 묻는 질문

“CLI 도구 배포” 강의는 무료인가요?

네 — “CLI 도구 배포” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Go Academy 강의 전체를 잠금 해제할 수 있습니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“CLI 도구 배포”에서 뭘 배우나요?

크로스 컴파일, goreleaser 및 homebrew 탭 브라우저에서 직접 실행하는 실습 코드로 Go Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Go Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Go Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“CLI 도구 배포” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Go Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Go Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Cobra 기초
  2. 플래그와 영속 플래그
  3. 하위 명령과 명령 그룹
  4. CLI 도구 배포
← Go Academy(으)로 돌아가기