最近TravisCIを使うようになったのですが、
デフォルトのままだと全てのブランチのpushやPRに反応してしまうので、 特定のブランチとタグ にだけ反応するようにしました。
ちなみにTravisCI上でも設定はできますが、こちらは全てのブランチのpush/PRに対して実行するしないを決めるものなので、今回したかったことと違いました。

特定のブランチだけに限定する


例えば、 master、develop ブランチだけにするばあいは、ホワイトリストとして以下のように .travis.yml に指定します。

branches:
  only:
  - master
  - develop

only: 属性内に、限定したいブランチ名を記述することで、ホワイトリストに追加することができます。
逆に、 特定のブランチだけ除外 したい場合は、 except: 属性を指定します。

branches:
  except:
  - test # testブランチを除外する

タグにも反応するようにする


しかし、上記のままだとmaster,developブランチにしか反応せず、tagをpushした時にtravisを走らせることができないです。
人によってはtagをpushしても何もしなくていい場合があるので、その人には無用ですが、
自分の場合は、tagのpushによってtravisを走らせ、Github上にReleaseを作成してそこにバイナリをあげる必要があるので、tagの検知が必須になります。

その場合は以下のように 正規表現 を用いて検出するようにします

branches:
  only:
  - master
  - develop
  - "/^v?[0-9\\.]+/"

これで、

  • 1.0.0
  • v1.2.3

といったタグに対しても反応するようにします。最初は tags: という項目があったと思ったのですが、どうやら branches: に指定する形で問題ないようです。

参考


Travis CIでTagsに対するpushを無視する