Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CI: Runner Image macos-11 20230612.1 (macOS 11.7.7)でバイナリビルドに失敗する #698

Closed
1 of 3 tasks
aoirint opened this issue Jun 19, 2023 · 4 comments · Fixed by #702
Closed
1 of 3 tasks
Labels
OS 依存:mac macOS に依存した現象 バグ

Comments

@aoirint
Copy link
Member

aoirint commented Jun 19, 2023

不具合の内容

フォーク先リポジトリでリリースを作成し、GitHub Actionsでビルドしたところ、macos-11 20230612.1 (macOS 11.7.7)が使用されたとき、バイナリビルドCI(.github/workflows/build.yml)が失敗しました。macos-11 20230516.1 (macOS 11.7.6)が使用されたときは成功しました。

現象・ログ

actions/setup-python@v4で、Python 3.11.3のインストールに失敗しているようです。
macOS 11.7.7から、デフォルトで入っているPythonが3.11.3から3.11.4にアップデートされていることが関係していそうです。

ログ

macOS 11.7.6 (OK)のログ
Set up job

Current runner version: '2.305.0'
Operating System
  macOS
  11.7.6
  20G1231
Runner Image
  Image: macos-11
  Version: 20230516.1
  Included Software: https://github.com/actions/runner-images/blob/macOS-11/20230516.1/images/macos/macos-11-Readme.md
  Image Release: https://github.com/actions/runner-images/releases/tag/macOS-11%2F20230516.1

(略)

Setup Python

Installed versions
  Successfully set up CPython (3.11.3)
/Users/runner/hostedtoolcache/Python/3.11.3/x64/bin/pip cache dir
/Users/runner/Library/Caches/pip
pip cache is not found
macOS 11.7.7 (NG)のログ
Set up job

Current runner version: '2.305.0'
Operating System
  macOS
  11.7.7
  20G1345
Runner Image
  Image: macos-11
  Version: 20230612.1
  Included Software: https://github.com/actions/runner-images/blob/macOS-11/20230612.1/images/macos/macos-11-Readme.md
  Image Release: https://github.com/actions/runner-images/releases/tag/macOS-11%2F20230612.1

(略)

Setup Python

Installed versions
  Version 3.11.3 was not found in the local cache
  Version 3.11.3 is available for downloading
  Download from "https://github.com/actions/python-versions/releases/download/3.11.3-4626642838/python-3.11.3-darwin-x64.tar.gz"
  Extract downloaded archive
  /usr/bin/tar xz -C /Users/runner/work/_temp/c1226c5c-0999-4b78-989b-4fe1e2bf9dcd -f /Users/runner/work/_temp/05244[16](https://github.com/aoirint/voicevox_engine/actions/runs/5303355367/jobs/9613701664#step:19:17)e-2ea4-433e-b69f-8d0b9e7e81c2
  Execute installation script
  Check if Python hostedtoolcache folder exist...
  Deleting Python /Users/runner/hostedtoolcache/Python/3.11.4/x64
  Install Python binaries from prebuilt package
  installer: Package name is Python
  installer: Upgrading at base path /
  installer: The upgrade was successful.
  Create hostedtoolcach symlinks (Required for the backward compatibility)
  Create Python 3.11.3 folder
  Create additional symlinks (Required for the UsePythonVersion Azure Pipelines task and the setup-python GitHub Action)
  Error: chmod:
  Error: changing permissions of '../python': Operation not permitted
  chmod: changing permissions of 'python3': Operation not permitted
  chmod: changing permissions of 'python3.11': Operation not permitted
  chmod: changing permissions of 'python[31](https://github.com/aoirint/voicevox_engine/actions/runs/5303355367/jobs/9613701664#step:19:32)1': Operation not permitted
  chmod: changing permissions of 'python': Operation not permitted
  Error: The process '/bin/bash' failed with exit code 1

再現手順

https://github.com/VOICEVOX/voicevox_engine をフォーク、GitHub Actionsを有効化、リリースを作成し、CIでmacos-11 20230612.1を引き当てる。

期待動作

新しいRunner Image(macos-11 20230612.1)でもバイナリビルドができる。

VOICEVOXのバージョン

https://github.com/VOICEVOX/voicevox_engine/tree/1c10fe07a837d94b2886884e259b407683c0b992

OSの種類/ディストリ/バージョン

  • Windows
  • macOS
  • Linux

その他

@aoirint aoirint added the バグ label Jun 19, 2023
@github-actions github-actions bot added the OS 依存:mac macOS に依存した現象 label Jun 19, 2023
@Hiroshiba
Copy link
Member

なるほどです!!原因究明感謝です。
原因を見るに、このリポジトリのPythonバージョンを上げちゃえば直るかも………?

@aoirint
Copy link
Member Author

aoirint commented Jun 19, 2023

最小構成を作ってみたところ、GNU coreutilsがインストールされている場合に起きそうなことが分かりました。

#668 で、簡略化のためにGNU版のcoreutilsにPATHが通りましたが、setup-python@v4は、BSD版のchmodを想定して処理しているのではないかと思いました。処理順を変えるか、PATHを通さない形に変更するとよさそうでした。

echo "/usr/local/opt/coreutils/libexec/gnubin" >> $GITHUB_PATH

エディタでもGNU sedで同様のことが起きるかもなのでref: VOICEVOX/voicevox#1290

@Hiroshiba
Copy link
Member

あーなるほどです!! 調査ありがとうございます、助かります!!

今回はとりあえず順番並び替えで対処できそうですね!
もしjobの途中で実行するもの(action/upload-artifactなど)で問題が起こった場合はこの方法はちょっと対処が難しそうですね・・・。

runのときだけ読み込まれる.bashrc.bash_profileなどがあれば、そこの中でPATHを書き換えると良いのかもと思いました。
そういうのがあるか不明ですが。(shell: bash -lすればどこかの.bashrcは読んでくれるかも・・・?)

あるいはdefaults: run: shellを指定して特定のファイルをsourceするようにするとかでしょうか・・・。

@Hiroshiba
Copy link
Member

shell: bash -leo pipefail {0}にして.bashrcに書き込めばとりあえずsourceしてくれることは確認しました。

検証結果
# 設定
defaults:
  run:
    shell: bash -leo pipefail {0} # .bashrcを読み込むようにする
# ステップA
brew install gnu-sed
echo 'export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"' >> $HOME/.bashrc

# ステップB
which sed

出力: /usr/local/opt/gnu-sed/libexec/gnubin/sed

コード https://github.com/Hiroshiba/test_actions/actions/runs/5315179971/workflow
workflow https://github.com/Hiroshiba/test_actions/actions/runs/5315179971/jobs/9623247333

・・・まあこんなことするより${{ matrix.sed }}${{ matrix.split }}とかを設定・使用したほうが良い気がしますね。。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
OS 依存:mac macOS に依存した現象 バグ
Projects
None yet
2 participants