跳到主要內容

Github actions cache - Python, Poetry

Github 在 2022/10/20 發布一項更新,可以在 web 介面下管理 Actions Workflows 的 caches。

不過在此之前,還沒將 actions cache 加到目前使用的專案中,趁這次調整使用看看。手邊有一個以 Python 為主要語言開發、Poetry 為套件管理的專案,預期可以將「相對穩定」的套件 cache 起來。

基本的會使用到的 actions:

另外有兩種方式可以支援 cache 的使用

actions/setup-python

在 actions/setup-python 有兩個參數可以開啟使用,cachecache-dependency-pathcache 可以為 pipenv、pip、poetry。cache-dependency-path 則是指定套件安裝檔的位置:

  • pipenv: Pipfile.lock
  • pip: requirements.txt
  • poetry: poetry.lock

詳細的設定檔範例可以參考文件,雖然 actions/setup-python 提供一個非常簡易的設定,但如果想要更多自訂的快取設定,可以試試原生的 actions/cache

actions/cache

actions/cache 是最原生的功能,可以透過 pathkey 來指定快取的位置。以 Poetry 為例,在 Poetry 相關的預設路徑下,可以針對 ~/.local, ~/.cache 來建立快取。

如果你習慣將環境資料夾裝在專案底下(virtualenvs.in-project=true)也可以將 ./.venv 也建立快取位置。

key 的命名可以使用 hashFiles 來比對 poetry.lock 檔案差異值來建立。

所以依這樣這樣的規則,我們可以有三個快取建立:

  • poetry-venv-${{ hashFiles('\*\*/poetry.lock') }}
  • poetry-local-${{ hashFiles('\*\*/poetry.lock') }}
  • poetry-cache-${{ hashFiles('\*\*/poetry.lock') }}

接下來只要 poetry.lock 沒有變動,都會使用快取來加快流程

相關參考資料

留言

show