こんにちわ。エンジニアの こじま です。
今回は,ランサーズのリリースシステムの紹介をします。
弊社プラットフォームは,1日に多い時は10回以上のコードのリリースを実施します。
ユーザ様によりよいプラットフォームを提供すべく日々,リリースをし改善を実施しています。
以前は,特定のエンジニアしかリリースができず,
都度サーバにログインしてオペレーションを実施していました。
現在では,非エンジニアでも,WEB UI からワンクリックで,安全にリリースを実施することができます。
以下のような WEB UI で実施しています。
リリースシステムは,Jenkins・Redmine・Fabrics と連携してリリースを実現しています。
以下のような構成で実現しています。
Jenkins によって,Fabrics がキックされリリースを実施します。
また,リリースが完了すると,Redmine のチケットがクローズされる仕組みになっています。
Jenkins は Ruby で jenkins_api_client を利用して実現しています。
以下のように Job をビルドします。
1 2 3 4 | require 'jenkins_api_client' client = JenkinsApi::Client. new (conf) client.job.build(job_name, params) |
また,Redmine も API 経由でリクエストすればチケットを簡単にクローズできます。
(API の解放が必要です)
1 | curl -s - H 'Accept: application/json' - H 'Content-type: application/json' - X PUT -d '{"issue":{"status_id":"<変えたいステータスの ID を指定>","done_ratio":"100"}}' "http://<Redmine のアドレスを指定>/issues/<チケット ID を指定>.json?format=json&key=<トークンを設定>" |
このリリースシステムによって,開発が効率化され
より安全に早く,ユーザ様へよりよいものを提供できるようになりました。
このようにしてランサーズでは,
ユーザ様に快適なプラットフォームを提供すべく日々努力をしております。