🐈

GitHub Actions on UbuntuでHomebrewを使う

に公開

諸般の事情からmacOS / Linuxに両対応したAPIクライアントをSwiftで書いている。
https://github.com/fumito-ito/AsyncHTTPKit

コードのサイズが大きくなってきたのでSwiftlintを導入しようとしたが、 ubuntu-latest のrunner-imageで brew install swiftlint を実行すると以下のようなエラーが出た。

/home/runner/work/_temp/d47c62dc-660e-4c79-bffa-2f8f6f8bbe17.sh: line 1: brew: command not found

だが、 runner-images のリポジトリで ubuntu-latest のREADMEを確認するとHomebrewはデフォルトでインストールされているのだ。これはどういうことだろうか?
https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md

HomebrewはインストールされているがPATHが通っていない

過去のIssueを漁ってみると2022年9月ごろにHomebrewをPATHから削除するという対応が取られたようだ。ハチャメチャにdownvoteされている。
https://github.com/actions/runner-images/issues/6283

公式のアクションが用意されているので、それを利用するのが楽

当時のIssueなどを漁るとSwiftlintのバイナリを適当なPATHに手動でダウンロードしたり、HomebrewにPATHを通し直すなどの対応が取られていたようだ。

2025年現在ではHomebrewが公式のSetupアクションを公開しているので、それを使うのが一番楽だった。
https://github.com/Homebrew/actions/tree/main/setup-homebrew

使い方も簡単で下記のアクションを任意の位置に配置するだけである。

- name: Set up Homebrew
  uses: Homebrew/actions/setup-homebrew@7f6df1cd36597249cbf9810ff3aeff47edf8243b

まとめ

  • ubuntu-latest のrunner-imageにはHomebrewがインストールされているが、PATHが通っていない
  • 簡単にセットアップするには Homebrew/actions/setup-homebrew を使うのがおすすめ

Discussion