Travis CIのジョブからgithubリポジトリへプッシュする

Travis CIのジョブで生成された差分を元のgithubリポジトリへプッシュしたい。

.travis.ymlは以下のように設定する。

language: java
deploy:
  provider: script
  script: bash scripts/deploy.sh
  skip_cleanup: true
  on:
    branch: master

skip_cleanup: trueの設定は必須。クリーンアップが実行されると差分ファイルがスタッシュされてしまう。

scripts/deploy.shは以下のように設定する。

#!/bin/bash

git checkout master
git add -A
git commit -m "some comment"
git push https://${GITHUB_ACCESS_TOKEN}@github.com/${TRAVIS_REPO_SLUG}.git ${TRAVIS_BRANCH}

ジョブが開始する際、ローカルリポジトリの状態はdetached HEAD状態となっているため、masterブランチのチェックアウトを再度行う必要があることに注意。

GITHUB_ACCESS_TOKENは、対象のリポジトリへのプッシュ権限を付与したAPIトークンを予め取得しておき、ジョブの環境変数として予め設定する。