Skip to content

refactor: split packages and add release machinery #26

refactor: split packages and add release machinery

refactor: split packages and add release machinery #26

Workflow file for this run

name: security
on:
pull_request:
paths-ignore:
- '**.md'
- 'docs/**'
push:
branches: [main]
paths-ignore:
- '**.md'
- 'docs/**'
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
zizmor:
name: Zizmor (workflow audit)
runs-on: self-hosted
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Set up uv
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with:
version: "0.11.8"
python-version: "3.12"
- name: Run zizmor
run: uvx --from zizmor==1.24.1 zizmor --persona pedantic --format github .github/workflows
gitleaks:
name: Gitleaks (secrets scan)
runs-on: self-hosted
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Run gitleaks
run: |
curl -sSL "https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_linux_x64.tar.gz" \
| tar xz -C /tmp gitleaks
/tmp/gitleaks detect --source . --no-banner --no-git
bandit:
name: Bandit (Python source audit)
runs-on: self-hosted
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Set up uv
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with:
version: "0.11.8"
python-version: "3.12"
- name: Run bandit
run: |
uvx bandit==1.9.4 -c pyproject.toml -r \
src \
packages/sdk/src \
packages/cli/src \
packages/deploy/src \
packages/hook/src \
scripts
pip-audit:
name: pip-audit (dependency CVE scan)
runs-on: self-hosted
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Set up uv
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with:
version: "0.11.8"
python-version: "3.12"
- name: Run pip-audit (server image runtime)
# src/lumilake_server/requirements.txt is the pin set baked into
# the published Docker image (generated by sync_requirements.py).
run: uvx pip-audit==2.9.0 --strict -r src/lumilake_server/requirements.txt
- name: Export wheel install closure
# PyPI users' install: every extra, no dependency-group (dev/lint/test
# and server-runtime don't ship in any wheel), no workspace members.
run: |
uv export --all-extras --no-default-groups --no-emit-workspace \
--format requirements-txt --no-hashes > /tmp/wheels-audit.txt
- name: Run pip-audit (wheel install closure)
run: uvx pip-audit==2.9.0 --strict -r /tmp/wheels-audit.txt