博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于 gitlab-ci 构建 golang 项目 CI 环境
阅读量:7146 次
发布时间:2019-06-29

本文共 882 字,大约阅读时间需要 2 分钟。

在 github 上托管 go 开源项目,CI 使用 travis 的服务感觉很方便,几乎不需要额外的设置,但是涉及到公司的项目,通过 gitlab-ci 来跑 golang 项目的 CI,需要一点技巧。

思路大致是这样:

  1. 创建项目在 GOPATH 中的目录的 symbolic link ,指向 gitlab-runner 在该项目上执行 CI 时的工作目录
  2. 切换到这个链接目录,执行每个 stage 的任务

具体的 .gitlab-ci.yaml 文件内容如下:

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_PATHstages:  - build  - test  - releasebuild:  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

这里注意两个问题

  1. ln命令一定要加上 -f选项覆盖之前创建的link文件,避免报错退出CI。
  2. 本项目 vendor 目录里的代码已经提交到远程仓库中。

ref:

转载地址:http://bvwgl.baihongyu.com/

你可能感兴趣的文章
hibernate事务配置Aop aop:advisor模式
查看>>
XSS攻击及防御
查看>>
oracle插入
查看>>
在Ubuntu上为Android系统内置C可执行程序测试Linux内核驱动程序(老罗学习笔记2)...
查看>>
android开发,assets下面的资源文件不会变化/改动
查看>>
Kinect开发学习笔记之(一)Kinect介绍和应用
查看>>
[LeetCode] 3Sum Closest 最近三数之和
查看>>
如何解决严重拖延症
查看>>
C#操作 iis启用父目录
查看>>
JS正则表达式验证数字非常全
查看>>
Android AES加密算法,现在实际上
查看>>
机器学习中的正则化和范数规则化
查看>>
C#修改文件或文件夹的权限,为指定用户、用户组添加完全控制权限
查看>>
Datazen自定义地图
查看>>
Calculate CRC32 as in STM32 hardware (EWARM v.5.50 and later)
查看>>
Android Sdk 国内镜像下载地址
查看>>
strcmp的源码实现
查看>>
Java多线程7:死锁
查看>>
概率图形模型(PGM)学习笔记(四)-贝叶斯网络-伯努利贝叶斯-贝叶斯多项式...
查看>>
worker_pool的例子
查看>>