2018年5月24日木曜日

Travis CI から github に push する

「CI サービスでビルドした結果を github に push したい」そんなことってありますよね。
よくあるケースとしては、ドキュメントなどを github pages (github.io)に公開したい場合とかでしょうか。

今回は Travis CI の場合を紹介します。

前置き
本当は、Travis CI 以外も含めて GitHub へのデプロイ方法をまとめようと思ってましたが、
結局は ssh 鍵やアクセストークンを暗号化してリポジトリに置いておける CI サービスであれば、自分で git command を叩くことで実現可能です。
なので、まとめとしては大体のサービスが「できます」で終わってしまうのでやめました。
(CI サービスによって導入のしやすさは違うと思います。既存のステップがあるとか、管理方法とか、暗号化方法とか)

Travis CI
というわけで、Travis CIの場合です。

Travis CI の depoly ステップに Github Pages と Github Releases があります。
GitHub Pages Deployment - Travis CI
GitHub Releases Uploading - Travis CI
Pages が通常の push 、Releases はタグ付けができます。

要点としては以下な感じ

検証用リポジトリの設定はこちら
https://github.com/srz-zumix/ci-push/blob/master/.travis.yml
中身はこんな感じです。
dist: trusty
sudo: false

script:
  - sh ./build.sh
  - git checkout master
  - git add -A
  - git commit -m "deploy [ci skip]"
  - git push https://${GITHUB_TOKEN}@github.com/${TRAVIS_REPO_SLUG}.git ${TRAVIS_BRANCH}

# TODO: add skip comment...
#deploy:
#  provider: pages
#  target-branch: master
#  skip-cleanup: true
#  github-token: $GITHUB_TOKEN  # Set in the settings page of your repository, as a secure variable
#  keep-history: true
#  on:
#    branch: master

env:
  global:
    - secure: t6d7HusMxzdZCXV5tGWQn0MA7aodeuK6bbKASqUuOyKUe8I+w3E3E+GKL3CyE32pGDuPGxw1NraOvVJ8uuBmJjwumyAHssR0BFGogPnbhQucl9N3eMz9BHU5j5bw/bGkmI2y+9ZsTb+9P7XtBrwC6/AbdcF/Wh0y7y32RLxda4836OvxOuuZDl+2OgPtkqyg+uKVh+6uRY+arUHOBUEjzjBBAN5/eoTqE0/HVu4YEgiq94ke0c2w2Sz+sK1yXUGrOIz5nTcMMSAwJdHaQpnBKs/5EzJCcHx5guH3Wn+XKS3LOqIxioz6wKPnkqqhFHiv83fGy9+lv67mUHcXfMDab5rm+jRJUHgZPX9sd4iAoz7ZQ3jxMW3/PWP7VJsv3SrrDjFvBH8tRzkqtVIFTmS4tGDZ2VzeYhKom4dA3CH/KCxprZJ+nCQ2TizMuNAezR1+GcZGIDc+AGILUxfPK82Z2CZtmhoOBEp8C7JN6bPNxfYYhU5rJo8dI+1HinX3JRdfW2zBlixxuIrfn2RWhuRzT4mZf7tP8EZV33wRa7W/eEKvUUfMGAzk8gEVhLKfGaGZU7IfhrwdmRgRsKX0Y53wfEjqt8tsWW3FFHfuLjO75lEJY381VJREvC76FCOa2AT4B6A6dzz/5376K/08GChfBcN1vHAxj5FxhJ1dwt4iTZE=

まとめ
gh-pages ブランチへのデプロイであれば簡単。アクセストークンを使いたくない…とか、master の docs を更新したいんじゃーとなると自分で書くことになる。
ローカル作業は必要ではあるが、ドキュメントもわかりやすく簡単。



0 件のコメント:

コメントを投稿