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

デプロイを便利にするソリューションであるところのrelease-request

More than 1 year has passed since last update.

デプロイを便利にするソリューションであるところのrelease-request

by mackee_w
1 / 17

release-request

https://github.com/mackee/release-request


The release-request is a cli tool for Pull Request driven deployment.


demo

https://github.com/mackee/release-request/pull/3

image.png


何が出来るか

  • deployのPull Requestを自動作成してくれる
  • マージされたPull Requestをリスト化してくれる
  • 特定のラベルが付けられたPull Requestをリスト化してくれる
  • 差分を外部プログラムに渡してテンプレートから手順書を入れたり抜いたり出来る

先行するOSS


先行するOSSと比べて優位な点

  • ワンコマンドで完結
  • 外部プログラムは言語に依存しない
  • デフォルトでもある程度機能する

挙動

  • 実行すると
    • 既に指定ブランチから指定ブランチへのPull RequestがあればDescriptionを上書きする
    • 無ければ新しく作る
  • 弊社ではwebhookが来ると外部コマンドを実行するtkuchiki/ghooks-cmd-runnerと組み合わせてmasterブランチへのpushをトリガーに走るようにしている

工夫

  • 設定が必要であるが、テンプレートを吐いてくれる

https://asciinema.org/a/9MPHTp9xKyRMnDbVlq7o8yaHN


設定ファイル

  • config.yml
    • githubのtokenとかブランチとかトラッキングするラベルとか
  • release.md
    • Pull Requestのテンプレート

外部プログラムの例

calls:
  - name: deploy_timing
    command: |
      perl -MTime::Piece -E '
      my $now = Time::Piece->new;
      for my $hms (qw/16:30:00 19:45:00 23:45:00/) {
          next if $now->hms gt $hms;
          say $now->ymd . " " . $hms;
          last;
      }'

外部プログラムをMarkdownから使う

上記のプログラムを組み合わせてデプロイウィンドウの明記を手順書に盛り込んでいる

# Release

Estimated time of deploying: {{ .Call "deploy_timing" }}


DDLの差分があったら反映の手順書を入れる

  - name: has_ddl
    command: |
      perl -MJSON -E '
      my $json = do { local $/; <STDIN> };
      my $releaser = JSON::decode_json($json);
      my $files = $releaser->{comparison}->{files};
      my @assets = grep { $_->{name} =~ m!^sql/master.sql.*$! } @$files;
      @assets > 0 ? exit 0 : exit 1;
      '

DDLの差分があったら反映の手順書を入れる

{{ with .CallIf "has_ddl" -}}
- [ ] migrate ddl

    $ git_ddl_migrater sql/master.sql
{{ end }}

解決する問題

  • デプロイするものを整理してデプロイ前の把握と、デプロイした後の記録にしたい
  • しかし言うてもその手間がしんどい
  • 手順書のクオリティを一定にしたい

と言う感じで使ってくれ!!!


あとOSS紹介Advent Calendarやってます

https://qiita.com/advent-calendar/2017/favorite-oss

登録してくれ!!!

mackee_w
オールマイティな変態目指して頑張ってます。
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
ユーザーは見つかりませんでした