golang CI

golang镜像版本http://km.qutoutiao.net/pages/viewpage.action?pageId=106838487#CIdocker%E9%95%9C%E5%83%8F-Golang

可使用官方镜像,但静态检查工具需自行安装

go mod管理包相关文档http://km.qutoutiao.net/pages/viewpage.action?pageId=117437455

GOPROXY默认设置 "https://goproxy.io,https://goproxy.cn,https://mirrors.aliyun.com/goproxy/"

image: registry.qtt6.cn/ee/go:1.13.5-1

variables:
LANG: 'golang'
MOD_CACHE: "/home/work/go/pkg/mod" # cache仅支持项目目录下的文件夹,因此需要在before_script拷贝mod文件夹到MOD_CACHE,在after_script中拷回来

before_script:

  • mkdir -p mod $MOD_CACHE && rm -rf $MOD_CACHE && mv mod $MOD_CACHE

$SSH_PRIVATE_KEY私钥变量在仓库首页->settings-CI/CD-Variables里添加,请添加有依赖包仓库权限的私钥

- git config --global url."git@git.qutoutiao.net:".insteadOf "https://git.qutoutiao.net/"

- eval $(ssh-agent -s) && echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add -

定义流水线阶段

stages:

- install
# - test
- build

下载依赖包

install pkg:
stage: install
tags:

- k8s-qa  

cache:

paths:
  - mod

script:

- go mod tidy -v && go mod download
- cp -rf $MOD_CACHE mod
- chmod -R 777 mod

执行代码静态检查,检查规范 https://github.com/golangci/golangci-lint v1.21.0

lint:

stage: test

tags:

- k8s-qa

cache:

paths:

- mod

policy: pull

allow_failure: true

script:

- ci:execute golint

执行UT

ut:

stage: test

tags:

- k8s-qa

cache:

paths:

- mod

policy: pull

script:

- echo "执行ut go test ./..."

构建制品到制品库

cd_app_id为应用名称用于生成制品到制品库,可到http://paas.qutoutiao.net/里查找应用名称

ci:execute artifacts用于制品上传,不能删除

build:
stage: build
variables:

cd_app_id: "******填写paas平台里的应用名称******"
# 下面两个参数是用于容器
# BASE_IMAGE: "registry.qtt6.cn/paas-dev/centos:7-nscd"
# RUN_COMMAND: "******填写启动命令******"

tags:

- k8s-qa

cache:

paths:
  - mod
policy: pull

script:

# 如果是基于qms框架开发的应用,可以使用以下构建命令
# - export PROJECT_NAME=${cd_app_id} && make artifacts_mod

- ci:execute artifacts
# # 如果是容器请使用如下方法
# - ci:execute artifacts-docker

发表新评论