如何在 GitHub 操作中缓存已安装的工具?
How do I cache an installed tool between runs in GitHub Actions?
我需要 运行 poetry version
来获取 pyproject.toml
每次推送到 master touching pyproject.toml
的版本。但是,由于 Poetry 未安装在 GitHub Actions 运行ner 虚拟环境中,我还需要先安装它才能 运行 任何 Poetry 命令。我想缓存此工具安装,这样我就不必在每个 运行 上安装它并用完 Actions 分钟。我唯一需要 运行 的 Poetry 命令是 poetry version
,所以我不担心该工具已过时 - 它只需要解析 pyproject.toml
并获取项目版本号。我也不确定使用什么作为缓存操作的 key
- 我假设它可以是静态的
所需的操作顺序类似于:
- 查看存储库。
- 检查诗歌的缓存。如果没有安装,请安装它。
- 运行
poetry version
.
actions/cache@v2
的 key
输入可以是字符串 - 可以任意输入。 path
输入是工具的位置。
潜在陷阱:
- 请注意,
path
参数不会像 $HOME
那样解析环境变量,但波浪号 (~
) 可用于表示主目录。
- 诗歌必须在每个 运行 之前添加到 PATH,因为在 运行 之间不保留默认环境变量。
- Poetry 可能会抱怨它很快就会放弃对 Python2 的支持 - 以确保它是 运行 Python 3,确保使用 运行 中的任何 Python 3个版本。
on:
push:
branches:
- master
paths:
- 'pyproject.toml'
jobs:
pyproject-version:
runs-on: 'ubuntu-latest'
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: '3.7'
# Perma-cache Poetry since we only need it for checking pyproject version
- name: Cache Poetry
id: cache-poetry
uses: actions/cache@v2
with:
path: ~/.poetry
key: poetry
# Only runs when key from caching step changes
- name: Install latest version of Poetry
if: steps.cache-poetry.outputs.cache-hit != 'true'
run: |
curl -sSL https://install.python-poetry.org | python -
# Poetry still needs to be re-prepended to the PATH on each run, since
# PATH does not persist between runs.
- name: Add Poetry to $PATH
run: |
echo "$HOME/.poetry/bin" >> $GITHUB_PATH
- name: Get pyproject version
run: poetry version
我需要 运行 poetry version
来获取 pyproject.toml
每次推送到 master touching pyproject.toml
的版本。但是,由于 Poetry 未安装在 GitHub Actions 运行ner 虚拟环境中,我还需要先安装它才能 运行 任何 Poetry 命令。我想缓存此工具安装,这样我就不必在每个 运行 上安装它并用完 Actions 分钟。我唯一需要 运行 的 Poetry 命令是 poetry version
,所以我不担心该工具已过时 - 它只需要解析 pyproject.toml
并获取项目版本号。我也不确定使用什么作为缓存操作的 key
- 我假设它可以是静态的
所需的操作顺序类似于:
- 查看存储库。
- 检查诗歌的缓存。如果没有安装,请安装它。
- 运行
poetry version
.
actions/cache@v2
的 key
输入可以是字符串 - 可以任意输入。 path
输入是工具的位置。
潜在陷阱:
- 请注意,
path
参数不会像$HOME
那样解析环境变量,但波浪号 (~
) 可用于表示主目录。 - 诗歌必须在每个 运行 之前添加到 PATH,因为在 运行 之间不保留默认环境变量。
- Poetry 可能会抱怨它很快就会放弃对 Python2 的支持 - 以确保它是 运行 Python 3,确保使用 运行 中的任何 Python 3个版本。
on:
push:
branches:
- master
paths:
- 'pyproject.toml'
jobs:
pyproject-version:
runs-on: 'ubuntu-latest'
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: '3.7'
# Perma-cache Poetry since we only need it for checking pyproject version
- name: Cache Poetry
id: cache-poetry
uses: actions/cache@v2
with:
path: ~/.poetry
key: poetry
# Only runs when key from caching step changes
- name: Install latest version of Poetry
if: steps.cache-poetry.outputs.cache-hit != 'true'
run: |
curl -sSL https://install.python-poetry.org | python -
# Poetry still needs to be re-prepended to the PATH on each run, since
# PATH does not persist between runs.
- name: Add Poetry to $PATH
run: |
echo "$HOME/.poetry/bin" >> $GITHUB_PATH
- name: Get pyproject version
run: poetry version