在 github 上託管 go 開源項目,CI 使用 travis 的服務感受很方便,幾乎不須要額外的設置,可是涉及到公司的項目,經過 gitlab-ci 來跑 golang 項目的 CI,須要一點技巧。git
思路大體是這樣:github
具體的 .gitlab-ci.yaml
文件內容以下:golang
before_script: - export GO_PROJECT_NAMESPACE="$GOPATH/src/gitexample.com/$CI_PROJECT_NAMESPACE" - echo $GO_PROJECT_NAMESPACE - mkdir -p $GO_PROJECT_NAMESPACE - ln -srf $(pwd) $GO_PROJECT_NAMESPACE - export GO_PROJECT_PATH="$GO_PROJECT_NAMESPACE/$CI_PROJECT_NAME" - echo $GO_PROJECT_PATH - cd $GO_PROJECT_PATH stages: - build - test - release build: stage: build script: - go build test: stage: test script: - go test -v ./... release: stage: release script: - make goreleaser ...... when: on_success allow_failure: true only: - tags
這裏注意兩個問題gitlab
ln
命令必定要加上 -f
選項覆蓋以前建立的link文件,避免報錯退出CI。ref:ui