Go项目简单接入travis ci

栏目: IT技术 · 发布时间: 4年前

内容简介:上一篇文章提到了本文不讲述 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
复制代码

然后给在项目中加上构建状态图标。搞定

Go项目简单接入travis ci
Go项目简单接入travis ci

这样,每次推送到远程,就会触发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 是没有 npmpackage.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

以上所述就是小编给大家介绍的《Go项目简单接入travis ci》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

伏牛传

伏牛传

张天一 / 机械工业出版社 / 2016-5 / 39.00元

编辑推荐: 伏牛堂创始人张天一独家揭秘 社群品牌运营背后的规律和逻辑 90后创业者张天一白手起家,在伏牛堂创立一年之际,已是京城大众点评口碑最佳湖南牛肉粉店、获得四轮数千万投资,他是如何做到的? 餐饮品牌伏牛堂如何建设20万人的青年人生活社群 “霸蛮社”,并快速成为知名品牌? 内容推荐: 《伏牛传:一个社群品牌的内部运营笔记》是一本餐饮社群品牌的内部运营笔记,90后创......一起来看看 《伏牛传》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器