为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
HUWWW 2021-11-15 16:10:36
我有一个 Go 项目,我想用 Travis-CI 构建它并将其部署到特定的提供者。我熟悉Gimme 项目,它将使用交叉编译来做到这一点。但是因为 Travis 已经支持 linux 和 osx,所以我只需要在 Windows 构建中使用这个功能。当然,最大的动机是避免交叉编译运行时错误,因为它有很多。我的问题是如何在同一个 .travis.yml 文件中创建不同的构建流程:本机 linux/os 构建(带有“os”部分)。使用 Gimmme 进行 Windows 编译第一个选项的 .travis.yml 文件如下所示:language: gogo:   - 1.5.1branches:   only:     - masteros:    - osx    - linuxbefore_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: gogo:   - 1.5.1branches:   only:     - masterenv:    - GIMME_OS=windows GIMME_ARCH=amd64before_script:    - go get -d -v ./...script:    - go build -v ./...    # - go test -v ./...before_deploy:   -  chmod +x ./before_deploy.sh  - ./before_deploy.sh有没有一种很好的干净的方法来将这两者结合起来(使用环境变量或任何其他疯狂的想法)?
查看完整描述

1 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

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


然后只需选择本地环境变量:


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

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


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


查看完整回答
反对 回复 2021-11-15
  • 1 回答
  • 0 关注
  • 214 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信