ActiveResourceでChatWorkのAPIを叩くgemを作ってみました。
これが初めて作ったgemなのですが、手で運用すると色々忘れそうな感じがした。
ライブラリのメンテはただでさえ手がかかるので、パッケージ管理サービスへのデプロイくらい手を抜きたい。
ということで、GithubのmasterブランチにpushされたらCircleCIを使って自動でgemをデプロイする設定をしてみました。
作ったgemのリポジトリを御覧ください。circle.ymlにかかれています
GitHub – Leko/activeresource-chatwork: ActiveResource classes for ChatWork API
まずは自動化すべきタスクの内容をおさらいします。
Rakeタスクにデプロイコマンドがくっついているので、それを利用します。
これで公開準備は完了しました。ここまでの操作は最初の1回で良いようです。
デプロイ自体は
bundle exec rake build
bundle exec rake release
という感じでいけるそうです。こんなフローを自動化してみます。
CircleCIと連携したままのだと、read onlyなデプロイキーが使用されています。
なのでリポジトリからpullはできるのですが、タグの追加やpushができない。
bundle exec rake release
は内部的にgit tag
とgit push origin タグ
をやっているので、リポジトリへのwrite権限が必要になります。
ということでまずはそこの準備を整える。
で、連携しているリポジトリにwrite権限を持つキーが作成できます。
こんな感じの画面になればOKだと思います。
deployment
セクションを追加して、master
ブランチのビルドが走ったときのデプロイ処理を指定します。
私の場合RubyGemsのユーザもGit(hub)のユーザもLeko
なので、以下のような内容になると思います。
パスワードやメールアドレスをリポジトリに載せたくないので、環境変数に切り出してProject settings画面から設定しています。
deployment:
rubygems: # 任意の名前でよい
branch: master # master相当のブランチが別名なら変えてください
commands:
- curl -u Leko:$RUBYGEMS_PASSWORD https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials
- git config user.name Leko
- git config user.email $RUBYGEMS_EMAIL
- bundle exec rake build
- bundle exec rake release
CircleCI上の表示は
デプロイした後のRubyGems.orgは
はい、OKそうです。
gem作るのもCircleCIのdeployment機能を使用したのも今回が始めてでした。
どちらも機能が充実しているもののシンプルに使えるようになっているので、学習コストは安かったと思います。
思っていたよりもさくっとできて安心しました。
gemもCircleCIのデプロイも色々な方向に活用していきたいです。
いつかnpmのデプロイ自動化も記事にしようと思います。