CircleCI 2.0 で capistrano デプロイしてみた

このブログは GitHub で管理しており、master に commit が追加される と、CircleCI が capistrano を使ってデプロイします。 [2017-04-13-1] でテストを CircleCI 2.0 で動かしたので、デプロイも 試してみました。 最終的な circle.yml とデプロイスクリプトはこちらになりました。 基本的に “add_ssh_keys” と “deploy” step 以外は [2017-04-13-1] と 同じです。ハマりそうなところだけ記載していきます。 ハマりそうなところ Deployments - CircleCI のとおり、“deploy” step があればデプロイ出来ます。 ただ capistrano で GitHub の private repository をデプロイする場合、 最低 2 つは SSH Key が必要になると思います。 (1) 本番サーバ(masutaka.net)への SSH ログイン (2) SSH ログイン後に GitHub に SSH アクセス これらの設定方法を説明していきます。 デバッグは CircleCI の各ジョブの Rebuild with SSH から、実際に本番 サーバに ssh ログインできるか確認していくと、分かりやすいと思います。...

2017-04-16 (Sun) · masutaka

通知サービスPushoverがなかなか便利

何年も前からim.kayac.com を使ってきましたが、時々通知が来なくなるの で(アプリを再起動すれば直る)、Pushover に乗り換えました。1ヶ月ほど 使っていますが、なかなか良いです。 ※ im.kayac.comは2009年11月18日以来更新がないようです。 iPhoneアプリの画面はこのような感じです。 CircleCIは後述のGemで通知しています。 TwitterはHerokuで動かしている29hours[2013-04-14-2] 経由で通知してい ます。29hoursはデフォルトでPushoverに対応しているので、 settings.ymlを変更しただけです。 im.kayac.comに出来ることはひととおり出来ました。さらに以下の機能があります。 プライオリティ(low,normal,high,emergency)を指定できる emergencyの時は、Acknowledgeするまで60秒ごと24時間通知し続けることも可能 通知しない時間帯を指定できる 通知ごとにサウンドを切り替えられる デバイス(iPhone,Android,Desktop)を登録でき、指定したデバイスのみに通知可能 グループやユーザを登録でき、通知先に指定可能 利用状況をグラフで確認できる 唯一、Tiarraからの通知はできなくなりましたが、最近IRCは使ってない ので割り切りました。 アプリは無料で5日間制限なく使えます。それ以降は1度だけ500円支払え ば同様に使えます。Desktop版はさらに$4.99 USDの課金が発生します。 Gemもあるので、結構お手軽に使えました。 pushover | RubyGems.org | your community gem host このブログの記事がデプロイされた時に結果を通知するCapistranoのタスク [2015-01-15-1] の改良版にあたります。 このブログはGitHubで管理していて、masterにcommitすると、CircleCIが 自動でデプロイします。その結果を通知してくれるCapistranoのタスクに なります。 このサーバのCook&serverspecの結果を通知するcircle.ymlの設定とRakeタスク [2015-02-08-2] の改良版にあたります。 このサーバのChefレシピもGitHubで管理していて、masterにcommitすると、 CircleCIがmasutaka.netをCookした後Serverspecを自動実行します。その 結果を通知してくれるRakeタスクと、呼び元のcircle.ymlになります。 最後に注意事項 アプリをインストールするとUser Keyが作られますが、これは使わないほ うが良さそうです。作り直し出来ないようなので、漏洩した時面倒な自体 になりそうです。グループを作り自分を所属させ、Group Keyを使うと良 いと思います。

2015-03-08 (Sun) · masutaka

このブログをデプロイする時にchalowも実行するようにした

[2014-05-03-1] のバージョンアップ。 http://masutaka.net はcapistranoでデプロイしてますが、 http://masutaka.net/chalow はchalow+rsyncを実行する mkchalow[2009-06-14-3] というコマンドでアップロードしてました。 ローカルのChangeLogメモをchalowで変換しrsyncするので、自分の MacBook Airと会社のMac miniの複数環境でブログを書くと、過去記事が 消える可能性が出てきます。 そういうのを気をつけるのが面倒なので、capistranoでのデプロイ時に chalowコマンドも実行するようにしました。 以下はcapistranoの設定ファイルです。melodyはVagrantのVMです。 [2009-06-14-3] に作ったEmacsのmkchalow()もcap-deploy()として 新たに生まれ変わりました。ChangeLogメモを開いた状態でC-cC-cすると デプロイ出来ます。 default-directoryの最後に/(slash)を付けないと、実行ディレクトリ が~/src/github.com/masutakaになる問題にハマりました。 start-process()でencode_current_directory()からカレントディレクト リを求めており 、その中でFunhandled_file_name_directory()を使ってい る ためのようです。 Funhandled_file_name_directory()はelispのfile-name-directory()と等 価です。 UNIX上のEmacsではディレクトリ名の最後には/(slash)を付けたほうが良 いかもしれません。 http://www.gnu.org/software/emacs/manual/html_node/elisp/File-Name-Expansion.html The value is always a string ending with a slash. default-directory ⇒ "/user/lewis/manual/"

2015-01-13 (Tue) · masutaka

masutaka.netをCapistrano3でデプロイ

http://masutaka.net/ 以下の静的なhtmlはGitHubのprivateリポジトリで 管理しており、変更があったらrsyncでコピーしてました。 あまり変更しないのでそんなに困ってませんでしたが、ちょっとダサいの とCapistrano3を使ってみたかったので、エイヤッと導入しました。 https://github.com/capistrano/capistrano の通りにGemfileに gem ‘capistrano’, ‘~> 3.2.0’ を追加して、以下を実行しました。 $ bundle exec cap install このようなファイルが自動生成されます。 Capfile config ├── deploy │ ├── production.rb │ └── staging.rb └── deploy.rb ファイル名を以下のように変更しました。melodyはVagrantのVMです。 Capfile config ├── deploy │ ├── prod.rb │ └── melody.rb └── deploy.rb ファイルの内容はこんな感じ Capistrano3からdeploy:setup不要になったので、初回から以下のコマンド でOKです。 # to masutaka.net $ bundle exec cap prod deploy # to vagrant $ bundle exec cap melody deploy /var/www/vhosts/masutaka.net以下にデプロイされます。 current -> /var/www/vhosts/masutaka.net/releases/20140502163850/ logs/ releases/ repo/ revisions....

2014-05-03 (Sat) · masutaka