gpt4 book ai didi

linux - 特拉维斯 : define OS specific environment variables

转载 作者:IT王子 更新时间:2023-10-29 00:15:18 27 4
gpt4 key购买 nike

我在我的项目中使用 Go lang 并使用 Travis-CI 来构建它。

我想在每个操作系统(OSX、Linux、Windows)上构建它,所以我想使用 GIMME_OSGIMME_ARCH 环境变量(from GIMME project)但是问题是 Darwin 不足以支持我的项目,所以我必须在 mac 上本地构建我的项目。

我的方法是将 OSX 操作系统构建为 VM(travis 直接从 .travis.yml 文件支持这一点)并使用交叉编译 (GIMME) linux64、linux386 和 windows 在 linux 上构建。

现在,每次我定义一个环境变量时,它都会为我的构建矩阵创建一个新列。我想要仅在 linux 构建部分中保留的环境变量。

现在我的 .travis.yml 看起来像这样:

language: go

go:
- 1.4.2

os:
- osx
- linux

env:
- GIMME_OS=windows GIMME_ARCH=amd64
- GIMME_OS=linux GIMME_ARCH=amd64
- GIMME_OS=linux GIMME_ARCH=386
- GIMME_OS=darwin GIMME_ARCH=386

matrix:
exclude:
os: osx
env: GIMME_OS=darwin GIMME_ARCH=386

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

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

这实际上创建了 8 个构建(每个操作系统的每个环境变量行)有没有一种方法可以定义仅与 .travis.yml 文件中的某些部分(特别是操作系统部分)相关的环境变量

最佳答案

您可以使用 $TRAVIS_OS_NAME 代替自己定义操作系统名称,它可以是 osx 或 linux。 Docs然后,您的“env”部分将简化为只有两行用于 arch。

一般来说,无法从 yml 中定义操作系统相关变量。解决此问题的一个好方法是在您的存储库中包含 .travis.${TRAVIS_OS_NAME}.env 文件,并在第一个构建步骤需要它之前获取这些文件。

关于linux - 特拉维斯 : define OS specific environment variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33125796/

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