5
5

More than 5 years have passed since last update.

jenkinsでoctopressのビルド

Posted at

以前github pagesでoctopressを使用してみてはいたのですが、ビルドした際に実際に表示されるhtmlファイルをバージョン管理はできているけども、ビルドする元ファイル、markdownやテーマの設定ファイル群のバージョン管理がしづらかったのですがjenkinsを使う事で簡単に運用して行く事ができたので設定方法をまとめてみます。

以前までの問題点

  • sourceのバージョン管理
  • ビルド時間

sourceのバージョン管理

octopressをgithub pagesの設定にしている時は
source/_posts/
のディレクトリにmarkdownだったりhtmlファイルを置いて

rake generate

コマンドでビルドすればpublic/ディレクトリ下にビルドして作成されたhtmlファイル群が変更されて、
_deploy/ディレクトリ下にも同じファイルが作成されてgit管理されるかと思います。

rake deploy

をすればgithubのリポジトリにpushされてgithub pagesに変更分が反映されるようになっていると思うのですが、
そうなると_deploy/ディレクトリはバージョン管理ができている状態なのですが、ビルドする元ファイル郡source/_posts/やテーマの設定ファイルのバージョン管理ができていません。手元にあるファイルがなくなったら更新すげー面倒。

しかし、回避策はすでに用意されていて
github pagesをデプロイ先に選んでいればsourceリポジトリがすでに作られているのでコミットを行ってgit push origin sourceをすればgithubのリポジトリに変更分が反映されるようになっています。

でもgit push origin sourceは記事の公開と関係がない部分なので忘れそう、面倒くさい。

ビルド時間

ビルドするときには過去の記事も一からビルドし直すので記事が多くなればなるほど時間かかります。(新規ページだけビルドする設定とかあったんでしたっけ?)

これらの解決策としてjenkinsを使うという案。

目標

  • sourceブランチをコミット、プッシュでビルドして反映

記事を作成、コミットをすればページが作成されて反映されていればよい。
それをjenkinsでやろうという目標

jenkinsの設定

すでにoctopressを使ってgithub pagesでブログを作成済みでsourceリポジトリをpush済み前提

  • 鍵登録
  • プラグインインストール
  • ジョブの作成

鍵登録

jenkinsサーバーにssh接続

cd /var/lib/jenkins
sudo -u jenkins -H ssh-keygen -t rsa

.ssh/id_rsa.pubの中身をgithubに登録する

sudo -u jenkins git ls-remote -h git@github.com:<自分のgithubリポジトリ>.git HEAD

でknown_hostsに登録しておく

プラグインインストール

Git plugin,rbenv pluginのインストール

Jenkinsの管理Git plugin
Global Config user.name Value , jenkins
Global Config user.email Value , some@emai.com

に設定

ジョブの作成

フリースタイル・プロジェクトのビルドでジョブの作成

ジョブの設定
ソースコード管理
Gitにチェック
Repositoriesに git@github.com:<自分のgithubリポジトリ>.git の設定
Branches to buildに source

SCMをポーリング

*/5 * * * *

rbenv build wrapperにチェック

ビルド手順の追加
シェルの実行を追加

実行内容

bundle install --path vendor/bundle
# 初回のみコメンアウトを外す
#git clone git@github.com:<自分のgithubリポジトリ>.git _deploy
bundle exec rake gen_deploy

初回のみgit cloneを実行してください。

これで完了。sourceリポジトリで記事を作成してコミットすれば反映されます。

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