もんりぃ is undefined.

育児ネタとか、技術ネタとか。

UPM Registry への publish を楽にするための GitHub Actions を書きました

はじめに

github.com

GitHub Actions 便利ですよね!本気出せば CI/CD を完全に駆逐するんじゃないかとすら思っています。

てことで、 Unity Package Manager に準拠した Unity プロジェクトの GitHub リポジトリ上で Releases を作成すると、自動的に UPM Registry に publish する という GitHub Actions を書いて GitHub Marketplace に公開 したのでその辺のお話しを書きます。

GitHub Actions is 何?

GitHub 上で任意の操作をトリガーにして、任意のワークフローを実行出来る GitHub 公式の機能です。

トリガーにできる操作はすごくイッパイあるんですが、例えば「Pull Request が作成されたとき」とか「Issue にコメントが付いたとき」など GitHub で起きるあらゆるイベントに対応している と言っても過言ではありません。

作った Action is 何?

Unity Package Manager に準拠した Unity プロジェクトの GitHub リポジトリ上で Releases を作成すると、自動的に UPM Registry に publish する Action を作りました。

書いてあるとおりなんですが、ちょっと分解すると以下のような感じになります。

  • Unity Package Manager で取り扱えるような構造になっている Unity プロジェクトのリポジトリ上で動作する
    • 具体的に言うと、 Assets/package.json が正しく配置されているリポジトリであれば OK です。
  • GitHub の Releases を新規追加した際に、自動的に発動する
  • Releases 作成時に設定するバージョン名をそのまま Assets/package.json に反映させる
  • Releases 作成時に記入する Release Notes をそのまま Assets/CHANGELOG.md に追記する
  • それらの差分をリポジトリに push しつつ、タグのコミットハッシュを付け替える
    • ココが少し強引なんだけど、まぁ…良い…よね…?

推しポイント is 何?

なんと言っても Releases を作ったら package.json とか CHANGELOG.md とかをヨシナに弄って publish してくれる 点に尽きます。

この辺、地味に面倒臭くて作業漏れが起きてしまうポイントだったりするのと、そもそも Release Notes が GitHub の Releases と CHANGELOG.md とで二重管理になっているのがずっと気になっていたので、それを解消できるというのは大きいんじゃないでしょうか?

苦労した点 is 何?

GitHub Actions の仕様を読み解くのに苦労しました。

まぁ、ドキュメントがシッカリしているので、そこまで苦労はしなかったんですが、 Public Action として切り出すところが少し苦戦しました。

Public Action ってのは、steps の一つとして uses: monry/actions-upm-publish@v1 みたいに外のリポジトリに定義された Action をインポート出来るようにするための仕組みなんですが、この中では secrets っていうコンテキストが使えないらしく、リポジトリ内で完結していたワークフローがそのまま持ち出せなかったので「🤔」ってなってました。

あとは、テストの書き方がよーわからんかったので、とりあえずノーテストでリリースしてしまいました🙇‍♂️

おわりに

最近の週末は娘の寝かしつけが終わった後で、これをシコシコ作ったりしていたので、ようやくお披露目できて嬉しいです。

GitHub Marketplace で Star 付けてくれちゃったりなんかすると泣いて喜びます!

あ、何か不具合とかあったらリポジトリの Issues までオナシャス🙏