<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Github-Actions on Haruaki Tamada</title><link>https://tamada.github.io/tags/github-actions/</link><description>Recent content in Github-Actions on Haruaki Tamada</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Copyright &amp;copy; by Haruaki Tamada. Made with [Hugo](https://gohugo.io/). Deployed to [GitHub Pages](https://pages.github.com/).</copyright><lastBuildDate>Thu, 13 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tamada.github.io/tags/github-actions/index.xml" rel="self" type="application/rss+xml"/><item><title>自作ツールの公開ワークフローを整えた</title><link>https://tamada.github.io/blog/20260813-workflow_of_product_release/</link><pubDate>Thu, 13 Aug 2026 00:00:00 +0000</pubDate><guid>https://tamada.github.io/blog/20260813-workflow_of_product_release/</guid><description>&lt;h2 class="relative group"&gt;🗣️ 背景&#10; &lt;div id="-背景" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#-%e8%83%8c%e6%99%af" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;色々な CLI アプリケーションを作っている。十数個ある。そのリリース作業で、ずっと以下の3つに困っていた。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;1. 1回のリリースで触る場所が多い。&lt;/strong&gt; 昨今の CLI アプリケーションは、バイナリを置いて終わりではない。macOS と Linux、arm64 と amd64 の組み合わせでバイナリを用意し、コンテナイメージを公開し、crates.io などのレジストリに登録し、Homebrew🍺 のレシピを更新し、プロダクトのホームページも作る。1回のリリースに対して、公開先がいくつもある。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;2. 同じ情報を何箇所にも手で書き写していた。&lt;/strong&gt; バージョン、リリース日、説明、ライセンス。同じ内容を、プロダクトのリポジトリ、Homebrew のレシピ、自分のホームページに、それぞれ別々に書いていた。二重、三重の管理である。当然、情報の齟齬が様々なところで生じるし、更新忘れも結構あった。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;3. プロダクトの一覧が、機械可読な形でどこにもない。&lt;/strong&gt; どんなプロダクトがあるのか、それぞれいつリリースしたのか。ホームページに載せたくても、プログラムから読める形で集約された場所がないので、結局また手で書くことになる。2の原因でもある。&lt;/p&gt;&#10;&lt;p&gt;このうち 1 は、後述するように既存のツールでもそれなりに何とかなる。厄介なのは 2 と 3 で、これは&lt;strong&gt;第1次情報がどこにあるのかを決めていない&lt;/strong&gt;ことが原因である。裏を返せば、正となる情報を1箇所に決めて、他はすべてそこから取ってくるようにすればよい。&lt;/p&gt;&#10;&lt;p&gt;このようなことを自動化したいなと、これまでずっと思っていたのだが、この度、ようやく目処が立ったので、内容をまとめておく。&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;🌊 Workflow&#10; &lt;div id="-workflow" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#-workflow" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;最初に行うべきは、マシンリーダブルなものを第１次情報とすることである。これを &lt;a href="https://github.com/tamada/api" target="_blank" rel="noreferrer"&gt;&lt;code&gt;tamada/api&lt;/code&gt;&lt;/a&gt; として作成した。そして、プロダクトの情報は基本的に GitHub で管理し、GitHub 上で管理できない情報のみを &lt;code&gt;tamada/api&lt;/code&gt; に置くことにした。加えて、GitHub Pagesで、擬似REST APIとして、さまざまな情報を公開することにした。基本的に情報を取得させるだけであるため、GET メソッドのみ対応として、JSON を様々な場所においておくことで対応した。具体的な内容は、https://tamada.github.io/api/ を参照されたい。ホームページの更新や Homebrew なども、すべてこのリポジトリの GitHub Pages から情報を取得することにする。&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://tamada.github.io/blog/20260813-workflow_of_product_release/features.png"/></item></channel></rss>