平常運転

アニソンが好き

過去記事とかは記事一覧で見れます

Travis CI で go のバージョン指定するときに気をつけたいこと

tl;dr

  • 1.9.x とかでパッチバージョンを指定したいけど
  • これは手作業のアップデートが必要なのですぐには更新されなくて
  • みなさん気をつけてやっていきましょう

資料

Building a Go Project - Travis CI

github.com

今回の話題のネタはだいたいここで語られている:

github.com

解説

Travis で go のバージョンを指定すると、指定されたバージョンは travis-ci/gimme によってインストールされる。
gimme 自体には 1.9.x のようなバージョン指定を受け付ける機能は特になくて、 gimme だけでは「特定マイナーバージョンの最新パッチバージョンを使う」というような仕組みはない。けれど Travis では一見この機能が使えるようになっていて、それは何故かというと Travis のプロビジョニング側で 1.9.x => 1.9.2 のようなマッピングを行っているからである。様子はここにある:

travis-build/go.json at master · travis-ci/travis-build · GitHub

しかし、このファイルは特に自動的に更新される訳ではなくて、人間が更新する必要がある。テクニカルにはこのファイルは gimme リポジトリ内のテストデータを元に生成されている(不思議だ……)ので、 gimme => travis-build の順に更新してもらう必要がある。

github.com

github.com

大本のマスターデータ自体は Google API のデータで、( 様子 )、このデータ自体は素早く更新されるのだけど、 gimme と travis-build は手作業で更新しなければならないようで大変。僕は乱暴に gimme 側に p-r を送ったけど、 issue を立てれば更新してもらえる可能性は高そう。

まとめ

  • 1.9.x とかで望んだパッチバージョンが落ちてこなかったら
  • Issues · travis-ci/travis-ci · GitHub とかで issue を立てましょう
  • 人間が丁寧に更新しています

感想

gimme がネイティブで 1.x.x 解釈してくれ〜〜〜