事象
GitHub Actions Runner Controller (ARC)でactions/setup-dotnetが失敗する。
Run actions/setup-dotnet@v4 /home/runner/_work/_actions/actions/setup-dotnet/v4/externals/install-dotnet.sh --skip-non-versioned-files --runtime dotnet --channel LTS mkdir: cannot create directory '/usr/share/dotnet': Permission denied Warning: Failed to install dotnet runtime + cli, exit code: 1. mkdir: cannot create directory '/usr/share/dotnet': Permission denied
arc-runnersが使用しているイメージの問題か、setup-dotnetの問題かは知らないが通らない。
多分、GitHubホステッド依存のsetup-dotnetが問題かと。
対応方法
ARC上では次の環境変数を定義する。
DOTNET_INSTALL_DIRはactions/setup-dotnet固有で、.NET固有ではない。
runs-on: arc-runner-set env: DOTNET_INSTALL_DIR: ~/.dotnet
.NET environment variables – .NET CLI | Microsoft Learn
調査過程
ググると、同じ事象が。1件のみ。
解決策として挙げられているのはこれ。
Permission denied in /usr/share/dotnet · Issue #327 · actions/setup-dotnet
ARCは使い捨てのPodで実行されるので、動けば良い。
何もせずともactions/setup-pythonは動くので、多分actions/setup-dotnetの問題。
OSごとに、DOTNET_INSTALL_DIRの既定値が設けられているが、問題の本質。実行ユーザーによってパスが変わるため。
install-dotnet.shの仕様は知らないが、root権限で動かすようにしないと狙い通りにならないのでは?
尚、Issueのコメントは./.dotnetとカレントディレクトリに作るようになっているが、~/.dotnetの方がmacOSに近い設定になると思う。