gpt4 book ai didi

go - 特拉维斯 CI + 去 : creating a specific build flow for different OS

转载 作者:IT王子 更新时间:2023-10-29 01:10:30 25 4
gpt4 key购买 nike

我有一个 Go 项目,我想使用 Travis-CI 构建并将其部署到特定的提供商。我熟悉Gimme project这将使用交叉编译来做到这一点。但是因为 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

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

最佳答案

它可能很简单,但矩阵环境不能针对特定操作系统完成......

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

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`

关于go - 特拉维斯 CI + 去 : creating a specific build flow for different OS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33111375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com