werckerからGitHub Pagesにデプロイ

- -

今日はDaft Punk - One More Timeをリピートで聞きながら。
ノリノリになれます(笑)。
少し前は妖怪ウォッチのテーマ曲初恋峠でゲラゲラポーにハマって1日中聞いたりしていた(笑)。

それはどうでもいいのですが、下記のブログを見てwerckerで自動デプロイをやってみたくなったので、やってみた。
- WordpressからGitHub pages+Octopressに移行した

なぜwerckerかというと、「無料」で出来るからです。
大阪のおばちゃんのように「無料(タダ)」という言葉に弱いからです(笑)。
※すみません、大阪のおばちゃんが全員そうではないと思っておりますm(_ _)m

上記の記事の中で紹介されている「werckerを使ってDeployの自動化」でほとんど大丈夫だったのですが、少しエラーが出たのでその対応処理だけ。

No submodule mapping found in .gitmodules for path ‘.themes/foxslide’

themeはfoxslideを使っていますが、このディレクトリがあることによって怒られたのでとりあえず削除。

rvm-useでUnknown ruby string (do not know how to handle): ruby-2.1.1p76

macのruby -vruby 2.1.1p76だったので、wercker.ymlに、

wercker.yml
1
2
- rvm-use:
    version: ruby-2.1.1p76

と書いた。
しかし、無いです、と怒られた。

werckerデベロッパーコンソールのBoxesの中のBOX-RVMを見てみる。
box-rvmはいくつかバージョンがあるので、下記のように指定してあげると通る。

wercker.yml
1
2
3
4
5
box: wercker/rvm@2.1.0
build:
  steps:
    - rvm-use:
        version: ruby-2.1.1

しかし、ruby-2.1.1はdeprecatedなので、もういっそのこと最新(2015.1.25現在)のboxからdeprecatedでないruby-2.1.5でいってみる。
最終的にこんな感じ。

wercker.yml
1
2
3
4
5
box: wercker/rvm@2.4.0
build:
  steps:
    - rvm-use:
        version: ruby-2.1.5

Deployタスクが上手くいかなかったのでbuildタスクでデプロイした

Deployタスクで上手くいかなかったので、とりあえずbuildタスクにデプロイ処理を入れ込んだ。
最終的なwercker.ymlはこう。

wercker.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
box: wercker/rvm@2.4.0
build:
  steps:
    - rvm-use:
        version: ruby-2.1.5
    - bundle-install
    - script:
        name: configure
        code: |
          git config --global user.email "メールアドレス"
          git config --global user.name "ユーザーネーム"
          bundle exec rake setup_github_pages[$GIT_REMOTE]
    - script:
        name: deploy to github
        code: |
          bundle exec rake generate
          bundle exec rake deploy

werckerのデベロッパーコンソールで環境変数をセットする。
HOME / APPS / ユーザー / リポジトリ名

Settings ▶ PIPELINE ▶ Add new variable
・ Environment variable: GIT_REMOTE
・ Text: https://GitHubのアプリケーションTOKEN@github.com/ユーザ名/リポジトリ名.git
・ Protectedにチェックを入れる

アプリケーションTOKENはGitHubのSettingのApplicationのセクションで新規作成。

Rakefileにgit push -fを追加

Rakefileを変更。

Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
desc "deploy public directory to github pages"
multitask :push do
  puts "## Deploying branch to Github Pages "
  puts "## Pulling any updates from Github Pages "
  cd "#{deploy_dir}" do
    Bundler.with_clean_env { system "git pull" }
  end
  (Dir["#{deploy_dir}/*"]).each { |f| rm_rf(f) }
  Rake::Task[:copydot].invoke(public_dir, deploy_dir)
  puts "\n## Copying #{public_dir} to #{deploy_dir}"
  cp_r "#{public_dir}/.", deploy_dir
  cd "#{deploy_dir}" do
    system "git add -A"
    message = "Site updated at #{Time.now.utc}"
    puts "\n## Committing: #{message}"
    system "git commit -m \"#{message}\""
    puts "\n## Pushing generated #{deploy_dir} website"
    Bundler.with_clean_env { system "git push -f origin #{deploy_branch}" }
    puts "\n## Github Pages deploy complete"
  end
end

以上で完了です。
後はいつもどおりBitbucketにプッシュするだけ。
まったく簡単だ