Skip to content

chore: modernize CI/CD, Docker infrastructure, and add SECURITY.md - #444

Open
Saketkesar wants to merge 4 commits into
OWASP:masterfrom
Saketkesar:chore/modernize-ci-docker-security
Open

chore: modernize CI/CD, Docker infrastructure, and add SECURITY.md#444
Saketkesar wants to merge 4 commits into
OWASP:masterfrom
Saketkesar:chore/modernize-ci-docker-security

Conversation

@Saketkesar

@Saketkesar Saketkesar commented Aug 26, 2026

Copy link
Copy Markdown

Summary

This PR modernizes the project's CI/CD pipeline, Docker infrastructure, and adds a SECURITY.md policy — ensuring all educational lessons and intentional vulnerabilities remain 100% functional and tested.

Changes

CI/CD Modernization

  • Upgrade GitHub Actions from deprecated v1/v2 to v4 (actions/checkout, actions/setup-node, actions/cache, actions/upload-artifact) to prevent workflow failure from GitHub action deprecations.
  • Pin E2E runner to ubuntu-22.04 to preserve full compatibility with Cypress 3.x dependencies.
  • Add server readiness polling before Cypress runs to eliminate race conditions during background server startup.
  • Universal linter step that runs jshint cleanly across all Node versions.
  • Node Matrix: Tested across Node 12.x, 14.x, and 16.x for E2E tests, and 14.x, 16.x, 18.x for linting.
  • Update CI MongoDB from 4.0 to 4.4 to match docker-compose.

Docker Modernization

  • Upgrade Dockerfile base image to node:14-alpine to guarantee 100% compatibility with all NodeGoat lessons and dependencies.
  • Add CMD instruction to Dockerfile (["node", "server.js"]).
  • Remove deprecated version field from docker-compose.yml.
  • Add MongoDB healthcheck & depends_on condition in docker-compose.yml so the app starts only after the database is ready.
  • Add restart: unless-stopped policies.

Security Policy

  • Add SECURITY.md clarifying that application vulnerabilities are intentional for teaching OWASP Top 10, and providing responsible disclosure instructions for project infrastructure.

Verification & Test Results

  • Lint Workflow: 100% Passed across Node 14.x, 16.x, and 18.x
  • E2E Test Suite (13 specs): 100% Passed across Node 12.x, 14.x, and 16.x (All tutorial specs, auth specs, contributions, allocations, XSS, etc. pass completely)
  • Zero Application Code Changes: All intentional vulnerabilities and learning exercises are fully preserved.

Saket added 4 commits August 26, 2026 08:35
- Upgrade GitHub Actions from deprecated v1/v2 to v4 (checkout, setup-node,
  cache, upload-artifact) to prevent future workflow breakage
- Update Node.js CI matrix from EOL versions (10.x, 12.x, 14.x) to
  supported versions (14.x, 16.x, 18.x)
- Update CI MongoDB from 4.0 to 4.4 to match docker-compose configuration
- Upgrade Dockerfile base image from EOL node:12-alpine to node:18-alpine
- Add CMD instruction to Dockerfile for proper container startup
- Remove deprecated 'version' field from docker-compose.yml
- Add MongoDB healthcheck and depends_on condition to docker-compose.yml
  so the app waits for a healthy database before starting
- Add restart policies for both services in docker-compose.yml
- Add SECURITY.md to clarify that application vulnerabilities are
  intentional (educational) and provide guidance for reporting actual
  infrastructure security issues
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant