これまで、PythonのプロジェクトでGithub Actionを使うとき、こんな感じで仮想環境ごとキャッシュしていました。
# 仮想環境を作成-name:Create venvrun:|python3 -m venv .venv# 仮想環境をキャッシュから復元-name:Cache venv dependenciesuses:actions/cache@v1with:path:.venvkey:venv-${{ runner.os }}-${{ hashFiles('requirements.txt') }}restore-keys:|${{ runner.os }}-venv-
しかし、先日、こんな感じでエラーが出るようになってしまいました。
/home/runner/work/_temp/eeef70b5-c170-4f26-b881-a730c4e3ea5f.sh:line1:.venv/bin/python:Nosuchfileordirectory##[error]Process completed with exit code 127.
これまで、Github ActionのPython3.8環境ではPython3.8.3が動いていたんですが、それがPython 3.8.5に更新され、3.8.3は削除されてしまったようです。キャッシュしてある仮想環境では、ふるいPython3.8.3を参照しているので、エラーになってしまいます。
今後もPythonの実行環境は自動的に更新されるでしょうし、ファイルのパスなども変更される可能性もないわけではありません。
そこで、Pythonの実行ファイル名をファイルに出力し、このファイルもキャッシュのキー値として指定するようにしました。こうしておけば、Pythonのバージョンが変わったら自動的にキャッシュも再構築されます。
# Pythonのファイル名を出力-name:Save Python pathrun:|which python3 > python3_path.txt# 仮想環境を作成-name:Create venvrun:|python3 -m venv .venv# 仮想環境をキャッシュから復元-name:Cache venv dependenciesuses:actions/cache@v1with:path:.venvkey:venv-${{ runner.os }}-${{ hashFiles('requirements.txt', 'python3_path.txt') }}restore-keys:|${{ runner.os }}-venv-
Copyright © 2020 Atsuo Ishimoto
Powered bymiyadaiku