diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 9a02ee6..07de451 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -67,11 +67,31 @@ jobs: tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} + - name: Scan Docker image + uses: anchore/scan-action@v5 + id: scan + env: + GRYPE_CONFIG: .grype.yaml + with: + image: "${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:sha-${{ github.sha }}" + fail-build: true + severity-cutoff: high + only-fixed: "true" + output-format: sarif + - name: Push Docker image uses: docker/build-push-action@v6 with: context: . push: true + # CAR-1446: git.farh.net does not implement the OCI referrers API. + # Verified 2026-06-23: GET /v2/cartsnitch/auth/referrers/{digest} → + # HTTP 404 "page not found" (plain proxy 404, not an OCI error — the path + # does not exist in this Gitea registry version). OCI Distribution Spec + # >=1.1 is required for provenance/SBOM attestation manifests; without it + # the docker/build-push-action would fail at the attestation PUT. + # Compensating control: the Grype scan step above fails the build on any + # unfixed HIGH-severity CVE before the image reaches the registry. provenance: false sbom: false tags: ${{ steps.meta.outputs.tags }} diff --git a/package-lock.json b/package-lock.json index ce0c339..b43974c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -818,9 +818,9 @@ } }, "node_modules/defu": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", - "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz", + "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==", "license": "MIT" }, "node_modules/esbuild": { @@ -909,9 +909,9 @@ } }, "node_modules/kysely": { - "version": "0.28.14", - "resolved": "https://registry.npmjs.org/kysely/-/kysely-0.28.14.tgz", - "integrity": "sha512-SU3lgh0rPvq7upc6vvdVrCsSMUG1h3ChvHVOY7wJ2fw4C9QEB7X3d5eyYEyULUX7UQtxZJtZXGuT6U2US72UYA==", + "version": "0.28.17", + "resolved": "https://registry.npmjs.org/kysely/-/kysely-0.28.17.tgz", + "integrity": "sha512-nbD8lB9EB3wNdMhOCdx5Li8DxnLbvKByylRLcJ1h+4SkrowVeECAyZlyiKMThF7xFdRz0jSQ2MoJr+wXux2y0Q==", "license": "MIT", "engines": { "node": ">=20.0.0" diff --git a/package.json b/package.json index 9eef257..032d08b 100644 --- a/package.json +++ b/package.json @@ -21,5 +21,10 @@ "@types/pg": "^8.11.0", "tsx": "^4.19.0", "typescript": "^5.7.0" + }, + "overrides": { + "picomatch": "^4.0.4", + "defu": "^6.1.5", + "kysely": "^0.28.17" } -} \ No newline at end of file +}