Travis CI + Go:为不同的操作系统创建特定的构建流程

Shikloshi:

我有一个Go项目,我想使用Travis-CI构建并将其部署到特定的提供程序。我熟悉Gimme项目,该项目将使用交叉编译来实现。但是因为Travis已经支持linux和osx,所以我只需要Windows构建此功能。

当然,最大的动机是避免交叉编译运行时错误,因为它有很多错误。

我的问题是如何在同一.travis.yml文件中创建不同的构建流程:

  1. 本机linux / os构建(带有“ os”部分)。
  2. 使用Gimmme进行Windows编译

第一个选项的.travis.yml文件如下所示:

language: go

go: 
  - 1.5.1

branches: 
  only: 
    - master

os:
    - osx
    - linux


before_script:
    - go get -d -v ./...

script:
    - go build -v ./...
    # - go test -v ./...

before_deploy: 
  -  chmod +x ./before_deploy.sh
  - ./before_deploy.sh

第二个选项的.travis.yml文件如下所示:

language: go

go: 
  - 1.5.1

branches: 
  only: 
    - master

env:
    - GIMME_OS=windows GIMME_ARCH=amd64


before_script:
    - go get -d -v ./...

script:
    - go build -v ./...
    # - go test -v ./...

before_deploy: 
  -  chmod +x ./before_deploy.sh
  - ./before_deploy.sh

有没有一种很好的干净方法可以将这两者结合在一起(与环境变量或任何其他疯狂的想法结合在一起)?

Heero Yui:

这可能很简单,但是无法为特定的操作系统完成矩阵环境...

然后只需使用本地环境变量进行选择:

language: go
go: 
  - 1.5.1
branches: 
  only: 
    - master
os:
  - osx
  - linux
install:
  - if [ "$TRAVIS_OS_NAME" == "linux" ]; then
        export GIMME_OS=windows;
        export GIMME_ARCH=amd64;
    fi
before_script:
  - go get -d -v ./...
script:
  - go build -v ./...
after_script:
  - go test -v ./...
before_deploy: 
  - ./before_deploy.sh

其他方式:

language: go
go: 
  - 1.5.1
branches: 
  only: 
    - master
matrix:
  include:
    - os: linux
      env: GIMME_OS=windows; GIMME_ARCH=amd64;
    - os: osx
before_script:
  - go get -d -v ./...
script:
  - go build -v ./...
after_script:
  - go test -v ./...
before_deploy: 
  - ./before_deploy.sh

注意:命令:- chmod +x ./before_deploy.sh可以直接在您的存储库中完成并提交...

注意:可以访问以下环境变量:http : //docs.travis-ci.com/user/environment-variables/#Default-Environment-Variables 或调用\ printenv`

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章