概要
Travis CI でジョブが実行されたものの
Skipping a deployment with the <PROVIDER> provider because this branch is not permitted: <BRANCH>
みたいなメッセージが出力されててデプロイできてない! どうして!
という場合は .travis.yml
の deploy
要素に on: branch: <BRANCH>
が足りてないはずなので追加しましょう、というお話です。完。
例
GitHub と Travis CI を連携させていて「master
ブランチは本番環境に、develop
ブランチは開発環境にデプロイしたいよー」という状況があるとします。
このとき一旦 develop
ブランチについての設定だけ .travis.yml
に書いたとします。
こんな感じ:
branches:
only:
- develop
deploy:
provider: script
...
script:
- ...
「branches
の only
に develop
を指定したしこれでいけるやろ」と思って develop
ブランチのファイルに変更を加えてジョブの経過を見守るんですが、そこで
Skipping a deployment with the script provider because this branch is not permitted: develop
とか言われてデプロイできないんですね。しょんぼりですね。
こうなってしまうのは deploy
要素に on: branch: develop
がないからです。
なのでこの設定を追加します。
こんな感じ:
branches:
only:
- develop
deploy:
provider: script
on: # 追加
branch: develop # 追加
...
script:
- ...
これで OK 。
おまけ:branches
と deploy
branches
branches
に指定するのは「デプロイするブランチ」ではなく「ビルドする (もしくはしない) ブランチ」です。
もっと細かく言うと「ビルドを実行するためのトリガーとする (もしくはしない) ブランチ」です。
branches
に only
要素を設定すると、そこに指定したブランチが更新された場合にビルドを実行します (セーフリスト) 。
only
ではなく except
要素を設定すると、そこに指定したブランチ 以外 が更新された場合にビルドを実行します (ブラックリスト) 。
only
と except
の両方が設定された場合は only
の方が有効になります。
デフォルト (どちらも省略した場合) では gh-pages
を除く各ブランチが更新された場合にビルトを実行するようです 1 。
詳細は Travis CI 公式の Building Specific Branches を参考にしましょう。
deploy
deploy
にはビルドで作成された資材のデプロイについての設定を記述します。
deploy
の on
要素の中にデプロイするための条件を指定することができ、条件の種類の 1つに branch
があります。文字通り「そのブランチであればデプロイする」というものです。
deploy: on: branch: develop
は「ブランチが develop
であればデプロイする」ということになります。
デフォルト (branch
が省略された場合) ではデプロイの対象として master
ブランチが採用された状態になります。
こちらの詳細は Conditional Releases with on:
を参考にしましょう。
おしまり
-
gh-pages
は GitHub Pages 用の (GitHub における) 特別なブランチ。ただし、現在はmaster
ブランチを GitHub Pages で公開することができるのであまり意識しなくてよいはず。 ↩