diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ab3915d..ea934ef 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -132,11 +132,13 @@ jobs: - name: 🚀 Publish package to PyPI uses: pypa/gh-action-pypi-publish@release/v1 + with: + skip-existing: true docker: name: 🐳 Docker Multi-Platform runs-on: ubuntu-latest - needs: release + needs: [release] permissions: contents: read packages: write @@ -164,6 +166,7 @@ jobs: with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: 🔐 Login to GHCR uses: docker/login-action@v3 @@ -181,7 +184,7 @@ jobs: ghcr.io/${{ github.repository }} tags: | type=ref,event=tag - type=sha,prefix={{branch}}- + type=sha - name: 🐳 Build & Push Multi-Platform uses: docker/build-push-action@v6 @@ -193,6 +196,13 @@ jobs: labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max + + - name: 📝 Sync Docker Hub README + uses: peter-evans/dockerhub-description@v4 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + repository: keynetra/keynetra - name: 📊 Docker Summary if: always() diff --git a/CHANGELOG.md b/CHANGELOG.md index 5170fb2..9437cc6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## v0.1.0 +## v0.1.1 Initial public release of the KeyNetra authorization engine. diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md index 144958a..a70644d 100644 --- a/DEPLOYMENT.md +++ b/DEPLOYMENT.md @@ -1,6 +1,6 @@ # Deployment Guide -This guide documents supported deployment paths for KeyNetra v0.1.0-beta. +This guide documents supported deployment paths for KeyNetra v0.1.1-beta. ## Prerequisites diff --git a/Dockerfile b/Dockerfile index 20fbc6d..0da6cb5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,7 +10,8 @@ WORKDIR /app RUN useradd --create-home --uid 10001 appuser COPY requirements.lock /app/requirements.lock -RUN pip install --no-cache-dir -r /app/requirements.lock +RUN pip install --no-cache-dir --upgrade pip && \ + pip install --no-cache-dir -r /app/requirements.lock COPY alembic.ini /app/alembic.ini COPY alembic /app/alembic diff --git a/README.md b/README.md index ce0196e..d8992a6 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,7 @@ keynetra doctor --service core OpenAPI contracts: - [`contracts/openapi/openapi.json`](./contracts/openapi/openapi.json) -- [`contracts/openapi/keynetra-v0.1.0.yaml`](./contracts/openapi/keynetra-v0.1.0.yaml) +- [`contracts/openapi/keynetra-v0.1.1.yaml`](./contracts/openapi/keynetra-v0.1.1.yaml) ## Multi-Tenant and Security @@ -231,7 +231,7 @@ Apache-2.0. See [`LICENSE`](./LICENSE). title = {KeyNetra}, author = {KeyNetra Community}, year = {2026}, - version = {0.1.0-beta}, + version = {0.1.1-beta}, url = {https://github.com/keynetra/keynetra} } ``` diff --git a/contracts/openapi/keynetra-v0.1.0.yaml b/contracts/openapi/keynetra-v0.1.1.yaml similarity index 99% rename from contracts/openapi/keynetra-v0.1.0.yaml rename to contracts/openapi/keynetra-v0.1.1.yaml index da568a6..10718ec 100644 --- a/contracts/openapi/keynetra-v0.1.0.yaml +++ b/contracts/openapi/keynetra-v0.1.1.yaml @@ -1,7 +1,7 @@ openapi: 3.1.0 info: title: KeyNetra - version: 0.1.0 + version: 0.1.1 paths: /health: get: diff --git a/contracts/openapi/openapi.json b/contracts/openapi/openapi.json index 49856dd..691fa8c 100644 --- a/contracts/openapi/openapi.json +++ b/contracts/openapi/openapi.json @@ -2,7 +2,7 @@ "openapi": "3.1.0", "info": { "title": "KeyNetra", - "version": "0.1.0" + "version": "0.1.1" }, "paths": { "/health": { diff --git a/deploy/helm/README.md b/deploy/helm/README.md index dc594d3..f133bc2 100644 --- a/deploy/helm/README.md +++ b/deploy/helm/README.md @@ -15,7 +15,7 @@ helm upgrade --install keynetra ./deploy/helm/keynetra ```bash helm upgrade --install keynetra ./deploy/helm/keynetra \ --set image.repository=ghcr.io/keynetra/keynetra \ - --set image.tag=v0.1.0 \ + --set image.tag=v0.1.1 \ --set env.KEYNETRA_DATABASE_URL=postgresql+psycopg://... \ --set env.KEYNETRA_REDIS_URL=redis://... \ --set env.KEYNETRA_STRICT_TENANCY=true \ diff --git a/deploy/helm/keynetra/Chart.yaml b/deploy/helm/keynetra/Chart.yaml index cf4ddb6..0d6e653 100644 --- a/deploy/helm/keynetra/Chart.yaml +++ b/deploy/helm/keynetra/Chart.yaml @@ -2,5 +2,5 @@ apiVersion: v2 name: keynetra description: Helm chart for KeyNetra authorization control plane type: application -version: 0.1.0 -appVersion: "0.1.0" +version: 0.1.1 +appVersion: "0.1.1" diff --git a/deploy/helm/keynetra/values.yaml b/deploy/helm/keynetra/values.yaml index 7877929..4ae20e4 100644 --- a/deploy/helm/keynetra/values.yaml +++ b/deploy/helm/keynetra/values.yaml @@ -2,7 +2,7 @@ replicaCount: 2 image: repository: ghcr.io/keynetra/keynetra - tag: v0.1.0 + tag: v0.1.1 pullPolicy: IfNotPresent service: diff --git a/deploy/kubernetes/deployment.yaml b/deploy/kubernetes/deployment.yaml index a1486f7..9056542 100644 --- a/deploy/kubernetes/deployment.yaml +++ b/deploy/kubernetes/deployment.yaml @@ -16,7 +16,7 @@ spec: spec: containers: - name: keynetra - image: ghcr.io/keynetra/keynetra:v0.1.0 + image: ghcr.io/keynetra/keynetra:v0.1.1 imagePullPolicy: IfNotPresent args: ["keynetra", "serve", "--host", "0.0.0.0", "--port", "8000"] ports: diff --git a/keynetra/version.py b/keynetra/version.py index fdc192d..a4f9f07 100644 --- a/keynetra/version.py +++ b/keynetra/version.py @@ -1,4 +1,4 @@ -version = "0.1.0" +version = "0.1.1" __version__ = version __all__ = ["version", "__version__"] diff --git a/pyproject.toml b/pyproject.toml index 1b584e8..20314c8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "keynetra" -version = "0.1.0" +version = "0.1.1" requires-python = ">=3.11" description = " Open-source High-performance authorization engine for RBAC, ReBAC, and ACL. Multi-tenant policy engine" readme = "README.md" diff --git a/tests/test_api_contract.py b/tests/test_api_contract.py index 099ec69..745ed95 100644 --- a/tests/test_api_contract.py +++ b/tests/test_api_contract.py @@ -9,7 +9,7 @@ from keynetra.main import create_app CONTRACT_PATH = ( - Path(__file__).resolve().parents[1] / "contracts" / "openapi" / "keynetra-v0.1.0.yaml" + Path(__file__).resolve().parents[1] / "contracts" / "openapi" / "keynetra-v0.1.1.yaml" ) diff --git a/tests/test_release_hardening.py b/tests/test_release_hardening.py index 0ae6979..738c020 100644 --- a/tests/test_release_hardening.py +++ b/tests/test_release_hardening.py @@ -269,7 +269,7 @@ def test_cli_surface_commands_cover_release_paths( result = runner.invoke(app, ["version"]) assert result.exit_code == 0 - assert "0.1.0" in result.stdout + assert "0.1.1" in result.stdout recorded: dict[str, object] = {}