Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

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

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

by mackee_w
1 / 17

release-request


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


demo

image.png


何が出来るか

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

先行するOSS


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

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

挙動

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

工夫

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


設定ファイル

  • 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やってます

登録してくれ!!!

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
2
Help us understand the problem. What are the problem?