Skip to content

feat(nix): integrate uv2nix for Python dependency management #164

feat(nix): integrate uv2nix for Python dependency management

feat(nix): integrate uv2nix for Python dependency management #164

Workflow file for this run

name: CI
on:
push:
pull_request:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
pages: write
id-token: write
jobs:
build-cache:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["python311", "python313"]
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- name: Setup Nix
uses: ./.github/actions/setup-nix
with:
python-version: ${{ matrix.python-version }}
- name: Build Nix environment
run: nix develop .#${{ matrix.python-version }} --command true
gitleaks:
needs: build-cache
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
fetch-depth: 0
- name: Setup Nix
uses: ./.github/actions/setup-nix
- name: Run Gitleaks
run: nix develop --command just gitleaks
ci:
needs: build-cache
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["python311", "python313"]
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
submodules: true
- name: Setup Nix
uses: ./.github/actions/setup-nix
with:
python-version: ${{ matrix.python-version }}
- name: Run Lint
run: nix develop .#${{ matrix.python-version }} --command just lint
- name: Run Ty
run: nix develop .#${{ matrix.python-version }} --command just ty
- name: Run Tests
run: nix develop .#${{ matrix.python-version }} --command just test
coverage:
needs: build-cache
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
submodules: true
- name: Setup Nix
uses: ./.github/actions/setup-nix
- name: Run Tests with Coverage
run: nix develop --command just coverage
- name: Create Coverage Badge
uses: jaywcjlove/coverage-badges-cli@4e8975aa2628e3329126e7eee36724d07ed86fda # v2.2.0
with:
source: coverage/coverage.json
output: coverage/badges.svg
jsonPath: totals.percent_covered
- name: Upload coverage artifact
uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b # v3.0.2
with:
path: coverage/
deploy-coverage:
needs: coverage
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4.0.5