ペペロミア開発ブログ

React Nativeで開発しているアプリ「ペペロミア」の技術系記事を投稿してます

リリースノートを自動生成するスクリプトを書いてみた

ペペロミアをリリースして1年くらい立ったので、振り返りしたいなーと思いリリースノート作りたいなーと思ったので、自動生成するスクリプトを書きました。

自動生成したリリースノート

v1.0.3〜2.0.4まで以下で確認できます。

リリースノート カテゴリーの記事一覧 - ペペロミア開発ブログ

本当は、はてぶじゃなくて別のブログサービスで公開しようと思ってましたが、noteも mediumも標準ではmark down使えなくて諦めました。

スクリプト

github.com

まず、設定を追加

config.tomlを書き換え

[GitHub]
token = ""
owner = ""
repository = ""
label = "リリースノート"
startText = "## 対応内容"
endText = "## 開発用メモ"

各設定内容は、以下の通り

f:id:wheatandcat:20200614215409p:plain

仕組み的にはマイルストーンを元に指定のラベルが付与されたPull RequestをGitHub API経由で取得してきてテンプレートを元にMarkdownを生成しています。

また、config.tomlのstartTextendTextのようにPull Requestの本文の一部分を抜き出すようにしているので、GitHubのプルリクエストテンプレート機能を使用して上記の設定に合わせてテンプレートを作成。

help.github.com

■ Pull Request issueとpull requestのtemplate作成 by wheatandcat · Pull Request #638 · wheatandcat/Peperomia · GitHub

.github/PULL_REQUEST_TEMPLATE.mdを追加すればOK

■ .github/PULL_REQUEST_TEMPLATE.md

## 関連 issue

- fixes #{issue 番号}

## 対応内容
(リリースノートのラベルをつけると、ここの記載がコピーされます)

## 開発用メモ
無し

これでPull Requestを作成すると自動で上記の文言が追加されるようになります。

あとは、以下の実行コマンドを実行(MILESTONEでマイルストーンの名前を指定)

$ MILESTONE=v2.0.4 go run main.go | pbcopy

出力はこんな感じ

# GitHub

[Peperomia](https://github.com/wheatandcat/Peperomia)

# マイルストーン

[v2.0.4](https://github.com/wheatandcat/Peperomia/milestone/8)

# 対応内容

- [Dangerを導入する](#MDExOlB1bGxSZXF1ZXN0MzgxODI0Mzgw)
- [react-navigation v5にアップデート](#MDExOlB1bGxSZXF1ZXN0Mzk5NjgxMzc3)
- [Expo sdk v37にバージョンアップ](#MDExOlB1bGxSZXF1ZXN0NDAzMjIzMzkw)
- [prettier 2.0にバージョンアップ](#MDExOlB1bGxSZXF1ZXN0NDAzMjUwMTA2)
- [Codecovを実装](#MDExOlB1bGxSZXF1ZXN0NDAzODAwNzA0)
- [Sign in with Apple実装](#MDExOlB1bGxSZXF1ZXN0NDA1NjQwODM0)
- [react-navigation v5でダークモード対応](#MDExOlB1bGxSZXF1ZXN0NDA1Njc4OTUw)

# リリース詳細
<a id="MDExOlB1bGxSZXF1ZXN0MzgxODI0Mzgw"></a>
## [Dangerを導入する](https://github.com/wheatandcat/Peperomia/pull/478)

 - DangerでPull Requestを自動でコードレビューを追加
   -  https://danger.systems/js/
 - 修正ファイルのテストカバレッジが80%以下だった場合に警告を表示する

<img width="768" alt="スクリーンショット 2020-02-29 18 45 00" src="https://user-images.githubusercontent.com/19209314/75605489-adbdbf80-5b26-11ea-8b03-8a34be66993d.png">


<a id="MDExOlB1bGxSZXF1ZXN0Mzk5NjgxMzc3"></a>
## [react-navigation v5にアップデート](https://github.com/wheatandcat/Peperomia/pull/545)

react-navigation v5にアップデート

内容は、以下の記事参照
https://www.wheatandcat.me/entry/2020/04/11/152650




<a id="MDExOlB1bGxSZXF1ZXN0NDAzMjIzMzkw"></a>
## [Expo sdk v37にバージョンアップ](https://github.com/wheatandcat/Peperomia/pull/559)

最新のExpo SDKにアップデートしました。内容は下記参照

https://blog.expo.io/expo-sdk-37-is-now-available-dd5770f066a6


バージョンアップに伴い修正した主な対応
* webサポート強化とあったのでトライしてみましたが、UIライブラリ系がサポートしてなかっのでビルド成功までいけなかった
* Expo SDK37にしたら、@expo/match-mediaが動かなくなったので一旦table判定を別途作成して対応



<a id="MDExOlB1bGxSZXF1ZXN0NDAzMjUwMTA2"></a>
## [prettier 2.0にバージョンアップ](https://github.com/wheatandcat/Peperomia/pull/564)


 - Prettier 2.0にバージョンアップして、もろもろコード修正
   - https://prettier.io/blog/2020/03/21/2.0.0.html

<a id="MDExOlB1bGxSZXF1ZXN0NDAzODAwNzA0"></a>
## [Codecovを実装](https://github.com/wheatandcat/Peperomia/pull/565)


 - テストのカバレッジをCodecovで収集するように設定
  -  https://docs.codecov.io/docs

<img width="802" alt="スクリーンショット 2020-06-14 13 54 05" src="https://user-images.githubusercontent.com/19209314/84585062-875a3080-ae46-11ea-8a9a-9c69e10f41eb.png">



<a id="MDExOlB1bGxSZXF1ZXN0NDA1NjQwODM0"></a>
## [Sign in with Apple実装](https://github.com/wheatandcat/Peperomia/pull/567)

Sign in with Appleを実装。Apple storeの規約でサードパーティのログインを形式の場合はSign in with Appleの実装は必須になったのでFirebase Authenticationに追加

UIも含めてほぼドキュメントのコピペで実装できてよかった。


[https://docs.expo.io/versions/latest/sdk/apple-authentication/:title]

<img src="https://cdn-ak.f.st-hatena.com/images/fotolife/w/wheatandcat/20200426/20200426114958.gif" width="250">



<a id="MDExOlB1bGxSZXF1ZXN0NDA1Njc4OTUw"></a>
## [react-navigation v5でダークモード対応](https://github.com/wheatandcat/Peperomia/pull/568)


react-navigation v5のThemesの設定と

https://reactnavigation.org/docs/themes


ExpoのAppearance(機種のモード設定を取得できる)を実装して機種のモードでダークモードON/OFFするように変更

https://docs.expo.io/versions/latest/sdk/appearance

こんな感じになりました

![20200426120605](https://user-images.githubusercontent.com/19209314/84451753-e70ddb80-ac8e-11ea-9520-7179743a8343.gif)

これを、ブログ記事に貼って以下のリリースノートが完成

www.wheatandcat.me

ちなみにタグをつければRSS経由でリリースノートの情報が取得できるので、Webサイトのほうでも利用できそうです。

https://www.wheatandcat.me/rss?tag=%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E3%83%8E%E3%83%BC%E3%83%88

今までリリースノートを適当で済ませてたけど、今後はちゃんと書いていこうと思います