Skip to content

add: run mise lint on GitHub Actions. - #367

Merged
halkn merged 4 commits into
mainfrom
ci/lint-workflow
Oct 12, 2026
Merged

halkn merged 4 commits into
mainfrom
ci/lint-workflow

Conversation

@halkn

@halkn halkn commented Oct 11, 2026 •

Copy link
Copy Markdown
Owner

変更理由

Closes #352

mise run lint は手元でしか走らず、走らせるかどうかは人と agent の規律に任されていた。CI で走らせるかを試作して判断し、#352 の選択肢 B(ubuntu のランナーで mise run lint を回す)を、必須チェックにしない形で採る。

判断の根拠(#352 の判断基準への答え):

  • CI 専用に足す宣言: ツールの宣言は二重化しない。workflow に書く CI だけのものは次の 3 つ。
    • XDG_CONFIG_HOME を [dotfiles] のリンクの代わりにする
    • apt install zsh
    • mise install を自分で実行する(下記)
  • lint:nvim が CI で走るか: 走る。plugin の取得は約 1 秒。そのために、lint:nvim の中の順番を変えた(下記)。
  • 必須チェック: しない。ruleset は変えない。理由: 主な価値は Linux(WSL)でしか壊れない変更の検出と、手元の lint の飛ばしの検出で、どちらもマージ前に結果を見れば足りる。必須にすると、版を固定していないツールの新しい版で CI だけが落ちた日に、マージが止まる。

変更内容

  1. add: run mise lint on GitHub Actions. — .github/workflows/lint.yml を足した。
    • pull_request と main への push で、ubuntu のランナーで mise run lint を回す
    • permissions: contents: read だけ。secret は使わない(fork からの PR でも同じ権限で走る)
    • XDG_CONFIG_HOME を .config に向け、[dotfiles] のリンク(~/.config/* → .config/*)と同じ状態にする。mise の global config・nvim・git が手元と同じファイルを読む
    • timeout-minutes: 15。plugin の取得に失敗すると、nvim の smoke テストがエラーを出したまま終了しない(手元で確認)
    • action は commit SHA で固定した(actions/checkout v7.0.1、jdx/mise-action v5.1.1)
  2. fix: install the global mise tools without --locked in CI. — mise-action は mise.lock があると mise install --locked を実行する。global config のツールは lockfile に無いので、24 個全てが「not in the lockfile」で失敗した。action の install を止め(install: false)、mise install を自分で実行する。github: のツールを取得するときの API の制限を避けるため、MISE_GITHUB_TOKEN に github.token を渡す。
  3. fix: fetch nvim plugins before emmylua_check in lint. — plugin が未取得の環境では、emmylua_check が plugin の module を解決できず、warning が error 扱いになって落ちた。lint:nvim の中で、plugin を取得する smoke テストを先に走らせる。手元でも、plugin が未取得の新しいマシンで mise run lint が通るようになる。
  4. docs: note the CI lint run in AGENTS.md. — AGENTS.md「Verification」に、CI でも同じ lint が走ること、必須ではないのでマージ前に gh pr checks で確かめること、macOS 固有の差は CI で検出されないので手元の lint を省かないことを足した。

影響範囲

対象: CI(.github/)/ mise(mise-tasks/lint/nvim)/ AGENTS.md

  • PR と main への push のたびに workflow が走る(約 1 分)。結果はマージを止めない。
  • mise run lint の lint:nvim の中の順番が変わる。検査の中身は同じ。

レビューの着目点

  • workflow の権限: contents: read だけで、secret も使わない。MISE_GITHUB_TOKEN に渡すのは、その job の github.token(読み取り専用)。
  • mise-action のキャッシュは、action の段で保存される。ツールを入れるのは後の段なので、キャッシュに入るのは mise 本体だけになる。毎回 mise install に約 33 秒かかる。

確認手順

ubuntu-24.04 のランナーでの結果(run 38126088312):

段 時間 結果
zsh を入れる 9 秒 成功
mise-action 7 秒 成功
mise install(global config の全ツール) 33 秒 成功
mise run lint 5 秒 成功

mise run lint のログで、test:scripts の 6 テスト(repo・wt・block-piped-excluded・block-secret-read・pre-push・ui)、smoke テスト、emmylua_check が全て通っている。

試作の途中で落ちた run と、その原因:

  • run 38125893509: mise-action の mise install --locked で、global config の 24 ツールが失敗した → 2 で直した
  • run 38125953145: emmylua_check が plugin の module を解決できなかった → 3 で直した
$ mise run lint
(手元の macOS でも成功)

範囲外 / 既知の問題

@halkn
halkn marked this pull request as ready for review October 11, 2026 08:58
@halkn
halkn merged commit b08fbcc into main Oct 12, 2026
1 check passed
@halkn
halkn deleted the ci/lint-workflow branch October 12, 2026 02:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

mise run lint を GitHub Actions で実行するか検討する

1 participant