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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Cobra 기초
- 플래그와 영속 플래그
- 하위 명령과 명령 그룹
- CLI 도구 배포