概要
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 で公開することができるのであまり意識しなくてよいはず。 ↩