Commit Graph

889 Commits

Author SHA1 Message Date
GitHub Actions
54ebba2246 chore(ci): capture prune log and upload artifact (dry-run default) 2026-01-26 20:48:26 +00:00
GitHub Actions
2fbf92f569 chore(ci): add container prune workflow (GHCR + Docker Hub) with dry-run script 2026-01-26 20:47:55 +00:00
GitHub Actions
ac803fd411 fix(ci): add CHARON_EMERGENCY_TOKEN to E2E test workflows
Add missing emergency token environment variable to all E2E test workflows to
fix security teardown failures in CI. Without this token, the emergency reset
endpoint returns 501 "not configured", causing test teardown to fail and
leaving ACL enabled, which blocks 83 subsequent tests.

Changes:

Add CHARON_EMERGENCY_TOKEN to docker-build.yml test-image job
Add CHARON_EMERGENCY_TOKEN to e2e-tests.yml e2e-tests job
Add CHARON_EMERGENCY_TOKEN to playwright.yml playwright job
Verified:

Docker build strategy already optimal (build once, push to both GHCR + Docker Hub)
Testing strategy correct (test once by digest, validates both registries)
All workflows now have environment parity with local development setup
Requires GitHub repository secret:

Name: CHARON_EMERGENCY_TOKEN
Value: 64-char hex token (e.g., from openssl rand -hex 32)
Related:

Emergency endpoint rate limiting removal (proper fix)
Local emergency token configuration (.env, docker-compose.local.yml)
Security test suite teardown mechanism
Refs #550
2026-01-26 20:03:30 +00:00
GitHub Actions
f64e3feef8 chore: clean .gitignore cache 2026-01-26 19:22:05 +00:00
GitHub Actions
e5f0fec5db chore: clean .gitignore cache 2026-01-26 19:21:33 +00:00
GitHub Actions
cf279b0823 fix: Optimize E2E workflow by removing redundant build steps and improving caching strategies. Update Go version in e2e-tests.yml from 1.21 to 1.25.6, set GOTOOLCHAIN to auto across all workflows, and eliminate unnecessary npm installations to enhance CI performance by 30-40%. 2026-01-26 08:58:00 +00:00
GitHub Actions
d703ef0171 fix(e2e): update branch names in workflow triggers to include 'development' 2026-01-26 08:24:49 +00:00
GitHub Actions
c5f412dd05 fix(e2e): add frontend dependency installation step to E2E workflow 2026-01-26 08:09:01 +00:00
GitHub Actions
bbdeedda5d fix: update Go installation scripts to version 1.25.6 and remove obsolete 1.25.5 script 2026-01-26 07:42:42 +00:00
Jeremy
689e559cf0 Merge branch 'feature/beta-release' into renovate/feature/beta-release-sigstore-cosign-installer-4.x 2026-01-26 01:34:57 -05:00
renovate[bot]
71c3cd917c chore(deps): update weekly-non-major-updates 2026-01-26 06:29:28 +00:00
renovate[bot]
3f341fadba chore(deps): update sigstore/cosign-installer action to v4 2026-01-26 05:00:59 +00:00
GitHub Actions
0b9484faf0 fix(ci): correct backend build directory in E2E workflow
The E2E workflow was failing during backend build because make build
was being executed from the backend/ directory, but the Makefile exists
at the root level.

Remove working-directory: backend from Build backend step
Allows make build to execute from root where Makefile is located
Verified with local test: frontend + backend build successfully
Related to PR #550 E2E workflow failures
2026-01-25 23:12:21 +00:00
GitHub Actions
1f3af549cf fix(ci): add missing frontend dependency installation in E2E workflow
The E2E workflow was failing during "Build frontend" because npm ci
was only run at root level. The frontend directory has its own
package.json with React, Tailwind, and other dependencies that were
never installed.

Add "Install frontend dependencies" step before build
Update Node.js version from 18 to 20 (required by markdownlint-cli2)
Fixes failing E2E tests in PR #550
2026-01-25 22:33:56 +00:00
GitHub Actions
3ba2ddcfe4 fix(ci): use env var for Docker Hub token check in workflow conditions
GitHub Actions doesn't allow secrets context in step if expressions.
Add HAS_DOCKERHUB_TOKEN env var at job level that evaluates the secret
existence, then reference that env var in step conditions.

Fixes: "Unrecognized named-value: 'secrets'" workflow validation error
2026-01-25 20:19:57 +00:00
GitHub Actions
ba900e20c5 chore(ci): add Docker Hub as secondary container registry
Publish Docker images to both Docker Hub (docker.io/wikid82/charon) and
GitHub Container Registry (ghcr.io/wikid82/charon) for maximum reach.

Add Docker Hub login with secret existence check for graceful fallback
Update docker/metadata-action to generate tags for both registries
Add Cosign keyless signing for both GHCR and Docker Hub images
Attach SBOM to Docker Hub via cosign attach sbom
Add Docker Hub signature verification to supply-chain-verify workflow
Update README with Docker Hub badges and dual registry examples
Update getting-started.md with both registry options
Supply chain security maintained: identical tags, signatures, and SBOMs
on both registries. PR images remain GHCR-only.
2026-01-25 16:04:42 +00:00
renovate[bot]
dfffa66e36 fix(deps): update weekly-non-major-updates 2026-01-25 14:42:45 +00:00
Jeremy
2ce4334107 Merge branch 'feature/beta-release' into renovate/feature/beta-release-pin-dependencies 2026-01-25 09:40:20 -05:00
renovate[bot]
91ce338ac7 chore(deps): pin dependencies 2026-01-25 14:40:08 +00:00
GitHub Actions
55fe64b7ae fix(ci): sanitize branch names in Docker image tags
Fix "invalid reference format" error in GitHub Actions workflows when
branch names contain forward slashes (e.g., feature/beta-release).

Add sanitization step to playwright.yml converting / to -
Update supply-chain-verify.yml with dynamic branch sanitization
Add sanitization step to supply-chain-pr.yml for artifact names
Branch feature/beta-release → tag feature-beta-release
Fixes Playwright E2E and supply chain security scan workflow failures
2026-01-25 14:39:40 +00:00
renovate[bot]
dc94499617 chore(deps): update actions/setup-go action to v6 2026-01-25 14:37:29 +00:00
Jeremy
8e354aeb47 Merge pull request #558 from Wikid82/renovate/feature/beta-release-actions-github-script-8.x
chore(deps): update actions/github-script action to v8 (feature/beta-release)
2026-01-25 09:35:41 -05:00
Jeremy
b144670c85 Merge pull request #557 from Wikid82/renovate/feature/beta-release-major-7-github-artifact-actions
chore(deps): update actions/download-artifact action to v7 (feature/beta-release)
2026-01-25 09:35:26 -05:00
Jeremy
92793df7f2 Merge pull request #556 from Wikid82/renovate/feature/beta-release-actions-checkout-6.x
chore(deps): update actions/checkout action to v6 (feature/beta-release)
2026-01-25 09:35:05 -05:00
renovate[bot]
39eab80d48 chore(deps): update actions/download-artifact action to v7 2026-01-25 14:35:01 +00:00
Jeremy
f80932b0d0 Merge pull request #555 from Wikid82/renovate/feature/beta-release-actions-cache-5.x
chore(deps): update actions/cache action to v5 (feature/beta-release)
2026-01-25 09:34:47 -05:00
Jeremy
64e199a290 Merge pull request #554 from Wikid82/renovate/feature/beta-release-paulhatch-semantic-version-6.x
chore(deps): update paulhatch/semantic-version action to v6 (feature/beta-release)
2026-01-25 09:34:22 -05:00
Jeremy
a434f84c3f Merge pull request #553 from Wikid82/renovate/feature/beta-release-major-6-github-artifact-actions
chore(deps): update github artifact actions to v6 (feature/beta-release) (major)
2026-01-25 09:33:57 -05:00
renovate[bot]
7391784a92 chore(deps): update actions/github-script action to v8 2026-01-25 14:33:34 +00:00
renovate[bot]
ae69f654a5 chore(deps): update actions/checkout action to v6 2026-01-25 14:33:25 +00:00
renovate[bot]
bec62cfd28 chore(deps): update actions/cache action to v5 2026-01-25 14:33:21 +00:00
renovate[bot]
13d39811fc chore(deps): update paulhatch/semantic-version action to v6 2026-01-25 14:32:06 +00:00
renovate[bot]
ae969dd568 chore(deps): update github artifact actions to v6 2026-01-25 14:32:02 +00:00
renovate[bot]
94c3583917 chore(deps): update actions/setup-node action to v6 2026-01-25 14:31:56 +00:00
GitHub Actions
a41cfaae10 fix(integration): migrate wget-style curl syntax for Debian compatibility
After migrating base image from Alpine to Debian Trixie (PR #550),
integration test scripts were using wget-style options with curl
that don't work correctly on Debian.

Changed curl -q -O- (wget syntax) to curl -sf (proper curl):

waf_integration.sh
cerberus_integration.sh
rate_limit_integration.sh
crowdsec_startup_test.sh
install-go-1.25.5.sh
Also added future phase to plan for Playwright security test helpers
to prevent ACL deadlock issues during E2E testing.

Refs: #550
2026-01-25 09:17:50 +00:00
GitHub Actions
47bb0a995a fix(workflow): enhance branch propagation by adding support for feature branches from development 2026-01-25 06:14:19 +00:00
GitHub Actions
80e37b4920 Merge branch 'development' into feature/beta-release 2026-01-25 06:11:29 +00:00
GitHub Actions
b606e5c1ff fix(lint): update Hadolint configuration to enforce stricter error thresholds and add ignored rules 2026-01-25 05:46:14 +00:00
renovate[bot]
cf52054393 chore(deps): update weekly-non-major-updates 2026-01-25 05:42:39 +00:00
renovate[bot]
e1e840bac1 fix(deps): update weekly-non-major-updates 2026-01-25 05:39:59 +00:00
GitHub Actions
4fcca5ed7d fix(workflow): update base image in docker-build.yml from debian:bookworm-slim to debian:trixie-slim to resolve build inconsistency 2026-01-25 05:08:14 +00:00
GitHub Actions
978f698570 fix(security): remove hardcoded encryption keys from docker compose files
Replace hardcoded CHARON_ENCRYPTION_KEY with environment variable
substitution using Docker Compose required variable syntax.

docker-compose.playwright.yml: use ${CHARON_ENCRYPTION_KEY:?...}
docker-compose.e2e.yml: use ${CHARON_ENCRYPTION_KEY:?...}
e2e-tests.yml: add ephemeral key generation per CI run
.env.test.example: document the requirement prominently
Security: The old key exists in git history and must never be used
in production. Each CI run now generates a unique ephemeral key.

Refs: OWASP A02:2021 - Cryptographic Failures
2026-01-25 03:50:12 +00:00
GitHub Actions
56e3e70fa2 fix(ci): tighten minor_pattern regex in auto-versioning
The previous pattern '/(feat|feat\\()/)' was too broad and could
match any commit containing 'feat' substring (like 'defeat', 'feature').

Changed to '/^feat(\\(.+\\))?:/' which properly matches only
Conventional Commits format: 'feat:' or 'feat(scope):'
2026-01-24 23:19:59 +00:00
GitHub Actions
bef78c93d3 chore: remove backup workflow file from .github/workflows
Backup files in workflows/ add noise and confusion. The file can be
recovered from git history if needed.
2026-01-24 23:18:29 +00:00
GitHub Actions
e8fe98b184 fix(ci): add fallback for grep in security-weekly-rebuild
grep returns exit code 1 when no matches are found, which can fail
the workflow unexpectedly. Added fallback echo message.
2026-01-24 23:17:57 +00:00
GitHub Actions
21112d406a fix(ci): update security-weekly-rebuild to use Debian Trixie
- Change base image from debian:bookworm-slim to debian:trixie-slim
- Rename step id from 'caddy' to 'base-image' (more accurate)
- Update output reference from steps.caddy to steps.base-image
- Remove stale Alpine reference
2026-01-24 23:16:43 +00:00
GitHub Actions
2edd3de9a0 fix(ci): use --pull=never for PR image verification
On PRs, images are loaded locally but not pushed to registry.
Add --pull=never to prevent Docker from trying to fetch the
image from ghcr.io, which fails with 'manifest unknown'.

Modified 4 docker commands:
- Caddy version check (docker run)
- Caddy binary extraction (docker create)
- CrowdSec version check (docker run)
- CrowdSec binary extraction (docker create)
2026-01-24 23:04:11 +00:00
GitHub Actions
3ef09d44b7 fix(ci): increase container health timeout for Debian image
Debian-based image takes longer to start than Alpine due to:
- Larger base image
- gosu and CrowdSec built from source
- Additional package dependencies

Increase timeout from 120s to 180s to accommodate slower startup.
2026-01-24 22:58:59 +00:00
GitHub Actions
807112de71 chore(ci): auto-sync development to nightly before build
Update nightly-build.yml to automatically merge changes from development
branch to nightly before running the build. This enables a workflow where
PRs only need to target development, and nightly builds propagate
automatically.

Add sync-development-to-nightly job that runs first
Remove push trigger on nightly branch (sync handles updates)
All jobs now explicitly checkout nightly branch after sync
Uses fast-forward merge or hard reset if diverged
2026-01-24 22:22:40 +00:00
GitHub Actions
b77c9b53b5 fix(ci): use lowercase image name for GHCR in nightly build
GHCR stores images with lowercase names only. The SBOM action was using
the mixed-case github.repository value which caused Syft to fail when
trying to pull the image.

Add IMAGE_NAME_LC environment variable with lowercase image name
Update SBOM action, Trivy scan, and docker commands to use lowercase
Applied to all jobs: build-and-push-nightly, test-nightly-image,
verify-nightly-supply-chain
Fixes nightly-build.yml workflow failure in "Generate SBOM" step
2026-01-24 22:22:40 +00:00