Git/GitLab
GitLab CI Golang 배포
김 정출
2024. 7. 8. 17:18
GitLab CI Golang
GitLab CI 배포를 진행해보겠습니다.
Repository
로 이동하여 Build
에 Pipelines
를 클릭합니다.
Template
은 Golang으로 진행하겠습니다.
Template이 다음과 같이 생성됩니다.
- 각 Pipline의 Jobs 설정
- Example은 test → build → deploy의 Jobs들이 설정되어 있습니다.
- Commit message 입력
- Push 될 Branch 선택
다음을 Edit를 수정합니다.
- syntaxcheck
- go fmt: Formatting
- go vet:
- Unreachable code
- Shadowed variables
- bad syntax for struct tag value
- no args in Error Call
- Mutex Lock
- UnSafePointer
- build
- go build
# This file is a template, and might need editing before it works on your project.
# You can copy and paste this template into a new `.gitlab-ci.yml` file.
# You should not add this template to an existing `.gitlab-ci.yml` file by using the `include:` keyword.
#
# To contribute improvements to CI/CD templates, please follow the Development guide at:
# https://docs.gitlab.com/ee/development/cicd/templates.html
# This specific template is located at:
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Go.gitlab-ci.yml
image: golang:latest
variables:
REPO_NAME: gitlab.com/fancian/map-api-server
before_script:
- echo "start job at :" `$date`
- echo "workspace is:" `$pwd`
after_script:
- echo "done job at :" `$date`
stages:
- check
- build
syntaxcheck:
stage: check
script:
- mkdir -p $GOPATH/src/$(dirname $REPO_NAME)
- ln -svf $CI_PROJECT_DIR $GOPATH/src/$REPO_NAME
- cd $GOPATH/src/$REPO_NAME
- go fmt
- go vet
compile:
stage: build
script:
- GOOS=linux GOARCH=amd64 go build -o map-api-server
only:
refs:
- main
Validate
탭 메뉴를 클릭하고 Validation Check를 진행합니다.
Visualize
탭 메뉴를 클릭하여 Pipeline을 확인해봅니다.
확인 이후 Commit Changes
를 클릭합니다.
Pipeline이 활성화 됩니다.
Main branch에 Merge 테스트 해보겠습니다.
해당 Pipeline 버튼을 클릭합니다. check stage를 클릭해 확인해봅니다.
syntax check가 진행됩니다.
완료가 되면 compile stage가 이어서 진행됩니다.
이를 통해 Main Branch에 Merge가 됨에 따라 build test를 진행하게 됩니다.
Main의 Sub branch를 여러 개 두어 build와 production deploy를 각 브랜치에 설정이 가능해집니다.