Go项目简单接入travis ci

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

内容简介:上一篇文章提到了本文不讲述 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 是没有 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

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

查看所有标签

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

高性能网站建设进阶指南

高性能网站建设进阶指南

Steve Souders / 口碑网前端团队 / 电子工业出版社 / 2010年4月 / 49.80元

性能是任何一个网站成功的关键,然而,如今日益丰富的内容和大量使用Ajax的Web应用程序已迫使浏览器达到其处理能力的极限。Steve Souders是Google Web性能布道者和前Yahoo!首席性能工程师,他在本书中提供了宝贵的技术来帮助你优化网站性能。 Souders的上一本畅销书《高性能网站建设指南》(High Performance Web Sites)震惊了Web开发界,它揭示......一起来看看 《高性能网站建设进阶指南》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具