如何使用TravisCI从多个构建矩阵创建github版本?

时间:2017-05-06 19:24:09

标签: go travis-ci

我已经设置了一个简单的go存储库并按以下方式配置了TravisCI

language: go

go:
  - 1.8.x
  - master

gobuild_args: -ldflags "-X main.Version=${TRAVIS_TAG} -X main.buildTime=`date -u '+%Y-%m-%d_%I:%M:%S%p'` -X main.commitId=${TRAVIS_COMMIT}"

env:
  - GOOS=linux GOARCH=amd64
  - GOOS=windows GOARCH=amd64

after_success:
  - ./build.sh

matrix:
  allow_failures:
  - go: master

这将基本上在TravisCI中创建4个不同的版本。这非常适合构建一个交叉编译项目,我可以单独构建windows和linux二进制文件。

我一直在努力做的是在这些版本中生成的所有二进制文件中在Github中创建一个单独版本?

TravisCI文档说它们支持发布,但是如何处理这种情况却非常模糊。

  • 不要在不同的虚拟服务器上运行所有构建?如果是这样,我如何在每个
  • 中指定文件
  • 如果我设置了一个版本,它会针对每个版本运行吗?如何使用github,它是否会因为尝试多次创建发布而失败?

有人试过这个吗?

1 个答案:

答案 0 :(得分:0)

由于您使用的是Golang,请查看ghr

我已将它与CircleCI一起使用 - 它很简单:

ghr -t $GITHUB_TOKEN -u $CIRCLE_PROJECT_USERNAME -r $CIRCLE_PROJECT_REPONAME v1.0.$CIRCLE_BUILD_NUM $CIRCLE_ARTIFACTS/ || true

WHERE ...

$GITHUB_TOKEN是用于发布文件的github token。我相信你需要回购阅读和用户访问权。

$CIRCLE_PROJECT_USERNAME是github用户

$CIRCLE_PROJECT_REPONAME是您在Github上的存储库名称

$CIRCLE_BUILD_NUM是CircleCI给出的内部版本号(我喜欢将它用作点版本以匹配发布版本和版本版本)

$CIRCLE_ARTIFACTS是CircleCI上的构建工件路径

最后的|| true确保即使创建发布和上传文件失败,我也不会对整个构建失败。