はじめに
polimoneyという政治資金の見える化ツールがあります。
GitHub - digitaldemocracy2030/polimoney: ポリマネー:政治資金を見える化する
ポリマネー:政治資金を見える化する. Contribute to digitaldemocracy2030/polimoney development by creating an account on GitHub.
このツールはPythonとNext.jsとGo言語で書かれていますが、Go言語についてはPR作成時にLinterやFormatterが実行されるようになっていませんでした。
lint-go.ymlの作成
そこで以下のlint-go.ymlを作成してみました。
polimoneyではbackendというディレクトリにGo言語のコードが格納されているため、こちらに修正が入った場合のみ実行されるようにしています。
name: Check Golang
# プルリクエストが作成・更新された時にこのワークフローを実行
on:
pull_request:
types: [opened, synchronize, reopened]
# backendディレクトリ配下の.goファイルに変更があった場合のみ実行
paths:
- 'backend/**.go'
jobs:
# フォーマットチェックを行うジョブ
format-check:
runs-on: ubuntu-latest
steps:
# 1. リポジトリのコードをチェックアウト
- name: Checkout
uses: actions/checkout@v4
# 2. Go言語の環境をセットアップ
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.22' # プロジェクトで使用しているGoのバージョンを指定
# 3. gofmtでフォーマットをチェック
# -l オプションはフォーマットが崩れているファイル名を出力する
# 出力があった場合、ワークフローは失敗する
- name: Check formatting with gofmt
run: |
FMT_FILES=$(gofmt -l ./backend)
if [ -n "${FMT_FILES}" ]; then
echo "The following files are not formatted correctly:"
echo "${FMT_FILES}"
exit 1
fi
echo "All Go files are correctly formatted."
動作確認
フォークした自分のリポジトリでPR作成してみて試したところ無事実行されました。

初回実行なのでフォーマッターが各ファイルに実行されておらずエラーが出まくります。
chore: go言語のlintを実行するワークフローを追加 · YukihiroArakawa/forked-polimoney@0c22d3d
ポリマネー:政治資金を見える化する. Contribute to YukihiroArakawa/forked-polimoney development by creating an account on GitHub.

PR提出
PR作成したら無事マージしてもらえました。
chore: PR作成時にGO言語のlintを実行するワークフローを作成 by YukihiroArakawa · Pull Request #185 · digitaldemocracy2030/polimoney
変更の概要PR作成時にGO言語のlintを実行するワークフローを作成しました。またgofmtを初めてプロジェクトで実行するため、gofmt -w ./backendを実行した変更結果についてもコミットしています。スクリーンショットforkし...