name: Release on: push: tags: ['v*'] permissions: contents: write id-token: write jobs: release: runs-on: ubuntu-latest environment: pypi steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.11' - uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' cache-dependency-path: explorer/package-lock.json - name: Build Explorer frontend working-directory: explorer run: | npm ci npm run build - run: pip install build - run: python -m build - name: Verify Explorer frontend is packaged run: | python - <<'PY' import zipfile from pathlib import Path wheels = list(Path("dist").glob("*.whl")) assert wheels, "No wheel was built" with zipfile.ZipFile(wheels[0]) as wheel: names = set(wheel.namelist()) assert "semantica/static/index.html" in names, "Explorer index.html missing from wheel" assert any(name.startswith("semantica/static/assets/") for name in names), "Explorer assets missing from wheel" print("Explorer frontend is packaged") PY - uses: softprops/action-gh-release@v3 with: files: dist/* - uses: pypa/gh-action-pypi-publish@release/v1