内容简介:上一篇文章提到了本文不讲述 Go 的单元测试如何编写,这里直接以然后给在项目中加上构建状态图标。搞定
上一篇文章提到了 npm 的接入 travis 实现自动发布 npm 包的方法,本文主要讲述 Go 项目的使用,主要分为执行单元测试和 build 打包发步到 github release。具体 travis 的基本操作参考 上文 即可,本文只讲述不同的部分
单元测试
本文不讲述 Go 的单元测试如何编写,这里直接以 filenamify (一个合法化文件路径的库)为例子。已为 filenamify.go
编写测试文件 filenamify_test.go
。只需要在 tracis
中执行 go test -v
即可。
# https://github.com/flytam/filenamify/blob/master/.travis.yml language: go go: - 1.13.x env: - GO111MODULE=on script: go test -v 复制代码
然后给在项目中加上构建状态图标。搞定
这样,每次推送到远程,就会触发CI自动执行单元测试
发布 github release
有时候我们的 Go 项目是需要打包成可行文件直接发布到 github release 让别人下载执行的。这时候也可以使用 travis
实现,借助 travis releases
工具即可
1、新建一个 .travis.yml
文件,填入基本的 Go 配置环境
language: go go: - 1.13.x env: - GO111MODULE=on # 启用Go mod install: - go get -v 复制代码
2、编写 Makefile
在 nodejs
项目中,我们一般会配置一个 npm run test
的命令执行测试,但是 Go 是没有 npm
和 package.json
这两个东西,这时候就需要编写 Makefile
来实现了(可以把 Makefile
看作功能类型于 package.json
的东西,只是使用 make xxx
来执行), Makefile
编写可以 参考 。
以 blog-sync 为例子,这里我是需要打包全平台的可行文件,于是 Makefile
如下
GOCMD=go GOBUILD=$(GOCMD) build BINARY_NAME=bin NAME=blog-sync #mac build: CGO_ENABLED=0 $(GOBUILD) -o $(BINARY_NAME)/$(NAME)-mac # linux build-linux: CGO_ENABLED=0 GOOS=windows GOARCH=amd64 $(GOBUILD) -o $(BINARY_NAME)/$(NAME)-linux # windows build-win: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 $(GOBUILD) -o $(BINARY_NAME)/$(NAME)-win.exe # 全平台 build-all: make build make build-win make build-linux 复制代码
执行 make build-all
即可在 bin
目录下生成 3 个平台的可执行文件。
language: go go: - 1.13.x env: - GO111MODULE=on # 启用Go mod install: - go get -v before_deploy: make build-all deploy: provider: releases api_key: 自动生成的github key file_glob: true file: bin/* skip_cleanup: true on: repo: flytam/blog-sync tags: true 复制代码
3、使用 setup
初始化配置
# 已经安装travis cli travis setup releases # 按需填写,输入github账号密码,加密key,发布文件等 复制代码
再简单定制化后,最终如下配置, releases
配置可参考 文档
# https://github.com/flytam/blog-sync/blob/master/.travis.yml language: go go: - 1.13.x env: - GO111MODULE=on # 启用Go mod install: - go get -v before_deploy: make build-all # 发布前执行生成二进制文件的命令 deploy: provider: releases api_key: secure: xxxx # 使用glob匹配发布bin目录下的文件 file_glob: true file: bin/* skip_cleanup: true on: repo: flytam/blog-sync # tag才触发发布 tags: true 复制代码
4、发布
每次打tag推送到仓库,就会触发自动发布可执行文件到github release
git tag 1.0.0 git push --tags 复制代码
5、可以看到,我们的自动构建发布 release 成功了
以上所述就是小编给大家介绍的《Go项目简单接入travis ci》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 原有 Vue 项目接入 TypeScript
- SpringCloud项目接入Jaeger(下)
- vue项目接入微信JSSDK的坑
- 教你在 Node.js 项目中接入 Sign with Apple 第三方登录
- 云转码接入视频网站解决方案 express-ffmpeg接入discuz方案
- 数据接入治理平台
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。