基於 gitlab-ci 構建 golang 項目 CI 環境

在 github 上託管 go 開源項目,CI 使用 travis 的服務感受很方便,幾乎不須要額外的設置,可是涉及到公司的項目,經過 gitlab-ci 來跑 golang 項目的 CI,須要一點技巧。git

思路大體是這樣:github

  1. 建立項目在 GOPATH 中的目錄的 symbolic link ,指向 gitlab-runner 在該項目上執行 CI 時的工做目錄
  2. 切換到這個連接目錄,執行每一個 stage 的任務

具體的 .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

  1. ln命令必定要加上 -f選項覆蓋以前建立的link文件,避免報錯退出CI。
  2. 本項目 vendor 目錄裏的代碼已經提交到遠程倉庫中。

ref:ui

相關文章
相關標籤/搜索