A GitHub Action that installs IVPM, restores
its content-addressed dependency cache, and runs ivpm update — collapsing the
usual CI boilerplate into one cache-aware step.
- uses: actions/checkout@v4
- uses: fvutils/ivpm-setup@v1
with:
dep-set: ci
# deps are now populated in ./packages, and the cache is warmInstead of this (no caching — re-clones/re-downloads every run):
- run: python -m pip install ivpm
- run: ivpm update- Installs IVPM (pinned if you want), using
uvwhen available, elsepip. - Restores IVPM's content-addressed cache (and optionally the pip/uv download caches), keyed on your dependency manifest.
- Runs
ivpm updateto populate./packages(unlessrun-update: false). - Saves the cache inline after the update.
IVPM's cache is content-addressed by commit/version, so restoring a stale cache is always safe — only changed deps are re-fetched.
name: CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: fvutils/ivpm-setup@v1
- run: ./packages/python/bin/python -m pytestAfter ivpm update, run tools either directly (./packages/python/bin/python …)
or — for workspaces that pull in tools publishing export.envrc (e.g. EDA
toolchains) — through direnv against the generated packages/packages.envrc:
- uses: fvutils/ivpm-setup@v1
- run: sudo apt-get update && sudo apt-get install -y direnv && direnv allow .
- run: direnv exec . pytestThis needs direnv on the runner and a project-root .envrc that does
source_env packages/packages.envrc. See the docs
for details.
| Input | Default | Description |
|---|---|---|
version |
latest | IVPM version spec to install (pin for reproducibility). |
python-version |
— | If set, runs actions/setup-python first. |
installer |
auto |
auto (uv if available, else pip), pip, or uv. |
dep-set |
— | Dependency set(s); repeated -d. Newline/comma/space separated. |
run-update |
true |
false for setup-only mode. |
token |
${{ github.token }} |
Token for private deps / API limits. |
See the full documentation for all inputs, outputs, caching details, and authentication.
| Output | Description |
|---|---|
cache-hit |
true if the primary cache key matched exactly. |
ivpm-version |
Resolved installed IVPM version. |
cache-dir |
Absolute path used as IVPM_CACHE. |
Full docs: https://fvutils.github.io/ivpm-setup/
See LICENSE.