lajsdf;ljsad;lfjaldsfj;lsajfd
We follow best GitOps practices. This repository is the single source of truth. You will NOT be able to promote a challenge to production (the main branch) until it has passed E2E testing. 🤓
Please create a branch for each challenge named: category/challenge-name. This should correspond to the path to the challenge from the challenges folder
This branch will be merged into the dev branch once your PR is approved. You can then make a PR into prod.
Flag Format: MINUTEMAN{<FLAG>}
There are two types of challenges: static vs. dynamic. Static challenges simply contain downloadable assets. Dynamic challenges need a running container for the player to interact with.
- Create a new directory in the appropriate category for your challenge.
- Use the following format (challenges/[category]/[challenge name])
- Please make sure the challenge name does not contain any underscores, capital letters, or special characters.
- Each challenge should have the following things at the top level:
- an optional static folder with downloadable assets
- a Dockerfile/docker-compose.yaml and a config.env if dynamic (see this config.env for reference)
- info.yaml (see this info.yaml for reference)
- Use the following format (challenges/[category]/[challenge name])
- Create a PR to merge into the dev branch.
- Test your challenges in the CTFd dev environment. Create any follow up PRs as necessary to make edits to your challenge.
- Create a PR to promote your challenge to the main branch.
Our E2E tests will validate the following:
- The Docker container builds
- info.yaml contains all required fields
Docker File