🙌

[checkmake] Makefile向けのLinterを実行するGitHub Actionを作ってみた

2022/09/24に公開

エレベータ―ピッチ

  • checkmakeによって、Makefileのフォーマットをチェック
  • GitHub Actionとして、GitHub Marketplaceに公開し、容易に導入可能。
  • 軽量なコンテナを使い1分以内に実行が可能
  • OSS+GitHub Actionsなのでプライベートリポジトリなどでも無課金で使用可能

概要

一般的にチーム開発においてLinterはコードに統一感を与え、潜在的なバグの解消に役立ちます。またDocker向けのHadolintはより軽量なイメージを作成するためのtipsを教えてくれたりと、Linterは様々な側面から開発をサポートしてくれます。

しかしながら、Makefile向けにLinterを適用しているケースは非常に少ないと感じました。また、checkmakeというLinterはありましたが、インストール手順が煩雑であるため、あまり活用されてはいませんでした。

こうした問題を解決するために、checkmake actionを開発し、GitHub Actionで容易にMakefile向けのCIを実行可能にしました。

使い方

最低限デフォルト設定で実行したい場合は以下のコマンドを入力すだけで実行可能です。

name: checkmake action
on:
  push:

jobs:
  checkmake:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: checkmake action
        uses: Uno-Takashi/checkmake-action@main

成功すれば、正常終了し、失敗であれば以下のように問題点を指摘してくれます。

    RULE              DESCRIPTION             LINE NUMBER  
                                                           
  minphony   Missing required phony target    0            
             "all"                                         
  minphony   Missing required phony target    0            
             "clean"                                       
  minphony   Missing required phony target    0            
             "test"                                        
                        

しかしながら、上記の例は一切設定をせずに実行する場合です。例えば、デフォルトパスは./Makefileを指定しているため、任意のファイルに対して実行したい場合はオプションを与える必要があります。

        uses: Uno-Takashi/checkmake-action@main
        with:
            makefile: "path/to/makefile"

このほかにもデバッグモードの起動、コンフィグファイルの読み込み、cliの出力結果の保存先指定などが可能です。詳細はREADMEを参照してください。

まとめ

最近自動化にはまっている今日この頃です。過去にはLizard-Runnerというアクションも作ってみました。

やはり、チーム内で色々な仕組みを自動化してくのは楽しいですね。これからも趣味として続けていきたいです。

今回作ったcheckmake-actionもしよければ使っていただければ幸いです。

GitHubで編集を提案

Discussion