phoenix-powerCIサービスを使い始めました。そのため、秘匿ファイルを含むOctopressは、プライベートリポジトリ可能なBitbucketにソースを置くことにしました。

Octopress

Git

まず、.gitignoreでアップロードしないようにしてたファイルを一部、取り消します。

.gitignore
1
2
3
4
5
6
7
8
9
10
11
12
13
.bundle
.DS_Store
_deploy
public
sass.old
source.old
source/_stash
source/stylesheets/screen.css
vendor
node_modules
Gemfile.lock
.gist-cache
.sass-cache

Bitbucket

そして、Bitbucketの.gitに切り替えます。

1
2
3
4
5
$ rm -rf .git

$ git init

$ git remote add origin https://syui__@bitbucket.org/user/repository.git

Wercker

そして、wercker.ymlを書いて、リポジトリをpushします。

wercker.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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
1
2
3
4
5
$ 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するだけで、自動デプロイが実行され、ブログが更新されます。

Middleman

Middlemanの場合は、branch:gh-pagesで運用しているので、以下のような感じになります。

wercker.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
box: wercker/rvm

build:
    steps:
        - rvm-use:
            version: 1.9.3

        - bundle-install

        - script:
            name: build with middleman
            code: bundle exec middleman build --verbose

deploy:
    steps:
        - lukevivier/gh-pages:
            token: $GITHUB_TOKEN
            basedir: ./build
            repo: syui/middleman

こちらは、秘匿性を含むファイルがないので、GitHubにソースを置いて、pushします。

追記

リポジトリのビルド、デプロイを実行してくれるCIサービスを使うと何が良いのかというと、正直、今のたいした数ビルドしない環境下では、あまりメリットというのは思い浮かばないのですが、モバイル(例えば、Android)を使った更新などができるのが良いと思いました。

Androidで記事を書いて、git pushするだけですから、楽に更新できます。