Repository navigation
docs: simplify installation and release validation guidance #675
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build | |
| on: | |
| push: | |
| branches: [main, "feat/**", "fix/**", "ci/**"] | |
| pull_request: | |
| branches: [main] | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| test: | |
| name: Lint, test & package | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v7 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up uv | |
| uses: astral-sh/setup-uv@v7 | |
| with: | |
| python-version: "3.14" | |
| enable-cache: true | |
| - name: Install | |
| run: | | |
| uv venv .venv --python 3.14 | |
| .venv/bin/python -m ensurepip --upgrade | |
| .venv/bin/python -m pip install --upgrade pip | |
| .venv/bin/python -m pip install -e ".[dev]" | |
| - name: Lint | |
| run: .venv/bin/ruff check src tests tools | |
| - name: Check formatting | |
| run: .venv/bin/ruff format --check src tests tools | |
| - name: Test | |
| run: .venv/bin/python -m pytest | |
| - name: Build release-shaped artifacts | |
| run: | | |
| .venv/bin/python -m build | |
| .venv/bin/python tools/build_offline.py --output dist/endkeep-offline.py | |
| cp requirements-offline.txt dist/requirements-offline.txt | |
| ( | |
| cd dist | |
| sha256sum *.whl endkeep-offline.py requirements-offline.txt > SHA256SUMS | |
| ) | |
| - name: Wheel smoke install | |
| run: | | |
| uv venv /tmp/endkeep-wheel-smoke --python 3.14 | |
| /tmp/endkeep-wheel-smoke/bin/python -m ensurepip --upgrade | |
| /tmp/endkeep-wheel-smoke/bin/python -m pip install --no-deps dist/*.whl | |
| /tmp/endkeep-wheel-smoke/bin/python - <<'PY' | |
| from importlib.metadata import metadata | |
| package = metadata("endstone-endkeep") | |
| assert package["Name"] == "endstone-endkeep" | |
| print(package["Name"], package["Version"]) | |
| PY | |
| - name: Standalone offline smoke | |
| run: | | |
| .venv/bin/python tests/standalone_fixture.py /tmp/endkeep-fixture | |
| uv venv /tmp/endkeep-offline-smoke --python 3.14 | |
| /tmp/endkeep-offline-smoke/bin/python -m ensurepip --upgrade | |
| /tmp/endkeep-offline-smoke/bin/python -m pip install -r requirements-offline.txt | |
| /tmp/endkeep-offline-smoke/bin/python dist/endkeep-offline.py --help | |
| /tmp/endkeep-offline-smoke/bin/python dist/endkeep-offline.py --repo /tmp/endkeep-fixture/repo list | |
| /tmp/endkeep-offline-smoke/bin/python dist/endkeep-offline.py --repo /tmp/endkeep-fixture/repo verify 2>/tmp/endkeep-verify-progress.log | |
| grep -q "Verifying objects:" /tmp/endkeep-verify-progress.log | |
| grep -q "100%" /tmp/endkeep-verify-progress.log | |
| /tmp/endkeep-offline-smoke/bin/python dist/endkeep-offline.py --repo /tmp/endkeep-fixture/repo restore /tmp/endkeep-restored | |
| test -f /tmp/endkeep-restored/level.dat | |
| test -d /tmp/endkeep-restored/db | |
| .venv/bin/python - <<'PY' | |
| from pathlib import Path | |
| from endstone_endkeep.repository.logicalize import Logicalizer | |
| from tests.standalone_fixture import add_raw | |
| storage = Path("/tmp/endkeep-fixture") | |
| add_raw(storage, "20261006-200000", [(b"a", b"3"), (b"c", b"3")], b"third") | |
| Logicalizer(storage, compression_level=6, compression_threads=1).logicalize( | |
| storage / "raw" / "20261006-200000" | |
| ) | |
| PY | |
| /tmp/endkeep-offline-smoke/bin/python dist/endkeep-offline.py --repo /tmp/endkeep-fixture/repo delete 20261006-163000 --yes | |
| /tmp/endkeep-offline-smoke/bin/python dist/endkeep-offline.py --repo /tmp/endkeep-fixture/repo verify | |
| /tmp/endkeep-offline-smoke/bin/python dist/endkeep-offline.py --repo /tmp/endkeep-fixture/repo rollover 20261006-200000 --yes | |
| /tmp/endkeep-offline-smoke/bin/python dist/endkeep-offline.py --repo /tmp/endkeep-fixture/repo verify | |
| /tmp/endkeep-offline-smoke/bin/python dist/endkeep-offline.py --repo /tmp/endkeep-fixture/repo restore /tmp/endkeep-rolled | |
| test -d /tmp/endkeep-rolled/db | |
| - name: Upload artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: endkeep-${{ github.run_id }} | |
| path: | | |
| dist/*.whl | |
| dist/endkeep-offline.py | |
| dist/requirements-offline.txt | |
| dist/SHA256SUMS | |
| if-no-files-found: error | |
| retention-days: 14 |