Go项目简单接入travis ci
source link: https://studygolang.com/articles/27390
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
上一篇文章提到了 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 成功了
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK