CI

Travis-CI & Go

Posted by API Caller on April 26, 2019

以一个 go 可执行文件为例, 学一下持续集成构建, 自动发布 release.

折腾了一下发现出奇地简单, 配置文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
language: go

# 注意 1.10 就不能只写数字, 要用引号包起来, 否则会被视为 1.1
go:
  - 1.12.2


# 编译脚本
script:
  - sh build.sh

# 部署
deploy:
  # 部署到GitHub Release
  provider: releases
  # 在 github 生成 token
  api_key: ${GITHUB_OAUTH_TOKEN}
  # 多个平台多个文件
  file_glob: true
  file: builds/*
  # 避免 Travis CI 在部署之前清空生成的文件
  skip_cleanup: true
  # 发布时机
  on:
    # tags 设置为 true 表示只有在有 tag 的情况下才部署
    tags: true

build.sh 长这样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash

CGO_ENABLED=0

GOOS=linux
GOARCH=amd64
go build -x -v -ldflags "-s -w" -o builds/linux_amd64

GOOS=linux
GOARCH=arm
go build -x -v -ldflags "-s -w" -o builds/linux_arm

GOOS=darwin
GOARCH=amd64
go build -x -v -ldflags "-s -w" -o builds/darwin_amd64

GOOS=windows
GOARCH=amd64
go build -x -v -ldflags "-s -w" -o builds/windows_amd64.exe

GOOS=windows
GOARCH=386
go build -x -v -ldflags "-s -w" -o builds/windows_386.exe

echo "build done!"
ls builds

然后去 github 申请一个 token, 填到 travis 的 settings 的环境变量中, 敏感信息千万不要勾选在日志中显示.

好像没了…

那…以后加点戏吧, 发布完让它通知我, 怕是要读文档了. Github Actions 来了, 告辞.