[OSS活動] polimoneyにGo言語のlintを実行するワークフローを追加

Golang

はじめに

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し...
タイトルとURLをコピーしました