No description
  • Python 99.2%
  • Go 0.4%
  • Shell 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Mathew Lindholm 8b7fc03fa5
All checks were successful
Repository security / security-1 (push) Successful in 2m9s
Library checks / tests (push) Successful in 3m55s
Merge pull request 'fix: select bundled parent before reading image metadata' (#135) from kiyi/package-parent-inventory into main
Reviewed-on: #135
Reviewed-by: portegumi <port@gitchegumi.com>
2026-10-19 15:57:58 -05:00
.forgejo/workflows feat: derive patch parents from verified DU packages 2026-10-19 14:50:19 -05:00
.githooks Block staged secrets with pinned Gitleaks pre-commit hooks (#92) 2026-10-12 16:22:17 -05:00
.pipeline Authorize protected release and channel writes with native OIDC 2026-10-13 18:44:16 -05:00
docs feat: derive patch parents from verified DU packages 2026-10-19 14:50:19 -05:00
examples feat(security): validate shell and Kubernetes sources 2026-09-04 16:53:11 -05:00
pipeline fix: select bundled parent before reading image metadata 2026-10-19 15:47:19 -05:00
policy Support Terraform-managed private UDS bundle settings 2026-10-17 22:52:55 -05:00
tests fix: select bundled parent before reading image metadata 2026-10-19 15:47:19 -05:00
.gitattributes feat(ci): scaffold reusable security and delivery workflows 2026-09-03 21:39:21 -05:00
.gitignore ignore .tools 2026-09-25 10:17:11 -05:00
README.md Support Terraform-managed private UDS bundle settings 2026-10-17 22:52:55 -05:00
requirements-delivery.lock Add dev-only scan profile and managed disposable bundle cleanup 2026-10-10 18:50:35 -05:00
requirements-package-parents.lock feat: derive patch parents from verified DU packages 2026-10-19 14:50:19 -05:00
requirements-terraform.lock Verify scoped runtime image updates in Terraform bundle records 2026-10-18 02:05:54 -05:00
requirements.in feat(security): add reusable fail-closed scans and mitigations 2026-09-03 22:37:13 -05:00
requirements.lock Harden Terraform downloads and S3 XML parsing 2026-10-11 20:15:46 -05:00
rules.lock.json Refresh reviewed Semgrep registry metadata checksum 2026-10-15 09:26:20 -05:00
tools.lock.json fix(delivery): pin UDS CLI 0.38 with legacy compatibility checks 2026-09-30 23:33:22 -05:00

Shared security and delivery workflows

Reusable Forgejo Actions for personal repositories and any organization. Pin the workflow and library_ref to the same immutable semantic version tag, such as v1.2.1. Caller repos can be private; the shared workflow target is public.

Start with adoption, release protocol, and security policy. The combined security.yml is the supported gate. The original four individual scan workflows remain for compatibility, but must not authorize deployments.

Central workflow upgrades prepares the protected manual stable-v1 promotion/rollback procedure requested in #93. Callers migrate once; frozen workflow adapters keep each run paired with its exact released library. Hosted channel acceptance and consumer adoption remain pending.

Before committing locally, install native Gitleaks 8.30.1 and run sh .githooks/install.sh (Git Bash on Windows). See local secret prevention for clone/worktree installation and new-repository adoption. Keep all existing CI source/history scans in place.

Managed application onboarding adds automatic per-environment deployment identities from the platform, without per-app role variables or a new workflow-library contract/release for every application.

Security image execution adds explicit preinstalled-* entry points using the accepted, digest-pinned security image with released v1.33.0 library code and verified tools. The original workflow entry points retain their runner-label setup. The image was published on 2026-10-13 UTC; hosted startup acceptance, workflow release and caller adoption remain pending in #86.

Workflow Result
validate-source.yml / package-image-security.yml Caller-owned Python checks and complete promotion-image decisions; release and adoption prerequisites
node-ci.yml / node-ci-image.yml Combined pnpm generation/format/typecheck/lint/test/build using a writable Node cache or an explicitly adopted owned Node 26 CI image; release and caller prerequisites
npm-ci.yml Combined npm clean install, existing check script, optional additional prebuild check and production build using the shared writable Node cache; release and caller prerequisites
discover-base-images.yml / base-image.yml Discover implemented bases; shared build, full scans and optional protected signed publication; see base-image pipeline
select-base-images.yml / validate-base-images.yml / require-base-image-scans.yml Shared routing, definition checks and aggregate gate; release and adoption prerequisites
security.yml Secrets, dependency vulnerabilities, IaC, SAST, optional digest-pinned image scans and SBOMs
build-bundle.yml (delivery extension) Scan manifests/images, build one UDS archive, sign receipt, publish release assets
deploy-bundle.yml (delivery extension) Verify archive, refresh image scans, deploy same archive and check rollout
rke2-delivery.yml / validate-rke2.yml Signed RKE2 bootstrap/controller/Plan delivery, scoped OIDC credentials and upgrade validation
core-delivery.yml / core-runner-identity.yml Protected UDS Core and runner identity delivery; publish/promote before adopting the new callers
cleanup-dev-bundle.yml Preview or remove an opted-in dev bundle, namespace, disposable CSI storage and declared external PostgreSQL databases
deploy-bundle-k8s.yml (migration canary) Validate Kubernetes credentials or deploy to dev on deploy-k8s; see runner canary
publish-release.yml Manually publish an immutable semantic workflow release from protected main
terraform.yml Protected OIDC/OpenBao-backed plan/apply and state-bucket bootstrap; see Terraform provisioning

Private UDS bundle settings extends the existing OpenBao Terraform profile with reviewed public version/package overlays and ephemeral/write-only preservation of populated configuration.

Tools install into job-local storage with verified checksums and Python dependency hashes. Semgrep rules download at runtime under their internal-use license. The delivery extension is reviewed separately; its PR adds docs/delivery.md. Homelab/bundles supplies the app template.

Fast, disposable dev delivery adds an explicit dev scan profile while preserving full scans by default. Dev-only releases cannot deploy to production; cleanup uses managed dev credentials and defaults to a preview.

The reviewed shared tool lock selects UDS CLI 0.38.0. Bundle creation and deployment explicitly select NextMode=false to preserve the existing signed legacy archive contract. The library PR checks also build disposable fixture packages and a bundle with the real checksum-verified CLI, without publishing or deploying them. See delivery compatibility.

Long operations report their stage and elapsed time every 30 seconds. See workflow progress and adoption for coverage and limits.

Runner migration remains separate in #2. Existing hosts can execute these jobs in an isolated Linux job environment. Runner labels, branch protection and owner-supplied credentials must be configured.

This repository scans its own complete history and working tree for every pull request, every push to main, manual dispatches, and a weekly schedule. The self-scan pins a released library version so pull requests cannot replace the trusted scanner implementation that evaluates them. Forgejo 16 ignores GitHub's permissions field. Protected release/tag writes use short-lived native Authorized Integrations, scoped separately to the release and channel workflows; the automatic job token performs read-only preflight checks. Complete the one-time integration setup before dispatching either publisher.

Tracking: secrets #1, reuse #3, security #4, delivery #5. The build-container.yml delivery extension builds Dockerfiles locally, scans with Gitleaks/Trivy/Semgrep/ClamAV, stores signed evidence, then publishes the image. See docs/delivery.md for the complete UI-driven workflow and credential boundaries.