我有一个Go项目,我想使用Travis-CI构建并将其部署到特定的提供程序。我熟悉Gimme项目,该项目将使用交叉编译来实现。但是因为Travis已经支持linux和osx,所以我只需要Windows构建此功能。
当然,最大的动机是避免交叉编译运行时错误,因为它有很多错误。
我的问题是如何在同一.travis.yml文件中创建不同的构建流程:
第一个选项的.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
有没有一种很好的干净方法可以将这两者结合在一起(与环境变量或任何其他疯狂的想法结合在一起)?
这可能很简单,但是无法为特定的操作系统完成矩阵环境...
然后只需使用本地环境变量进行选择:
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] 删除。
我来说两句