LoginSignup
5
1

More than 5 years have passed since last update.

Travis CI で複数環境でテストしたあとビルドプロセスは特定の環境で行いたい時のTips

Last updated at Posted at 2016-02-08

複数のバージョンでテストしたあとテストをパスしたら特定の環境でビルドしたいケースがあるかと思いますが、そんな時のTipsです。

例えば、下記のようなパターンで、テストはgolangのversionとBuild osをマトリックスしたパターン。このパターンでは3x3=9つのパターンでテストが実施されます。

.travis.yml
language: go
go:
  - 1.4.3
  - 1.5.3
  - tip
env:
  global:
    - BUILD_GOARCH=amd64
  matrix:
    - BUILD_GOOS=linux
    - BUILD_GOOS=darwin
    - BUILD_GOOS=windows
install:
  - go get golang.org/x/tools/cmd/vet
  - go get -v github.com/zquestz/s
script:
  - go build
  - go fmt ./...
  - go vet ./...
  - go test -i -race ./...
  - go test -v -race ./...

この後、リリース用にBuildしたいとおもうと、普通は下記のようにafter_script:を書いて、deploy:でリリースするか思います。

after_script:

deploy:
  provider: releases
  api_key: "GITHUB OAUTH TOKEN"
  file: "FILE TO UPLOAD"
  skip_cleanup: true
  on:
    tags: true

ただ、これだと9つのマトリックス全てで実行されてしまい、9回deployされてしまいます。これを防ぐには、あまり綺麗とは言えませんが、Travis内の環境変数を取得して、シェルスクリプト内で判断するのが良さそうです。

例えば、go version 1.5.3、BUILD_GOOS=linux gitのtagありで実行させる場合、下記のように書くとよいです。

.travis.yml
after_script:
- if [ "$TRAVIS_GO_VERSION" = "1.5.3" ] && [ "$BUILD_GOOS" = "linux" ] && [ "$TRAVIS_TAG" != "" ]; then go get github.com/inconshreveable/mousetrap; fi

TravisCI内で取れる環境変数は、こちらにまとまっています。

参考

zquestz/sこんな感じに使いました。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1