Compare commits

...

11 Commits

Author SHA1 Message Date
Barcode Betty 92015fc5e9 fix(deps): regenerate lockfile with defu 6.1.7, kysely 0.28.17 (CAR-1446)
CI / build-and-push (pull_request) Has been skipped
CI / deploy-dev (pull_request) Has been skipped
CI / deploy-uat (pull_request) Has been skipped
CI / build-and-push (push) Successful in 36s
CI / deploy-uat (push) Has been skipped
CI / deploy-dev (push) Successful in 6s
Applied npm overrides from previous commit. Grype scan now passes
at --fail-on high with only MEDIUM-severity remaining CVEs in uuid
(GHSA-w5hq-g745-h8pq, major bump to v11 required, not a blocking risk)
and better-auth (GHSA-wxw3-q3m9-c3jr, updating to 1.6.2 separately).

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-23 03:43:04 +00:00
Barcode Betty 6722b0e796 fix(deps): add npm overrides to pin patched versions of defu, kysely, picomatch (CAR-1446)
CI / build-and-push (pull_request) Has been skipped
CI / deploy-dev (pull_request) Has been skipped
CI / deploy-uat (pull_request) Has been skipped
CI / build-and-push (push) Failing after 10s
CI / deploy-uat (push) Has been skipped
CI / deploy-dev (push) Successful in 2s
Grype found 3 HIGH-severity CVEs in transitive npm deps that npm audit
missed (different advisory DB):
- GHSA-737v-mqg7-c878: defu 6.1.4 → 6.1.5+
- GHSA-pv5w-4p9q-p3v2: kysely 0.28.14 → 0.28.17
- GHSA-c2c7-rcm5-vvqj: picomatch 4.0.3 → 4.0.4

All three are transitive deps of better-auth. Adding npm overrides
forces the patched versions. Grype scan passes at --fail-on high
after these overrides are applied.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-23 03:42:45 +00:00
Barcode Betty 88952a4651 ci(auth): update CAR-1446 comment with empirical OCI referrers proof
CI / build-and-push (pull_request) Has been skipped
CI / deploy-uat (pull_request) Has been skipped
CI / deploy-dev (pull_request) Has been skipped
CI / build-and-push (push) Failing after 11m7s
CI / deploy-uat (push) Has been skipped
CI / deploy-dev (push) Successful in 3s
2026-06-23 02:50:37 +00:00
Barcode Betty 9ec0a7b56c Merge pull request 'ci(auth): add Grype scan step; document provenance/sbom OCI referrer limitation (CAR-1446)' (#52) from betty/car-1446-sbom-provenance-scan into dev
CI / build-and-push (pull_request) Has been skipped
CI / deploy-dev (pull_request) Has been skipped
CI / deploy-uat (pull_request) Has been skipped
CI / deploy-dev (push) Has been cancelled
CI / deploy-uat (push) Has been cancelled
CI / build-and-push (push) Has been cancelled
ci(auth): add Grype scan step; document provenance/sbom OCI referrer limitation (CAR-1446)

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-23 02:41:17 +00:00
Barcode Betty 30fa99a717 ci(auth): add Grype scan step; document provenance/sbom OCI referrer limitation (CAR-1446)
CI / build-and-push (pull_request) Has been skipped
CI / deploy-dev (pull_request) Has been skipped
CI / deploy-uat (pull_request) Has been skipped
- Insert anchore/scan-action@v5 step between Build and Push
- severity-cutoff: high, only-fixed: true (matches monorepo pattern)
- Add inline comment on provenance:false/sbom:false explaining OCI distribution
  spec >=1.1 limitation on git.farh.net registry

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-23 02:39:55 +00:00
Barcode Betty 35b3b8406e Merge pull request 'fix(ci): revert deploy PR base dev/uat → main (CAR-1431)' (#50) from barcode-betty/car-1428-revert-deploy-base into dev
CI / build-and-push (push) Successful in 9s
CI / deploy-dev (push) Successful in 4s
CI / deploy-uat (push) Has been skipped
CI / build-and-push (pull_request) Has been skipped
CI / deploy-dev (pull_request) Has been skipped
CI / deploy-uat (pull_request) Has been skipped
fix(ci): revert deploy PR base dev/uat → main (CAR-1431)

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-23 01:10:47 +00:00
Barcode Betty 88da9ee771 fix(ci): revert deploy PR base dev/uat → main (CAR-1431)
CI / build-and-push (pull_request) Has been skipped
CI / deploy-dev (pull_request) Has been skipped
CI / deploy-uat (pull_request) Has been skipped
Deploy-dev and deploy-uat jobs were opening image-tag-bump PRs against
dev/uat branches per CAR-1371. Flux reconciles all overlays from infra
main, so those PRs were never picked up. Revert --arg base back to main.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-23 01:07:17 +00:00
Barcode Betty 1af633a619 Merge pull request 'fix(ci): broaden graceful-exit on infra PR auto-merge (CAR-1438)' (#46) from car-1438-graceful-exit-fix into dev
CI / build-and-push (push) Successful in 10s
CI / build-and-push (pull_request) Has been skipped
CI / deploy-uat (push) Has been skipped
CI / deploy-dev (pull_request) Has been skipped
CI / deploy-uat (pull_request) Has been skipped
CI / deploy-dev (push) Successful in 10s
fix(ci): broaden graceful-exit on infra PR auto-merge (CAR-1438)

Any non-merged outcome after successful PR creation is now treated
as the GitOps approval gate (exit 0). Only empty PR_NUM hard-fails.
2026-06-23 00:47:23 +00:00
Barcode Betty 7ff805c3a5 fix(ci): broaden graceful-exit on infra PR auto-merge (CAR-1438)
CI / build-and-push (pull_request) Has been skipped
CI / deploy-dev (pull_request) Has been skipped
CI / deploy-uat (pull_request) Has been skipped
2026-06-23 00:38:36 +00:00
Barcode Betty 28d38a298c Merge pull request 'fix(ci): use shell var for jq --arg title in deploy steps (CAR-1436)' (#44) from car-1436-fix-deploy-jq-title into dev
CI / build-and-push (push) Successful in 13s
CI / deploy-uat (push) Has been skipped
CI / deploy-dev (push) Failing after 6s
CI / build-and-push (pull_request) Has been skipped
CI / deploy-dev (pull_request) Has been skipped
CI / deploy-uat (pull_request) Has been skipped
fix(ci): use shell var for jq --arg title in deploy steps (CAR-1436)
2026-06-22 23:56:59 +00:00
Barcode Betty 80a2ea54be fix: use shell var for jq --arg title in deploy-dev/deploy-uat (CAR-1436)
CI / build-and-push (pull_request) Has been skipped
CI / deploy-dev (pull_request) Has been skipped
CI / deploy-uat (pull_request) Has been skipped
2026-06-22 23:56:09 +00:00
3 changed files with 45 additions and 19 deletions
+33 -12
View File
@@ -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 }}
@@ -142,7 +162,8 @@ jobs:
echo "::notice::Refusing to push directly to protected branch — falling back to contents API"
exit 0
fi
PR_BODY=$(jq -n --arg head "cartsnitch:${BRANCH}" --arg base dev --arg title ("ci(dev): update auth image (" + env.GITHUB_SHA[:12] + ")") --arg body "Bumps apps/overlays/dev/kustomization.yaml auth newTag to \`${{ steps.tag.outputs.tag }}\` from cartsnitch/auth CI build $GITHUB_SHA." \
TITLE="ci(dev): update auth image (${GITHUB_SHA::12})"
PR_BODY=$(jq -n --arg head "cartsnitch:${BRANCH}" --arg base main --arg title "$TITLE" --arg body "Bumps apps/overlays/dev/kustomization.yaml auth newTag to \`${{ steps.tag.outputs.tag }}\` from cartsnitch/auth CI build $GITHUB_SHA." \
'{head: $head, base: $base, title: $title, body: $body}')
PR_JSON=$(curl -sS -X POST \
-H "Authorization: token ${CI_GITEA_TOKEN}" \
@@ -176,12 +197,11 @@ jobs:
MERGED=$(echo "$MERGE_RESP" | jq -r '.merged // false')
if [ "$MERGED" = "true" ]; then
echo "PR #${PR_NUM} merged into cartsnitch/infra dev"
elif echo "$MERGE_RESP" | grep -qi 'does not have enough approvals'; then
echo "::notice::infra PR #${PR_NUM} opened and awaiting CTO (cs_savannah) approve+merge — GitOps approval gate, not a failure"
exit 0
else
echo "::error::Auto-merge of cartsnitch/infra PR #${PR_NUM} failed: $MERGE_RESP"
exit 1
# CAR-1438: PR opened successfully; any non-merged outcome (empty body,
# approval-gate, pending checks) is the GitOps gate — not a failure.
echo "::notice::infra PR #${PR_NUM} opened — auto-merge not available (${MERGE_RESP:-empty response}); awaiting CTO (cs_savannah) approve+merge"
exit 0
fi
deploy-uat:
@@ -243,7 +263,8 @@ jobs:
echo "::notice::Refusing to push directly to protected branch — falling back to contents API"
exit 0
fi
PR_BODY=$(jq -n --arg head "cartsnitch:${BRANCH}" --arg base uat --arg title ("ci(uat): update auth image (" + env.GITHUB_SHA[:12] + ")") --arg body "Bumps apps/overlays/uat/kustomization.yaml auth newTag to \`${{ steps.tag.outputs.tag }}\` from cartsnitch/auth CI build $GITHUB_SHA." \
TITLE="ci(uat): update auth image (${GITHUB_SHA::12})"
PR_BODY=$(jq -n --arg head "cartsnitch:${BRANCH}" --arg base main --arg title "$TITLE" --arg body "Bumps apps/overlays/uat/kustomization.yaml auth newTag to \`${{ steps.tag.outputs.tag }}\` from cartsnitch/auth CI build $GITHUB_SHA." \
'{head: $head, base: $base, title: $title, body: $body}')
PR_JSON=$(curl -sS -X POST \
-H "Authorization: token ${CI_GITEA_TOKEN}" \
@@ -273,10 +294,10 @@ jobs:
MERGED=$(echo "$MERGE_RESP" | jq -r '.merged // false')
if [ "$MERGED" = "true" ]; then
echo "PR #${PR_NUM} merged into cartsnitch/infra uat"
elif echo "$MERGE_RESP" | grep -qi 'does not have enough approvals'; then
echo "::notice::infra PR #${PR_NUM} opened and awaiting CTO (cs_savannah) approve+merge — GitOps approval gate, not a failure"
exit 0
else
echo "::error::Auto-merge of cartsnitch/infra PR #${PR_NUM} failed: $MERGE_RESP"
exit 1
# CAR-1438: PR opened successfully; any non-merged outcome (empty body,
# approval-gate, pending checks) is the GitOps gate — not a failure.
echo "::notice::infra PR #${PR_NUM} opened — auto-merge not available (${MERGE_RESP:-empty response}); awaiting CTO (cs_savannah) approve+merge"
exit 0
fi
+6 -6
View File
@@ -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"
+6 -1
View File
@@ -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"
}
}
}