Help us understand the problem. What is going on with this article?

CapistranoでのdeployをGoogle SpreadSheetに記録しちゃう

More than 5 years have passed since last update.

やりたいこと

あるdeployを機にパフォーマンスやPV/売上が変ることってありますよね。最近のdeployなら追えますが、半年前のdeployってなると記憶も記録もなくて困りませんか?
そんな適当なのはウチだけですか?
deployの記録をSpreadSheetへ記録したくて、こんなもの考えました。

準備

Google Formを作成

Google SpreadSheet & Formで記録しておきたい項目のフォームを作ります。ウチではこんな項目を保存します。

  • デバイス
  • 変更概要
  • 担当者
  • リビジョン
  • タイムスタンプ(自動で記録される項目)

フォームの設定で回答は誰でもできるようにしておきましょう。
回答者が記録されるシートを閲覧できないようにしておきましょう。

Google Formから必要な情報をメモ

作成したフォームのHTMLを表示し、次の項目を控えておきます。

  • Form action URL
  • 各入力項目のname属性

Capistranoタスクを作成

deploy/配下にこんなファイルを用意します。

deploy/record_history.rb
namespace :deploy do
  task :record_history do

    prompt = HighLine.new

    this_deploy = {
      description: prompt.ask('deployによる変更概要を入力してね'),
      at: Time.now.strftime("%Y-%m-%dT%H:%M"),
      device: 'PC',
      who: `whoami`,
      memo: current_revision
    }

    uri = URI.parse("https://docs.google.com/a/dongoon.jp/forms/d/[Formによって違います]/formResponse")
    Net::HTTP.start(uri.host, uri.port, use_ssl: true){|http|
      request = Net::HTTP::Post.new(uri.path)
      params = {
        "entry.123400001" => this_deploy[:description],
        "entry.123400002" => this_deploy[:device],
        "entry.123400003" => this_deploy[:who],
        "entry.123400004" => this_deploy[:revision],
      }
      request.set_form_data(params)
      http.request(request)
    }
  end
end
config/deploy/production.rb
load 'config/deploy/record_history'
after "deploy", 'deploy:record_history'

以上で本番環境のdeployの時のみ、変更概要を入力するプロンプトが表示され、その内容がSpreadSheetに記録されちゃいます。上の例では、操作するユーザIDとdeployするリビジョンを自動的に登録しています。

ymppp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした