
Goの実行バイナリを頒布するときに必要な、依存ライブラリのライセンスをまとめたCREDITSファイルを出力してくれるもの。
Goの場合、例えサードパーティライブラリを使ってないとしても、Goの標準モジュールのライセンスの同梱が必要。

これらがGitHub Actionsで自動で行われる


# .github/workflows/tagpr.yml
name: tagpr
on:
push:
branches: ["main"]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: Songmu/tagpr@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}



git-flow コマンドはあったがそれ以外には追随しなかった
% svn up && ./deploy.sh% git pull && ./deploy.shgit mergeしなくなったtagを打つためのcommitを作る必要がある。
案外やることある。
minil new, godzil new で雛形作成minil release, godzil new でリリース
他にもリリース時に変更するファイルはプロジェクトごとにあるが、tagprはこの2つの面倒をある程度見てくれる。
個人でやってる分にはいいが、引き継いだりチームでやるときに問題が表出することも

Your software's major version should never exceed the first and most important number in computing: zero.


.github/release.yml をリポジトリに配置して、グルーピング等も定義できる
tagprは同名のGo製コマンドですが、GitHubの機能とAPIをフル活用している。






package tagpr
const version = "1.0.6"
var revision = "HEAD"
Goではこういうversion.goというファイルをリポジトリに配置するようにしている。
-ldflagsでコミットハッシュを埋め込みruntime/debug.BuildInfo を使えば、go install 時にバージョン情報を取得できる
go build のときは取れなくなってしまうマージ済みのpull requestに major, minor のようなタグが付いていたらそれを見て次のバージョンを仮ぎめしてくれる
[tagpr]
changelog = false
- uses: actions/checkout@v3
- id: tagpr
uses: Songmu/tagpr@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: ./.github/actions/release
with:
tag: ${{ steps.tagpr.outputs.tag }}
if: "steps.tagpr.outputs.tag != ''"
[tagpr]
command = 'go run path/to/release.go'
GitHub Actions上でtapgrが動くときに、ついでに実行するコマンドを指定できる。自動書き換え目的。