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

我有一个 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

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


HUWWW
浏览 224回答 1
1回答

婷婷同学_

这可能很简单,但是对于特定的操作系统无法完成矩阵环境......然后只需选择本地环境变量:language: gogo:   - 1.5.1branches:   only:     - masteros:  - osx  - linuxinstall:  - if [ "$TRAVIS_OS_NAME" == "linux" ]; then        export GIMME_OS=windows;        export GIMME_ARCH=amd64;    fibefore_script:  - go get -d -v ./...script:  - go build -v ./...after_script:  - go test -v ./...before_deploy:   - ./before_deploy.sh其它的办法:language: gogo:   - 1.5.1branches:   only:     - mastermatrix:  include:    - os: linux      env: GIMME_OS=windows; GIMME_ARCH=amd64;    - os: osxbefore_script:  - go get -d -v ./...script:  - go build -v ./...after_script:  - go test -v ./...before_deploy:   - ./before_deploy.sh注意: commande:- chmod +x ./before_deploy.sh可以直接在您的存储库中完成并提交...注意:环境变量可以访问:http : //docs.travis-ci.com/user/environment-variables/#Default-Environment-Variables或调用\printenv`
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go