LoginSignup
6
5

More than 5 years have passed since last update.

Travis CI経由でgh-pagesにmiddlemanで構築した静的サイトをデプロイ。

Posted at

以前から興味があったmiddlemanを使ってGitHubにホストした自分のページを作りました。

その中で、Travis CI経由でGitHub Pagesにデプロイする方法を見つけたので試してみたときのメモです。

やりたいこと

https://github.com/kimihito/kimihito.github.io にコードは置く。

  • develop ブランチでは middleman build する前のコードがあってほしい。

  • master ブランチは middleman build && middleman deploy された後のコードが置いてあって欲しい。

  • Travis CI側で、 develop ブランチにpushしたら自動的に middleman build && middleman deploy して master ブランチにPushしていてほしい

やったこと

Middleman Blog を Travis-CI で GitHub Pages に継続デプロイ - Atsushi Nagase

の手順と同じように、

1. Travis CIにリポジトリを登録

2. GitHubでPersonal access tokensを生成

3. travis より暗号化されたキーを取得

--add オプションをつけることで自動で .travis.ymlに追加される

  $ travis encrypt -r kimihito/kimihito.github.io "GH_TOKEN=GitHubのPersonal access tokens" --add

4. .travis.yml を書く

今回はdevelopブランチにPushされたときにmiddleman deploy が行われるようにする

  language: ruby
  script: bundle exec middleman build
  env:
    global:
      - GIT_COMMITTER_NAME='TravisCIでのユーザ名@travis-ci'
      - GIT_COMMITTER_EMAIL='メールアドレス'
      - GIT_AUTHOR_NAME='TravisCIでのユーザ名@travis-ci'
      - GIT_AUTHOR_EMAIL='メールアドレス'
      - secure: "(3 で取得した secure の値)"
  after_success:
    - '[ "$TRAVIS_BRANCH" == "develop" ] && [ $GH_TOKEN ] && bundle exec middleman deploy >/dev/null 2>&1'

5. config.rb にデプロイ設定を記述

activate :deploy do |deploy|
  deploy.method = :git
  deploy.branch = 'master' # master ブランチにデプロイするように設定
  deploy.remote = "https://#{ENV['GH_TOKEN']}@github.com/kimihito/kimihito.github.io.git" # GitHubのリポジトリ情報を入れる
  deploy.build_before = true #デプロイするときにビルドするように設定
end

これでdevelopブランチにpushするとmasterの方にビルドされたものがforce-pushされます。

ハマったところ

ここで述べられているようにmiddleman deployで作られる master ブランチへのコミットが、ビルドしてしまうので、middleman deploy の際に入るコミットメッセージに[ci skip]を追加しました

参考

6
5
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
6
5