LoginSignup
30
25

More than 5 years have passed since last update.

Travis CIからgithub.ioにデプロイする方法

Last updated at Posted at 2015-10-28

備忘録も兼ねて書きます。
この方法でもgh-pagesにデプロイ可能ですが、今回は個人ではなく
OrganizationでのGithub Pagesの利用なので[組織名].github.ioにデプロイをします。

1. 開発用リポジトリを作ります。

適当に開発用のhtmlやcssをjsをおいてコミットしてください。

2. 別リポジトリ[組織名]/[組織名].github.ioを作成

リポジトリにはあとでファイルを追加するので空にしておいてください。
今回はexample/example.github.ioを作ったとします。

3. Travis CIの設定

ルートリポジトリに.travis.ymlを設置してください。今回は以下のとおりです。
デプロイの実行はdeploy.shで行います。
マスターブランチかつプルリクじゃない場合はデプロイをするようにしています。

travis.yml
language: node_js
node_js:
  - 0.12
sudo: false
script:
  - '[ "$TRAVIS_BRANCH" == master ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && bash ./deploy.sh'
cache:
  directories:
    - node_modules

その後はTravis CIからGithubにアクセスするにはAPIトークンが必要です。しかしそのままトークンを設定するのはマズイので暗号化します。Travis CIでは環境変数を暗号化することができます。
今回の場合、Travis CIのgitからpushするために、Github.comのPersonal access tokensからトークンを取得しルートディレクトリ直下で

npm install travis-encrypt -g
travis-encrypt -r '組織名/リポジトリ名' -k GH_TOKEN -v 'Githubから取得したトークン' --add

をすると自動的に設定した環境変数が追加されます。

travis.yml
env:
  global:
    - secure: dfei543fe... //GH_TOKEN

4. deploy.sh

あとはdeploy.shをディレクトリ直下に置く

#!/bin/bash
set -e
rm -rf public || exit 0;
mkdir public

# publicフォルダに開発用ファイルを展開する。
cp -r src/* public

cd public

git config user.email "example@example.com"
git config user.name "Travis-CI"

git init
git add .
git commit -m "Deploy to GitHub Pages"
git push --force --quiet "https://${GH_TOKEN}@github.com/example/example.github.io.git" master:master > /dev/null 2>&1

gh-pagesにデプロイする場合はmaster:mastermaster:gh-pagesにしてください。

あとはTravisCIと連携してpushで回るはず。

参考

30
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
25