はじめに
はじめに、基本的な状況を説明します。
まず、前提として、Octopressのソースコードは、今までローカルまたは、GitHubで管理していました。
GitHubは、プライベートリポジトリの設定ができないため、全部のソースが公開されてしまいます。
したがって、公開が望ましくない秘匿性を含むファイルは、.gitignore
でアップロードしないように設定し、ローカルで管理していましたが、それを含め、OctopressのソースコードをBitbucketのプライベートリポジトリで管理するように変更しました。
.bundle
.DS_Store
_deploy
public
sass.old
source.old
source/_stash
source/stylesheets/screen.css
vendor
node_modules
Gemfile.lock
.gist-cache
.sass-cache
例えば、私の場合は、Google APIを使い記事ごとのアクセス数を集計し、その結果をサイドバーに表示するプラグインを使用しています。いわゆる人気記事サイドバーというやつですね。
ここで、Google APIを使用するには、シークレットキーなど秘匿性を含む情報が必要で、それを記述したファイルを.gitignore
などに書いていました。
また、基本的に、cache
ファイルも公開には向きませんが、ビルドには向きますので、それらを.gitignore
から消して、Bitbucketのプライベートリポジトリにpush
することにします。
Bitbucket
今まで、GitHubでバージョン管理していたので、それをBitbucketの.gitに切り替えます。
$ rm -rf .git
$ git init
$ git remote add origin https://username@bitbucket.org/username/repository.git
Wercker
そして、wercker.ymlを書いて、リポジトリをpushします。
box: wercker/rvm
build:
steps:
- rvm-use:
version: 1.9.3
- bundle-install
- script:
name: build with octopress
code: bundle exec rake generate
deploy:
steps:
- script:
name: Get commit message
code: |
export COMMIT_MSG=$(git log --pretty=format:"%s" -1)
- script:
name: Configure git
code: |-
git config --global user.email "user@email.com"
git config --global user.name "user"
rm -rf .git
- script:
name: Deploy to github pages
code: |-
cd ./public
git init
git add .
git commit -m "${COMMIT_MSG}"
git push -f https://${GITHUB_TOKEN}@github.com/syui/syui.github.io.git master
$ git add .
$ git commit -m "bitbucket"
$ git push -u origin master
次に、Werckerでアプリを設定。
Apps > Add an application
でアプリを追加します。ここには、GitHubのリポジトリを指定します。
Settings > Deploy targets > Add deploy target > Custom deploy
でデプロイ対象を追加。Auto deploy はチェックして、ソースの方のブランチ名を指定します。
Deploy pipleline > Add new variable
にて、werckerで使う環境変数を設定します。ここでは、GitHubのAPIを使えるようにしたいと思います。変数名は、GITHUB_TOKENにしておいてください。設定ファイルの記述が変わってきます。
GitHubで
Settings > Applications > Personal Access Tokens
でトークンを発行生成し、そのキーをWerckerのところに記述します。
完了すれば、リポジトリにファイルをpushするだけで、自動デプロイが実行され、ブログが更新されます。
参考
わかりにくければ、以下の記事及び、画像を参考にしてみてください。