前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go项目接入travis

Go项目接入travis

作者头像
flytam
发布2020-03-24 18:14:51
5740
发布2020-03-24 18:14:51
举报

上一篇文章提到了npm的接入 travis 实现自动发布 npm 包的方法,本文主要讲述 Go 项目的使用,主要分为执行单元测试和 build 打包发步到 github release。具体 travis 的基本操作参考上文即可,本文只讲述不同的部分

单元测试

本文不讲述 Go 的单元测试如何编写,这里直接以filenamify(一个合法化文件路径的库)为例子。已为filenamify.go编写测试文件filenamify_test.go。只需要在tracis中执行go test -v即可。

代码语言:javascript
复制
# 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 配置环境

代码语言:javascript
复制
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如下

代码语言:javascript
复制
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 个平台的可执行文件。

代码语言:javascript
复制
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初始化配置

代码语言:javascript
复制
# 已经安装travis cli
travis setup releases
# 按需填写,输入github账号密码,加密key,发布文件等

再简单定制化后,最终如下配置,releases配置可参考文档

代码语言:javascript
复制
# 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

代码语言:javascript
复制
git tag 1.0.0
git push --tags

5、可以看到,我们的自动构建发布 release 成功了

在这里插入图片描述
在这里插入图片描述
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 单元测试
  • 发布 github release
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com