Go 언어에서 실행, 빌드, 배포와 관련된 주요 명령어와 옵션들을 정리해보겠습니다.
1. 실행 (Execution)
Go 프로그램을 실행하는 명령어는
go run
입니다.go run
은 컴파일과 실행을 동시에 처리하며, 별도의 실행 파일을 생성하지 않습니다.
go run
명령어
go run <파일명>
Go 파일을 컴파일하고 바로 실행합니다. 파일을 하나만 실행할 때 사용합니다.go run <파일1> <파일2>
여러 개의 Go 파일을 동시에 실행할 수 있습니다.go run -v <파일명>
실행 시 자세한 정보를 출력합니다. 디버깅용으로 유용합니다.go run -race <파일명>
경쟁 상태(race condition)를 검사하면서 프로그램을 실행합니다. 동시성 문제를 확인하는 데 유용합니다.2. 빌드 (Build)
Go 프로그램을 빌드하여 실행 파일을 생성하려면
go build
명령어를 사용합니다.
go build
명령어
go build
현재 디렉토리의 Go 파일을 컴파일하여 실행 파일을 생성합니다. 실행 파일의 이름은 기본적으로 디렉토리 이름과 동일합니다.go build <파일명>
특정 Go 파일을 컴파일하여 실행 파일을 생성합니다.go build -o <출력파일명>
출력되는 실행 파일의 이름을 지정할 수 있습니다. 기본적으로는 디렉토리 이름과 동일한 이름의 파일이 생성됩니다.go build -v
빌드 시 진행 상황에 대한 자세한 정보를 출력합니다.go build -a
모든 패키지를 다시 빌드합니다. 종속 패키지나 라이브러리가 변경되었을 때 유용합니다.go build -x
빌드 과정에서 실행되는 명령들을 출력합니다. 컴파일 과정에서 어떤 명령이 실행되는지 확인할 수 있습니다.3. 배포 (Deployment)
Go에서 배포는 주로 빌드된 실행 파일을 다른 환경에 배포하는 과정을 말합니다. Go는 크로스 컴파일을 지원하여 다른 운영 체제나 아키텍처에 맞는 실행 파일을 쉽게 만들 수 있습니다.
크로스 컴파일을 위한
go build
명령어
GOOS
와GOARCH
환경 변수 사용
Go는 기본적으로 현재 시스템의 운영 체제(OS)와 아키텍처(ARCH)에 맞는 실행 파일을 생성합니다. 크로스 컴파일을 통해 다른 시스템용 실행 파일을 만들 수 있습니다.
예를 들어, Windows 용 실행 파일을 만들려면:기타 주요 환경 변수:
- GOOS: 운영 체제 (예:
linux
,windows
,darwin
(macOS),freebsd
)- GOARCH: 아키텍처 (예:
amd64
,386
,arm
,arm64
)GOOS=linux GOARCH=amd64 go build -o myprogram main.go
리눅스용 64비트 실행 파일을 빌드합니다.GOOS=darwin GOARCH=amd64 go build -o myprogram main.go
macOS용 64비트 실행 파일을 빌드합니다.배포 시에 주의할 점:
- 의존성 관리: Go 모듈(
go.mod
)을 사용하여 의존성을 명확하게 관리합니다.- go mod tidy: 모듈을 정리하고, 필요한 의존성을 자동으로 추가하거나 제거합니다.
컨테이너 배포 (Docker): Go 프로그램은 독립적인 실행 파일로 빌드되기 때문에 Docker와 같은 컨테이너 환경에서 실행하기 매우 유리합니다. 예를 들어, Dockerfile을 사용하여 Go 애플리케이션을 컨테이너화할 수 있습니다.
CI/CD 통합: Go 프로젝트는 GitHub Actions, GitLab CI, Jenkins 등과 같은 CI/CD 툴과 통합하여 자동 빌드 및 배포를 할 수 있습니다.
예시: 전체 워크플로우
빌드:
크로스 컴파일 (Linux용):
배포:
- 생성된
myprogram
을 서버나 클라우드 환경에 배포합니다.- Docker와 CI/CD 파이프라인을 사용하여 자동 배포를 설정할 수도 있습니다.
이렇게 Go 언어에서 실행, 빌드, 배포 관련 명령어와 옵션을 활용하여 효율적인 개발과 배포 작업을 할 수 있습니다.