Thanks for improving DevOps & Cloud Portfolio Lab. This repository is for practical DevOps learning, so contributions should make projects safer, clearer, easier to validate, or easier for students to reproduce with their own accounts.
- Fix unclear instructions, broken commands, outdated screenshots, or missing cleanup steps.
- Improve a project README using
docs/project-readme-template.md. - Add or correct
project.yamlmetadata so students can judge cost, deployability, prerequisites, and validation. - Harden examples without requiring paid services or private credentials.
- Improve local validation, security checks, or troubleshooting notes.
- Read the root
README.md,PROJECTS.md, and the project README you plan to change. - Check
docs/runbooks/student-implementation-guide.mdfor the expected student workflow. - Review
SECURITY.mdand the relevant baseline indocs/security-baselines/before changing infrastructure, containers, CI/CD, Kubernetes, or secret handling. - Keep changes focused. One pull request should cover one project or one clear repository-wide improvement.
New or substantially improved projects should include:
- A clear README with goal, architecture, cost warning, prerequisites, credentials/config, quick start, validation, deploy, observe, cleanup, troubleshooting, and stretch goals.
- A valid
project.yamlthat followsproject.schema.json. - Example config files such as
.env.example,terraform.tfvars.example, or*.template.yamlinstead of real secrets. - A local or dry-run validation command that does not require exposing private credentials.
- Cleanup instructions for cloud, Kubernetes, Docker, Terraform, OpenTofu, or local resources.
Never commit real credentials, tokens, kubeconfigs, private keys, .env files, *.tfvars, generated Terraform state, or cloud account identifiers that should stay private.
Use placeholders and example files:
cp .env.example .env
cp terraform.tfvars.example terraform.tfvarsIf you accidentally commit a secret, rotate it first, then open a security report through SECURITY.md. Do not paste live secrets into issues, pull requests, logs, screenshots, or build artifacts.
Run the repository checks before opening a pull request:
python3 -m pip install -r tools/requirements.txt
make qualityFor a specific project, run:
make validate-project PROJECT=project-nameIf a project has its own Makefile, README validation command, Terraform fmt check, Docker Compose config check, or Kubernetes dry run, run that too and include the result in the pull request.
- Create a branch from
master. - Make focused edits with no unrelated formatting churn.
- Run the quality gates.
- Open a pull request using the template.
- Explain what changed, what you validated, and what still needs live cloud verification.
- Respond to review comments with either a follow-up commit or a clear reason for not changing the implementation.
- Write for students who are learning by doing.
- Prefer short, direct steps and copyable commands.
- Call out cost risk before deploy commands.
- Show how to observe success and how to roll back or clean up.
- Keep private values out of examples.