Examples
Minimal
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: fvutils/ivpm-setup@v1
- run: ./packages/python/bin/python -m pytest
Pinned + matrix + custom dep-set
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
python: ["3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v4
- uses: fvutils/ivpm-setup@v1
with:
version: "2.14.0"
python-version: ${{ matrix.python }}
installer: uv
dep-set: ci
cache-key-prefix: ivpm-${{ matrix.python }}
Note the per-matrix cache-key-prefix so each Python version keeps its own
cache.
Setup-only (drive update manually)
steps:
- uses: actions/checkout@v4
- uses: fvutils/ivpm-setup@v1
with:
run-update: "false"
- run: ivpm update -d gui-tools -j 4
The second step inherits IVPM_CACHE and the git-auth configuration from the
action.
Running tools via direnv
For workspaces that pull in tools publishing export.envrc (e.g. EDA
toolchains), run them inside the activated environment with direnv exec:
steps:
- uses: actions/checkout@v4
- uses: fvutils/ivpm-setup@v1
- name: Enable direnv
run: |
sudo apt-get update && sudo apt-get install -y direnv
direnv allow .
- run: direnv exec . verilator --version
- run: direnv exec . pytest
Requires a project-root .envrc that sources packages/packages.envrc (see
the IVPM direnv documentation) and direnv installed on the runner.
Multiple dep-sets
- uses: fvutils/ivpm-setup@v1
with:
dep-set: |
default
ci
Private cross-repo dependencies
- uses: fvutils/ivpm-setup@v1
with:
token: ${{ secrets.IVPM_DEPS_TOKEN }}