2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub Actionsでリンターの修正を自動化してみた(Ollamaあり)

Last updated at Posted at 2025-02-28

はじめに

勉強用に個人で作成したTerraformやCloudFormationのファイルが増えてきました。
業務に活かすためきれいに書きたいと思っていましたが、なかなか時間が取れていませんでした。
そこで、GitHub Actionsを使ってファイル修正とプルリクエストの作成を試みました。
CloudFormationのlinter(cfn-lint)には自動修正機能がないため、生成AI(Ollama)を使ってみることにしました。(LLMをあまり使ったことがなかったので勉強してみたい気持ちを優先しました👍)

成果物

以下のワークフローのファイルを作成しました。

  1. terraform fmttflintを実行しファイル修正後、プルリクエストを作成するワークフロー(Terraform linter and PR)
    https://github.com/kohei39san/mystudy-handson/blob/main/.github/workflows/terraform-linter-pr.yml

  2. cfn-lintを実行し、ollamaでファイル修正後、プルリクエストを作成するワークフロー(CloudFormation linter and PR)
    https://github.com/kohei39san/mystudy-handson/blob/main/.github/workflows/cfn-linter-pr.yml

Terraform linter and PRを動かしてみる

概要

プルリクができているか

ファイル変更を行い、プッシュしてみました。
その後、terraform fmttflintされたプルリクエストが作成されていました。

スクリーンショット 2025-02-24 112919.png

プルリクはgithub-actionsユーザー作成となっていました。
デフォルトでは、github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>がユーザー、メールアドレスとして使われるようです。
https://github.com/peter-evans/create-pull-request

それ以外でGithub Actionsで使えるユーザー、メールアドレスは以下の記事が参考になりました。
https://qiita.com/thaim/items/3d1a4d09ec4a7d8844ce

ファイル修正もいい感じです!

スクリーンショット 2025-02-24 113004.png

マージもできました!

スクリーンショット 2025-02-24 113128.png

プルリクなので元に戻すこともできそうです!

スクリーンショット 2025-02-24 113150.png

詰まった点1: Githubにおける認証情報の種類

Githubにある色々な権限の違いを理解するのに時間がかかりました。
何をしたいかによって権限の与え方が変わります。

  1. GITHUB_TOKEN: 定義済みトークン
  2. Github Appの登録

他にもたくさん種類があるようです。(覚えきれない。。)

今回は自前のトークンを管理したくなかったので、GITHUB_TOKENを使うことにしました。
GITHUB_TOKENで、ブランチ、プルリクの作成権限がついているかの確認方法は以下の通りです。
https://dev.classmethod.jp/articles/mapping-secrets-github-token/

ブランチの書き込みが分かりづらいですが、以下記事からAPIの分類POST /repos/{owner}/{repo}/git/refsを調べて、
https://blog.p1ass.com/posts/create-branch-using-github-api/

以下記事と見比べると、contentsに分類され、GITHUB_TOKENでも読み書きできることが分かります。
https://docs.github.com/en/rest/authentication/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-contents

詰まった点2: push前のリポジトリの権限修正

まずはリポジトリでGithub Actionsを有効にする必要があります。

また、GITHUB_TOKENは権限のカスタマイズができ、デフォルトですべての権限使えるわけではありませんでした。
ワークフローから書き込みの権限を許可する必要がありました。

※その他参考

CloudFormation linter and PRを動かしてみる

概要

プルリクができているか

pushしてみると、プルリクエストが作成されていました!

スクリーンショット 2025-02-24 115011.png

スクリーンショット 2025-02-24 115033.png

しかし、以下の問題が発生しました。

  • ollamaが起動していないことがあった

スクリーンショット 2025-02-24 114528.png

ひとまずOllama実行までに待機時間(なんとなく5秒にしました。。)を設けました。

  • 指示していない修正があった

もともとyamlファイルにあったコメントも指示だと思って修正したようです。

  • 間違った修正案を提示してくることも多かった

おわりに

自動化できて便利だと感じましたが、課題もあるので改良が必要だと感じました。
ただ、自動である程度直してくれるのは助かりますし、Botでも誰かと作業している感があってわくわくするので、使ってみようと思います!
これからも勉強します!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?