dojo.md 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/courses/GENERATION_LOG.md +72 -0
- package/courses/api-error-handling/course.yaml +16 -0
- package/courses/api-error-handling/scenarios/level-1/error-response-format.yaml +131 -0
- package/courses/api-error-handling/scenarios/level-1/http-status-codes-basics.yaml +90 -0
- package/courses/api-error-handling/scenarios/level-1/rate-limiting-basics.yaml +135 -0
- package/courses/api-error-handling/scenarios/level-1/request-validation-errors.yaml +208 -0
- package/courses/api-error-handling/scenarios/level-2/circuit-breaker-pattern.yaml +189 -0
- package/courses/api-error-handling/scenarios/level-2/idempotency-retry-logic.yaml +159 -0
- package/courses/api-error-handling/scenarios/level-2/rfc-7807-problem-details.yaml +178 -0
- package/courses/api-error-handling/scenarios/level-2/webhook-error-handling.yaml +211 -0
- package/courses/api-error-handling/scenarios/level-3/distributed-tracing-errors.yaml +275 -0
- package/courses/aws-lambda-debugging/course.yaml +11 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/api-gateway-integration.yaml +71 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/cloudwatch-logs-basics.yaml +64 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/cold-start-basics.yaml +70 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/environment-variable-issues.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/first-debugging-shift.yaml +73 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/handler-import-errors.yaml +71 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/iam-permission-errors.yaml +68 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/invocation-errors.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/lambda-timeout-errors.yaml +65 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/memory-and-oom.yaml +70 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/async-invocation-failures.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/cold-start-optimization.yaml +76 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/dynamodb-streams-debugging.yaml +70 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/intermediate-debugging-shift.yaml +71 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/lambda-concurrency-management.yaml +70 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/lambda-layers-debugging.yaml +76 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/sam-local-debugging.yaml +74 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/sqs-event-source.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/vpc-networking-issues.yaml +71 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/xray-tracing.yaml +62 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/advanced-debugging-shift.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/container-image-lambda.yaml +79 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/cross-account-invocation.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/eventbridge-patterns.yaml +79 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/iac-deployment-debugging.yaml +68 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/kinesis-stream-processing.yaml +64 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/lambda-at-edge.yaml +64 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/lambda-extensions-debugging.yaml +67 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/powertools-observability.yaml +79 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/step-functions-debugging.yaml +80 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/cost-optimization-strategy.yaml +67 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/expert-debugging-shift.yaml +62 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/incident-management-serverless.yaml +61 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/multi-region-serverless.yaml +67 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/observability-platform-design.yaml +71 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/serverless-architecture-design.yaml +64 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/serverless-data-architecture.yaml +66 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/serverless-migration-strategy.yaml +65 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/serverless-security-design.yaml +60 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/serverless-testing-strategy.yaml +62 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/board-serverless-strategy.yaml +63 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/consulting-serverless-adoption.yaml +57 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/industry-serverless-patterns.yaml +62 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/ma-serverless-integration.yaml +75 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/master-debugging-shift.yaml +61 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/organizational-serverless-transformation.yaml +65 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/regulatory-serverless.yaml +61 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/serverless-economics.yaml +65 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/serverless-future-technology.yaml +66 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/serverless-platform-design.yaml +71 -0
- package/courses/docker-container-debugging/course.yaml +11 -0
- package/courses/docker-container-debugging/scenarios/level-1/container-exit-codes.yaml +59 -0
- package/courses/docker-container-debugging/scenarios/level-1/container-networking-basics.yaml +69 -0
- package/courses/docker-container-debugging/scenarios/level-1/docker-logs-debugging.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-1/dockerfile-build-failures.yaml +71 -0
- package/courses/docker-container-debugging/scenarios/level-1/environment-variable-issues.yaml +74 -0
- package/courses/docker-container-debugging/scenarios/level-1/first-debugging-shift.yaml +70 -0
- package/courses/docker-container-debugging/scenarios/level-1/image-pull-failures.yaml +68 -0
- package/courses/docker-container-debugging/scenarios/level-1/port-mapping-issues.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-1/resource-limits-oom.yaml +70 -0
- package/courses/docker-container-debugging/scenarios/level-1/volume-mount-problems.yaml +66 -0
- package/courses/docker-container-debugging/scenarios/level-2/container-health-checks.yaml +73 -0
- package/courses/docker-container-debugging/scenarios/level-2/docker-compose-debugging.yaml +66 -0
- package/courses/docker-container-debugging/scenarios/level-2/docker-exec-debugging.yaml +71 -0
- package/courses/docker-container-debugging/scenarios/level-2/image-layer-optimization.yaml +81 -0
- package/courses/docker-container-debugging/scenarios/level-2/intermediate-debugging-shift.yaml +73 -0
- package/courses/docker-container-debugging/scenarios/level-2/logging-and-log-rotation.yaml +76 -0
- package/courses/docker-container-debugging/scenarios/level-2/multi-stage-build-debugging.yaml +76 -0
- package/courses/docker-container-debugging/scenarios/level-2/network-debugging-tools.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-2/pid1-signal-handling.yaml +71 -0
- package/courses/docker-container-debugging/scenarios/level-2/security-scanning-basics.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-3/advanced-debugging-shift.yaml +77 -0
- package/courses/docker-container-debugging/scenarios/level-3/buildkit-optimization.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-3/container-filesystem-debugging.yaml +70 -0
- package/courses/docker-container-debugging/scenarios/level-3/container-security-hardening.yaml +74 -0
- package/courses/docker-container-debugging/scenarios/level-3/disk-space-management.yaml +74 -0
- package/courses/docker-container-debugging/scenarios/level-3/docker-api-automation.yaml +72 -0
- package/courses/docker-container-debugging/scenarios/level-3/docker-daemon-issues.yaml +73 -0
- package/courses/docker-container-debugging/scenarios/level-3/docker-in-docker-ci.yaml +69 -0
- package/courses/docker-container-debugging/scenarios/level-3/overlay-network-debugging.yaml +70 -0
- package/courses/docker-container-debugging/scenarios/level-3/production-container-ops.yaml +71 -0
- package/courses/docker-container-debugging/scenarios/level-4/cicd-pipeline-design.yaml +66 -0
- package/courses/docker-container-debugging/scenarios/level-4/container-monitoring-observability.yaml +63 -0
- package/courses/docker-container-debugging/scenarios/level-4/container-orchestration-strategy.yaml +62 -0
- package/courses/docker-container-debugging/scenarios/level-4/container-performance-engineering.yaml +64 -0
- package/courses/docker-container-debugging/scenarios/level-4/container-security-architecture.yaml +66 -0
- package/courses/docker-container-debugging/scenarios/level-4/enterprise-image-management.yaml +58 -0
- package/courses/docker-container-debugging/scenarios/level-4/expert-debugging-shift.yaml +63 -0
- package/courses/docker-container-debugging/scenarios/level-4/incident-response-containers.yaml +70 -0
- package/courses/docker-container-debugging/scenarios/level-4/multi-environment-management.yaml +65 -0
- package/courses/docker-container-debugging/scenarios/level-4/stateful-service-containers.yaml +65 -0
- package/courses/docker-container-debugging/scenarios/level-5/board-infrastructure-strategy.yaml +58 -0
- package/courses/docker-container-debugging/scenarios/level-5/consulting-container-strategy.yaml +61 -0
- package/courses/docker-container-debugging/scenarios/level-5/container-platform-architecture.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-5/container-platform-economics.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-5/container-technology-evolution.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-5/disaster-recovery-containers.yaml +66 -0
- package/courses/docker-container-debugging/scenarios/level-5/industry-container-patterns.yaml +71 -0
- package/courses/docker-container-debugging/scenarios/level-5/master-debugging-shift.yaml +62 -0
- package/courses/docker-container-debugging/scenarios/level-5/organizational-transformation.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-5/regulatory-compliance-containers.yaml +61 -0
- package/courses/github-actions-cicd/course.yaml +10 -0
- package/courses/github-actions-cicd/scenarios/level-1/actions-and-runners.yaml +58 -0
- package/courses/github-actions-cicd/scenarios/level-1/basic-workflow-syntax.yaml +52 -0
- package/courses/github-actions-cicd/scenarios/level-1/branch-protection-checks.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-1/environment-variables-secrets.yaml +65 -0
- package/courses/github-actions-cicd/scenarios/level-1/first-cicd-shift.yaml +62 -0
- package/courses/github-actions-cicd/scenarios/level-1/job-dependencies-outputs.yaml +62 -0
- package/courses/github-actions-cicd/scenarios/level-1/simple-ci-pipeline.yaml +57 -0
- package/courses/github-actions-cicd/scenarios/level-1/workflow-debugging.yaml +90 -0
- package/courses/github-actions-cicd/scenarios/level-1/workflow-status-notifications.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-1/workflow-triggers.yaml +56 -0
- package/courses/github-actions-cicd/scenarios/level-2/concurrency-control.yaml +58 -0
- package/courses/github-actions-cicd/scenarios/level-2/conditional-execution.yaml +60 -0
- package/courses/github-actions-cicd/scenarios/level-2/custom-actions-development.yaml +55 -0
- package/courses/github-actions-cicd/scenarios/level-2/dependency-caching.yaml +58 -0
- package/courses/github-actions-cicd/scenarios/level-2/deployment-workflows.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-2/github-packages-publishing.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-2/intermediate-cicd-shift.yaml +68 -0
- package/courses/github-actions-cicd/scenarios/level-2/matrix-builds.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-2/reusable-workflows.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-2/workflow-cost-optimization.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-3/advanced-cicd-shift.yaml +64 -0
- package/courses/github-actions-cicd/scenarios/level-3/compliance-automation.yaml +68 -0
- package/courses/github-actions-cicd/scenarios/level-3/docker-action-development.yaml +65 -0
- package/courses/github-actions-cicd/scenarios/level-3/github-environments.yaml +65 -0
- package/courses/github-actions-cicd/scenarios/level-3/monorepo-ci.yaml +68 -0
- package/courses/github-actions-cicd/scenarios/level-3/oidc-cloud-deployments.yaml +55 -0
- package/courses/github-actions-cicd/scenarios/level-3/release-automation.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-3/security-hardening.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-3/self-hosted-runners.yaml +60 -0
- package/courses/github-actions-cicd/scenarios/level-3/workflow-optimization.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-data-architecture.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-economics-roi.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-executive-communication.yaml +58 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-incident-response.yaml +60 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-org-design.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-platform-architecture.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-training-program.yaml +65 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-vendor-evaluation.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-4/enterprise-cicd-governance.yaml +55 -0
- package/courses/github-actions-cicd/scenarios/level-4/expert-cicd-shift.yaml +60 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-ai-future.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-behavioral-science.yaml +70 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-board-strategy.yaml +56 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-consulting-engagement.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-industry-benchmarks.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-ma-integration.yaml +73 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-product-development.yaml +68 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-regulatory-landscape.yaml +72 -0
- package/courses/github-actions-cicd/scenarios/level-5/comprehensive-cicd-system.yaml +66 -0
- package/courses/github-actions-cicd/scenarios/level-5/master-cicd-shift.yaml +76 -0
- package/courses/github-pr-review/scenarios/level-2/api-change-review.yaml +82 -0
- package/courses/github-pr-review/scenarios/level-2/automated-review-tooling.yaml +53 -0
- package/courses/github-pr-review/scenarios/level-2/cross-team-review.yaml +61 -0
- package/courses/github-pr-review/scenarios/level-2/intermediate-review-shift.yaml +66 -0
- package/courses/github-pr-review/scenarios/level-2/performance-review-patterns.yaml +99 -0
- package/courses/github-pr-review/scenarios/level-2/review-disagreement-resolution.yaml +64 -0
- package/courses/github-pr-review/scenarios/level-2/review-metrics-analysis.yaml +63 -0
- package/courses/github-pr-review/scenarios/level-2/review-turnaround-sla.yaml +54 -0
- package/courses/github-pr-review/scenarios/level-2/stacked-pr-review.yaml +65 -0
- package/courses/github-pr-review/scenarios/level-3/advanced-review-shift.yaml +65 -0
- package/courses/github-pr-review/scenarios/level-3/ai-powered-review.yaml +58 -0
- package/courses/github-pr-review/scenarios/level-3/compliance-review-process.yaml +64 -0
- package/courses/github-pr-review/scenarios/level-3/cross-functional-review.yaml +60 -0
- package/courses/github-pr-review/scenarios/level-3/incident-driven-review.yaml +63 -0
- package/courses/github-pr-review/scenarios/level-3/large-scale-review-operations.yaml +55 -0
- package/courses/github-pr-review/scenarios/level-3/monorepo-review-process.yaml +68 -0
- package/courses/github-pr-review/scenarios/level-3/review-automation-platform.yaml +61 -0
- package/courses/github-pr-review/scenarios/level-3/review-culture-design.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-3/review-data-pipeline.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-4/enterprise-review-operations.yaml +61 -0
- package/courses/github-pr-review/scenarios/level-4/expert-review-shift.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-4/review-data-architecture.yaml +69 -0
- package/courses/github-pr-review/scenarios/level-4/review-economics-roi.yaml +63 -0
- package/courses/github-pr-review/scenarios/level-4/review-executive-communication.yaml +61 -0
- package/courses/github-pr-review/scenarios/level-4/review-incident-postmortem.yaml +69 -0
- package/courses/github-pr-review/scenarios/level-4/review-org-design.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-4/review-platform-architecture.yaml +64 -0
- package/courses/github-pr-review/scenarios/level-4/review-training-program.yaml +66 -0
- package/courses/github-pr-review/scenarios/level-4/review-vendor-evaluation.yaml +76 -0
- package/courses/github-pr-review/scenarios/level-5/comprehensive-review-system.yaml +68 -0
- package/courses/github-pr-review/scenarios/level-5/master-review-shift.yaml +73 -0
- package/courses/github-pr-review/scenarios/level-5/review-ai-future.yaml +69 -0
- package/courses/github-pr-review/scenarios/level-5/review-behavioral-science.yaml +66 -0
- package/courses/github-pr-review/scenarios/level-5/review-board-strategy.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-5/review-consulting-engagement.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-5/review-devtools-product.yaml +71 -0
- package/courses/github-pr-review/scenarios/level-5/review-industry-benchmarks.yaml +64 -0
- package/courses/github-pr-review/scenarios/level-5/review-ma-integration.yaml +76 -0
- package/courses/github-pr-review/scenarios/level-5/review-regulatory-landscape.yaml +78 -0
- package/courses/kubernetes-deployment-troubleshooting/course.yaml +12 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/configmap-secret-issues.yaml +69 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/crashloopbackoff.yaml +68 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/deployment-rollout.yaml +56 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/first-troubleshooting-shift.yaml +65 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/health-probe-failures.yaml +70 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/imagepullbackoff.yaml +57 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/kubectl-debugging-basics.yaml +56 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/oomkilled.yaml +70 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/pending-pods.yaml +68 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/service-not-reachable.yaml +66 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/dns-resolution-failures.yaml +63 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/helm-deployment-failures.yaml +63 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/hpa-scaling-issues.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/ingress-routing-issues.yaml +63 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/init-container-failures.yaml +63 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/intermediate-troubleshooting-shift.yaml +66 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/network-policy-blocking.yaml +67 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/persistent-volume-issues.yaml +69 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/rbac-permission-denied.yaml +57 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/resource-quota-limits.yaml +64 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/advanced-troubleshooting-shift.yaml +69 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/cluster-upgrade-failures.yaml +71 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/gitops-drift-detection.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/job-cronjob-failures.yaml +67 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/monitoring-alerting-gaps.yaml +64 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/multi-container-debugging.yaml +68 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/node-pressure-evictions.yaml +70 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/pod-disruption-budgets.yaml +59 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/service-mesh-debugging.yaml +64 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/statefulset-troubleshooting.yaml +69 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/capacity-planning.yaml +65 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/cost-optimization.yaml +57 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/disaster-recovery-design.yaml +56 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/executive-communication.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/expert-troubleshooting-shift.yaml +65 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/incident-management-process.yaml +59 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/multi-cluster-operations.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/multi-tenancy-design.yaml +55 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/platform-engineering.yaml +59 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/security-hardening.yaml +58 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/behavioral-science.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/board-strategy.yaml +61 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/cloud-native-future.yaml +65 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/comprehensive-platform.yaml +57 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/consulting-engagement.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/industry-benchmarks.yaml +58 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/ma-integration.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/master-troubleshooting-shift.yaml +73 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/product-development.yaml +65 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/regulatory-compliance.yaml +76 -0
- package/courses/mysql-query-optimization/course.yaml +11 -0
- package/courses/mysql-query-optimization/scenarios/level-1/buffer-pool-basics.yaml +65 -0
- package/courses/mysql-query-optimization/scenarios/level-1/explain-basics.yaml +66 -0
- package/courses/mysql-query-optimization/scenarios/level-1/first-optimization-shift.yaml +78 -0
- package/courses/mysql-query-optimization/scenarios/level-1/innodb-index-fundamentals.yaml +68 -0
- package/courses/mysql-query-optimization/scenarios/level-1/join-basics.yaml +66 -0
- package/courses/mysql-query-optimization/scenarios/level-1/n-plus-one-queries.yaml +67 -0
- package/courses/mysql-query-optimization/scenarios/level-1/query-rewriting-basics.yaml +66 -0
- package/courses/mysql-query-optimization/scenarios/level-1/select-star-problems.yaml +68 -0
- package/courses/mysql-query-optimization/scenarios/level-1/slow-query-diagnosis.yaml +65 -0
- package/courses/mysql-query-optimization/scenarios/level-1/where-clause-optimization.yaml +65 -0
- package/courses/mysql-query-optimization/scenarios/level-2/buffer-pool-tuning.yaml +64 -0
- package/courses/mysql-query-optimization/scenarios/level-2/composite-index-design.yaml +71 -0
- package/courses/mysql-query-optimization/scenarios/level-2/covering-and-invisible-indexes.yaml +69 -0
- package/courses/mysql-query-optimization/scenarios/level-2/cte-and-window-functions.yaml +78 -0
- package/courses/mysql-query-optimization/scenarios/level-2/intermediate-optimization-shift.yaml +68 -0
- package/courses/mysql-query-optimization/scenarios/level-2/join-optimization.yaml +67 -0
- package/courses/mysql-query-optimization/scenarios/level-2/performance-schema-analysis.yaml +69 -0
- package/courses/mysql-query-optimization/scenarios/level-2/query-optimizer-hints.yaml +74 -0
- package/courses/mysql-query-optimization/scenarios/level-2/subquery-optimization.yaml +70 -0
- package/courses/mysql-query-optimization/scenarios/level-2/write-optimization.yaml +63 -0
- package/courses/mysql-query-optimization/scenarios/level-3/advanced-optimization-shift.yaml +71 -0
- package/courses/mysql-query-optimization/scenarios/level-3/connection-management.yaml +67 -0
- package/courses/mysql-query-optimization/scenarios/level-3/full-text-search.yaml +77 -0
- package/courses/mysql-query-optimization/scenarios/level-3/json-optimization.yaml +87 -0
- package/courses/mysql-query-optimization/scenarios/level-3/lock-contention-analysis.yaml +68 -0
- package/courses/mysql-query-optimization/scenarios/level-3/monitoring-alerting.yaml +63 -0
- package/courses/mysql-query-optimization/scenarios/level-3/online-schema-changes.yaml +79 -0
- package/courses/mysql-query-optimization/scenarios/level-3/partitioning-strategies.yaml +83 -0
- package/courses/mysql-query-optimization/scenarios/level-3/query-profiling-deep-dive.yaml +84 -0
- package/courses/mysql-query-optimization/scenarios/level-3/replication-optimization.yaml +66 -0
- package/courses/mysql-query-optimization/scenarios/level-4/aurora-vs-rds-evaluation.yaml +61 -0
- package/courses/mysql-query-optimization/scenarios/level-4/data-architecture.yaml +62 -0
- package/courses/mysql-query-optimization/scenarios/level-4/database-migration-planning.yaml +59 -0
- package/courses/mysql-query-optimization/scenarios/level-4/enterprise-governance.yaml +50 -0
- package/courses/mysql-query-optimization/scenarios/level-4/executive-communication.yaml +54 -0
- package/courses/mysql-query-optimization/scenarios/level-4/expert-optimization-shift.yaml +67 -0
- package/courses/mysql-query-optimization/scenarios/level-4/high-availability-architecture.yaml +60 -0
- package/courses/mysql-query-optimization/scenarios/level-4/optimizer-internals.yaml +62 -0
- package/courses/mysql-query-optimization/scenarios/level-4/performance-sla-design.yaml +52 -0
- package/courses/mysql-query-optimization/scenarios/level-4/read-replica-scaling.yaml +51 -0
- package/courses/mysql-query-optimization/scenarios/level-5/ai-database-future.yaml +45 -0
- package/courses/mysql-query-optimization/scenarios/level-5/behavioral-science.yaml +44 -0
- package/courses/mysql-query-optimization/scenarios/level-5/benchmark-design.yaml +47 -0
- package/courses/mysql-query-optimization/scenarios/level-5/board-strategy.yaml +48 -0
- package/courses/mysql-query-optimization/scenarios/level-5/comprehensive-platform.yaml +49 -0
- package/courses/mysql-query-optimization/scenarios/level-5/consulting-engagement.yaml +52 -0
- package/courses/mysql-query-optimization/scenarios/level-5/ma-database-integration.yaml +47 -0
- package/courses/mysql-query-optimization/scenarios/level-5/master-optimization-shift.yaml +56 -0
- package/courses/mysql-query-optimization/scenarios/level-5/product-development.yaml +48 -0
- package/courses/mysql-query-optimization/scenarios/level-5/regulatory-compliance.yaml +48 -0
- package/courses/postgresql-query-optimization/course.yaml +11 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/explain-analyze-basics.yaml +80 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/first-optimization-shift.yaml +77 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/index-fundamentals.yaml +76 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/join-basics.yaml +73 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/n-plus-one-queries.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/query-rewriting-basics.yaml +69 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/select-star-problems.yaml +69 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/slow-query-diagnosis.yaml +63 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/vacuum-and-statistics.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/where-clause-optimization.yaml +74 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/autovacuum-tuning.yaml +76 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/composite-index-design.yaml +81 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/covering-indexes.yaml +74 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/cte-optimization.yaml +83 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/intermediate-optimization-shift.yaml +66 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/join-optimization.yaml +72 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/partial-and-expression-indexes.yaml +75 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/query-planner-settings.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/subquery-optimization.yaml +67 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/window-function-optimization.yaml +63 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/advanced-optimization-shift.yaml +71 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/connection-pooling.yaml +60 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/full-text-search-optimization.yaml +66 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/jsonb-optimization.yaml +88 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/lock-contention-analysis.yaml +80 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/materialized-view-optimization.yaml +73 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/parallel-query-execution.yaml +74 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/partitioning-strategies.yaml +71 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/specialized-index-types.yaml +67 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/write-optimization.yaml +65 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/data-architecture-analytics.yaml +64 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/database-executive-communication.yaml +64 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/database-migration-planning.yaml +57 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/enterprise-database-governance.yaml +52 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/expert-optimization-shift.yaml +73 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/high-availability-architecture.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/optimizer-internals.yaml +69 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/performance-sla-design.yaml +58 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/read-replica-optimization.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/vendor-evaluation.yaml +73 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/comprehensive-database-system.yaml +70 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-ai-future.yaml +81 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-behavioral-science.yaml +63 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-board-strategy.yaml +77 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-consulting-engagement.yaml +61 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-industry-benchmarks.yaml +64 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-ma-integration.yaml +71 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-product-development.yaml +72 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-regulatory-landscape.yaml +76 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/master-optimization-shift.yaml +66 -0
- package/courses/rest-api-error-handling/course.yaml +11 -0
- package/courses/rest-api-error-handling/scenarios/level-1/authentication-errors.yaml +71 -0
- package/courses/rest-api-error-handling/scenarios/level-1/content-negotiation-errors.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-1/error-logging-basics.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-1/error-response-format.yaml +58 -0
- package/courses/rest-api-error-handling/scenarios/level-1/first-error-handling-shift.yaml +67 -0
- package/courses/rest-api-error-handling/scenarios/level-1/http-status-codes.yaml +46 -0
- package/courses/rest-api-error-handling/scenarios/level-1/not-found-errors.yaml +52 -0
- package/courses/rest-api-error-handling/scenarios/level-1/rate-limiting-errors.yaml +56 -0
- package/courses/rest-api-error-handling/scenarios/level-1/request-validation-errors.yaml +59 -0
- package/courses/rest-api-error-handling/scenarios/level-1/server-error-handling.yaml +55 -0
- package/courses/rest-api-error-handling/scenarios/level-2/api-versioning-errors.yaml +66 -0
- package/courses/rest-api-error-handling/scenarios/level-2/batch-request-errors.yaml +61 -0
- package/courses/rest-api-error-handling/scenarios/level-2/circuit-breaker-pattern.yaml +52 -0
- package/courses/rest-api-error-handling/scenarios/level-2/error-code-taxonomy.yaml +62 -0
- package/courses/rest-api-error-handling/scenarios/level-2/error-monitoring-alerting.yaml +53 -0
- package/courses/rest-api-error-handling/scenarios/level-2/intermediate-error-shift.yaml +69 -0
- package/courses/rest-api-error-handling/scenarios/level-2/pagination-errors.yaml +66 -0
- package/courses/rest-api-error-handling/scenarios/level-2/retry-and-idempotency.yaml +60 -0
- package/courses/rest-api-error-handling/scenarios/level-2/rfc7807-problem-details.yaml +60 -0
- package/courses/rest-api-error-handling/scenarios/level-2/webhook-error-handling.yaml +55 -0
- package/courses/rest-api-error-handling/scenarios/level-3/advanced-error-shift.yaml +72 -0
- package/courses/rest-api-error-handling/scenarios/level-3/api-gateway-errors.yaml +71 -0
- package/courses/rest-api-error-handling/scenarios/level-3/async-api-errors.yaml +67 -0
- package/courses/rest-api-error-handling/scenarios/level-3/caching-error-scenarios.yaml +65 -0
- package/courses/rest-api-error-handling/scenarios/level-3/chaos-engineering-apis.yaml +62 -0
- package/courses/rest-api-error-handling/scenarios/level-3/database-error-handling.yaml +79 -0
- package/courses/rest-api-error-handling/scenarios/level-3/distributed-error-propagation.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-3/error-budgets-sre.yaml +61 -0
- package/courses/rest-api-error-handling/scenarios/level-3/error-correlation.yaml +58 -0
- package/courses/rest-api-error-handling/scenarios/level-3/graphql-vs-rest-errors.yaml +73 -0
- package/courses/rest-api-error-handling/scenarios/level-4/compliance-error-handling.yaml +65 -0
- package/courses/rest-api-error-handling/scenarios/level-4/enterprise-error-governance.yaml +62 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-analytics-platform.yaml +65 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-cost-optimization.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-executive-communication.yaml +60 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-handling-architecture.yaml +67 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-org-design.yaml +68 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-sla-design.yaml +65 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-training-program.yaml +61 -0
- package/courses/rest-api-error-handling/scenarios/level-4/expert-error-shift.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-5/comprehensive-error-system.yaml +68 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-ai-future.yaml +75 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-behavioral-science.yaml +73 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-board-strategy.yaml +60 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-consulting-engagement.yaml +58 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-industry-benchmarks.yaml +72 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-ma-integration.yaml +68 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-product-development.yaml +66 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-regulatory-landscape.yaml +80 -0
- package/courses/rest-api-error-handling/scenarios/level-5/master-error-shift.yaml +73 -0
- package/courses/terraform-infrastructure-setup/course.yaml +11 -0
- package/courses/terraform-infrastructure-setup/scenarios/level-1/terraform-init-errors.yaml +72 -0
- package/dist/cli/commands/add.d.ts.map +1 -1
- package/dist/cli/commands/add.js +6 -5
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +4 -0
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +6 -18
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/train.d.ts.map +1 -1
- package/dist/cli/commands/train.js +18 -18
- package/dist/cli/commands/train.js.map +1 -1
- package/dist/cli/index.js +93 -55
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/run-demo.js +2 -1
- package/dist/cli/run-demo.js.map +1 -1
- package/dist/cli/setup.d.ts +18 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +154 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/engine/agent-bridge.d.ts +5 -2
- package/dist/engine/agent-bridge.d.ts.map +1 -1
- package/dist/engine/agent-bridge.js +36 -9
- package/dist/engine/agent-bridge.js.map +1 -1
- package/dist/engine/loader.d.ts +21 -0
- package/dist/engine/loader.d.ts.map +1 -1
- package/dist/engine/loader.js +54 -1
- package/dist/engine/loader.js.map +1 -1
- package/dist/engine/training-loop.d.ts.map +1 -1
- package/dist/engine/training-loop.js +1 -0
- package/dist/engine/training-loop.js.map +1 -1
- package/dist/engine/training.d.ts.map +1 -1
- package/dist/engine/training.js +1 -0
- package/dist/engine/training.js.map +1 -1
- package/dist/generator/skill-generator.d.ts +1 -1
- package/dist/generator/skill-generator.d.ts.map +1 -1
- package/dist/generator/skill-generator.js +21 -2
- package/dist/generator/skill-generator.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +11 -26
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/session-manager.d.ts +9 -4
- package/dist/mcp/session-manager.d.ts.map +1 -1
- package/dist/mcp/session-manager.js +65 -28
- package/dist/mcp/session-manager.js.map +1 -1
- package/dist/types/schemas.d.ts +38 -13
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/schemas.js +9 -5
- package/dist/types/schemas.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: matrix-builds
|
|
3
|
+
level: 2
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Configure matrix builds — test across multiple OS, language versions, and configurations using strategy.matrix"
|
|
7
|
+
tags: [github, actions, matrix, cross-platform, multi-version, intermediate]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You maintain an open-source Node.js library that must work across
|
|
13
|
+
multiple environments. The library is used by projects running
|
|
14
|
+
different Node.js versions, operating systems, and package managers.
|
|
15
|
+
|
|
16
|
+
Test matrix requirements:
|
|
17
|
+
- Node.js versions: 18, 20, 22
|
|
18
|
+
- Operating systems: ubuntu-latest, windows-latest, macos-latest
|
|
19
|
+
- Package managers: npm, yarn, pnpm
|
|
20
|
+
- Full matrix = 3 x 3 x 3 = 27 combinations
|
|
21
|
+
|
|
22
|
+
Constraints:
|
|
23
|
+
- The full matrix takes too long (45 minutes) and costs too much
|
|
24
|
+
- Node 18 on Windows with pnpm has a known incompatibility — exclude
|
|
25
|
+
this combination
|
|
26
|
+
- Node 22 is experimental — failures shouldn't block the PR
|
|
27
|
+
- macOS runners cost 10x more than Linux runners — minimize usage
|
|
28
|
+
- You want to add a specific combination not in the matrix: Node 21
|
|
29
|
+
(nightly) on ubuntu-latest with npm
|
|
30
|
+
|
|
31
|
+
Additional requirements:
|
|
32
|
+
- If any matrix job fails, you want to see all results (don't cancel
|
|
33
|
+
other jobs immediately)
|
|
34
|
+
- The matrix should generate a human-readable job name like
|
|
35
|
+
"Test (node-20, ubuntu-latest, npm)"
|
|
36
|
+
- After all matrix jobs complete, a summary job should report which
|
|
37
|
+
combinations passed/failed
|
|
38
|
+
|
|
39
|
+
Task: Write the complete matrix workflow. Include: the matrix
|
|
40
|
+
configuration with include, exclude, and fail-fast settings, the
|
|
41
|
+
strategy for reducing the 27-combination matrix to a practical subset
|
|
42
|
+
(explain your reasoning for which to cut), the Node 22 experimental
|
|
43
|
+
configuration using continue-on-error, and the summary job that
|
|
44
|
+
collects all matrix results. Explain the cost implications of your
|
|
45
|
+
matrix choices.
|
|
46
|
+
|
|
47
|
+
assertions:
|
|
48
|
+
- type: llm_judge
|
|
49
|
+
criteria: "Matrix syntax is correct — uses strategy.matrix with proper include/exclude syntax, fail-fast: false, continue-on-error for Node 22, and the exclude for Node 18 + Windows + pnpm is correctly specified"
|
|
50
|
+
weight: 0.35
|
|
51
|
+
description: "Correct matrix syntax"
|
|
52
|
+
- type: llm_judge
|
|
53
|
+
criteria: "Matrix reduction is well-reasoned — reduces the 27-combination matrix to a practical subset (maybe 12-15), justifies which combinations to keep (e.g., full Linux matrix, reduced macOS to save cost), and the cost analysis shows the savings"
|
|
54
|
+
weight: 0.35
|
|
55
|
+
description: "Well-reasoned matrix reduction"
|
|
56
|
+
- type: llm_judge
|
|
57
|
+
criteria: "Summary job correctly aggregates results — uses needs with the matrix job, accesses matrix job outcomes, and produces a clear pass/fail report for all combinations. The workflow would work correctly in a real repository"
|
|
58
|
+
weight: 0.30
|
|
59
|
+
description: "Correct summary aggregation"
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: reusable-workflows
|
|
3
|
+
level: 2
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Build reusable workflows — create DRY CI/CD with reusable workflows, composite actions, and workflow templates"
|
|
7
|
+
tags: [github, actions, reusable-workflows, composite-actions, DRY, intermediate]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
Your organization has 15 Node.js repositories that all have nearly
|
|
13
|
+
identical CI/CD workflows. When you need to update the Node version
|
|
14
|
+
or add a security scan, you have to modify 15 files across 15 repos.
|
|
15
|
+
Last month, someone forgot to update 3 repos and they broke.
|
|
16
|
+
|
|
17
|
+
Current duplication:
|
|
18
|
+
- All 15 repos: checkout → setup-node → install → lint → test → build
|
|
19
|
+
- 8 repos: + deploy to staging on merge to main
|
|
20
|
+
- 5 repos: + deploy to production on release
|
|
21
|
+
- All repos: same Slack notification on failure
|
|
22
|
+
|
|
23
|
+
You need to create reusable components:
|
|
24
|
+
|
|
25
|
+
Component 1 — Reusable workflow (workflow_call):
|
|
26
|
+
Create a reusable CI workflow that accepts inputs:
|
|
27
|
+
- node-version (default: 20)
|
|
28
|
+
- run-e2e (boolean, default: false)
|
|
29
|
+
- deploy-target (string: none/staging/production)
|
|
30
|
+
And passes secrets:
|
|
31
|
+
- AWS credentials (for deployment)
|
|
32
|
+
- Slack webhook URL (for notifications)
|
|
33
|
+
|
|
34
|
+
Component 2 — Composite action:
|
|
35
|
+
Create a composite action "setup-and-test" that bundles:
|
|
36
|
+
- Checkout, setup-node, cache, install, lint, test
|
|
37
|
+
Into a single reusable action that can be used in any workflow
|
|
38
|
+
|
|
39
|
+
Component 3 — Workflow template (organization level):
|
|
40
|
+
Create a starter workflow template that new repos can adopt from
|
|
41
|
+
the "Actions" tab, pre-configured with your org's standards
|
|
42
|
+
|
|
43
|
+
Task: Build all 3 components. For each, write: the complete YAML
|
|
44
|
+
files, the calling workflow that uses them, and the comparison (when
|
|
45
|
+
to use reusable workflows vs composite actions vs templates). Include
|
|
46
|
+
the migration plan for moving the 15 repos from duplicated workflows
|
|
47
|
+
to the reusable approach.
|
|
48
|
+
|
|
49
|
+
assertions:
|
|
50
|
+
- type: llm_judge
|
|
51
|
+
criteria: "Reusable workflow is correctly structured — uses workflow_call trigger with typed inputs and secrets, the calling workflow uses 'uses: org/repo/.github/workflows/file.yml@main' syntax, and secrets are passed correctly (secrets: inherit or explicit)"
|
|
52
|
+
weight: 0.35
|
|
53
|
+
description: "Correct reusable workflow structure"
|
|
54
|
+
- type: llm_judge
|
|
55
|
+
criteria: "Composite action is properly defined — has action.yml with inputs/outputs, uses 'composite' runs type, steps use correct shell specification, and the calling workflow uses it with 'uses: org/repo/path@version' syntax"
|
|
56
|
+
weight: 0.35
|
|
57
|
+
description: "Proper composite action definition"
|
|
58
|
+
- type: llm_judge
|
|
59
|
+
criteria: "Comparison is clear and practical — explains when to choose reusable workflows (full job reuse, secret passing), composite actions (step-level reuse, can run in existing jobs), and templates (one-time setup for new repos), with a migration plan that doesn't break existing CI"
|
|
60
|
+
weight: 0.30
|
|
61
|
+
description: "Clear comparison and migration plan"
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: workflow-cost-optimization
|
|
3
|
+
level: 2
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Optimize workflow costs — reduce GitHub Actions spend through caching, concurrency, path filters, and runner selection"
|
|
7
|
+
tags: [github, actions, cost, optimization, billing, runners, intermediate]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
Your engineering manager just received the GitHub Actions bill:
|
|
13
|
+
$4,200/month for a 25-person team. They want you to cut it by 50%
|
|
14
|
+
without sacrificing CI quality. Here's the current usage breakdown:
|
|
15
|
+
|
|
16
|
+
Billing data (last month):
|
|
17
|
+
- Total minutes used: 42,000
|
|
18
|
+
- Linux runners: 28,000 min ($280 at $0.008/min)
|
|
19
|
+
- macOS runners: 8,000 min ($640 at $0.08/min)
|
|
20
|
+
- Windows runners: 6,000 min ($96 at $0.016/min)
|
|
21
|
+
- Storage (artifacts + packages): $180
|
|
22
|
+
- Overage beyond free tier: $3,000
|
|
23
|
+
|
|
24
|
+
Workflow analysis:
|
|
25
|
+
| Workflow | Runs/month | Avg duration | Total min | Cost |
|
|
26
|
+
|-------------------|-----------|-------------|-----------|-------|
|
|
27
|
+
| ci.yml | 1,200 | 15 min | 18,000 | $1,440|
|
|
28
|
+
| deploy.yml | 60 | 8 min | 480 | $38 |
|
|
29
|
+
| nightly-tests.yml | 30 | 45 min | 1,350 | $108 |
|
|
30
|
+
| e2e-all-os.yml | 400 | 30 min | 12,000 | $1,560|
|
|
31
|
+
| lint-on-save.yml | 2,000 | 3 min | 6,000 | $480 |
|
|
32
|
+
| security-scan.yml | 200 | 12 min | 2,400 | $192 |
|
|
33
|
+
| stale-cleanup.yml | 30 | 5 min | 150 | $12 |
|
|
34
|
+
|
|
35
|
+
Key observations:
|
|
36
|
+
- ci.yml runs on every push (even draft PRs, even docs-only changes)
|
|
37
|
+
- e2e-all-os.yml runs full matrix on all 3 OSes for every PR
|
|
38
|
+
- lint-on-save.yml triggers on every push including commit amends
|
|
39
|
+
- nightly-tests.yml runs a full test suite even when nothing changed
|
|
40
|
+
- Artifacts are retained for 90 days (default)
|
|
41
|
+
|
|
42
|
+
Task: Create the cost optimization plan. For each workflow, write:
|
|
43
|
+
the specific optimization (with YAML changes), the expected savings,
|
|
44
|
+
and any quality trade-offs. Include: the optimized billing projection,
|
|
45
|
+
the comparison of GitHub-hosted vs self-hosted runner economics for
|
|
46
|
+
this team's usage, and a monitoring dashboard design for ongoing
|
|
47
|
+
cost tracking. Target: reduce from $4,200 to under $2,100/month.
|
|
48
|
+
|
|
49
|
+
assertions:
|
|
50
|
+
- type: llm_judge
|
|
51
|
+
criteria: "Optimizations are specific and impactful — ci.yml gets path filters and draft PR skip, e2e-all-os runs full matrix only on main (reduced matrix on PRs), lint-on-save gets concurrency cancel-in-progress, artifact retention is reduced, and each optimization has a dollar-value estimate"
|
|
52
|
+
weight: 0.35
|
|
53
|
+
description: "Specific impactful optimizations"
|
|
54
|
+
- type: llm_judge
|
|
55
|
+
criteria: "Cost reduction achieves the target — the total projected savings reach or exceed 50% ($2,100 target), each optimization's savings are calculated from the billing data, and the math is consistent and reasonable"
|
|
56
|
+
weight: 0.35
|
|
57
|
+
description: "Target-achieving cost reduction"
|
|
58
|
+
- type: llm_judge
|
|
59
|
+
criteria: "Self-hosted runner analysis is included — compares the monthly cost of GitHub-hosted vs self-hosted for this usage level, considers the maintenance overhead of self-hosted, and makes a clear recommendation with break-even analysis"
|
|
60
|
+
weight: 0.30
|
|
61
|
+
description: "Self-hosted runner analysis"
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: advanced-cicd-shift
|
|
3
|
+
level: 3
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Advanced CI/CD shift — handle security incidents, compliance failures, and infrastructure emergencies in GitHub Actions"
|
|
7
|
+
tags: [github, actions, shift-simulation, security, compliance, incident, advanced]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're the CI/CD platform engineer handling an intense shift with
|
|
13
|
+
4 critical issues arriving within the same hour.
|
|
14
|
+
|
|
15
|
+
Issue 1 — Supply chain attack detected (Critical):
|
|
16
|
+
GitHub's secret scanning alerted that a popular action you use
|
|
17
|
+
(actions/setup-python@v4) had its v4 tag overwritten 30 minutes ago
|
|
18
|
+
by a compromised maintainer account. The malicious version exfiltrates
|
|
19
|
+
environment variables (including secrets) to an external server. Your
|
|
20
|
+
organization has 25 repos using this action. 8 workflow runs have
|
|
21
|
+
already executed since the compromise.
|
|
22
|
+
Immediate: Determine which repos are affected, assess exposure, and
|
|
23
|
+
block further execution.
|
|
24
|
+
|
|
25
|
+
Issue 2 — SOC 2 audit finding (High):
|
|
26
|
+
The SOC 2 auditor found that your required workflow (security scan)
|
|
27
|
+
can be bypassed. A developer discovered they can modify the workflow
|
|
28
|
+
file in their PR to skip the security scan, and since the modified
|
|
29
|
+
workflow is what runs, the bypass succeeds. This is a critical control
|
|
30
|
+
failure.
|
|
31
|
+
|
|
32
|
+
Issue 3 — Runner fleet failure (High):
|
|
33
|
+
Your self-hosted runner fleet (Kubernetes with ARC) is experiencing
|
|
34
|
+
cascading failures. The runner controller pod is in CrashLoopBackOff,
|
|
35
|
+
new jobs are queueing but not starting, and 15 deployments are
|
|
36
|
+
blocked. The last change was a Kubernetes cluster upgrade 2 hours ago.
|
|
37
|
+
|
|
38
|
+
Issue 4 — Cost spike (Medium):
|
|
39
|
+
GitHub Actions billing shows a 400% cost spike in the last 24 hours.
|
|
40
|
+
Investigation reveals a workflow with an infinite loop — a workflow
|
|
41
|
+
triggers on push, creates a commit, which triggers another push,
|
|
42
|
+
creating another commit. It's been running for 18 hours creating
|
|
43
|
+
5,000+ commits.
|
|
44
|
+
|
|
45
|
+
Task: Handle all 4 issues. For each, write: the immediate containment
|
|
46
|
+
action (what to do in the next 5 minutes), the investigation and
|
|
47
|
+
remediation steps, the root cause analysis, and the permanent fix.
|
|
48
|
+
Include: the incident communication (what to tell the security team,
|
|
49
|
+
auditors, and engineering org), and the post-incident improvements
|
|
50
|
+
to prevent all 4 types of issues.
|
|
51
|
+
|
|
52
|
+
assertions:
|
|
53
|
+
- type: llm_judge
|
|
54
|
+
criteria: "Supply chain attack response is comprehensive — identifies all 25 affected repos, assesses which 8 runs were compromised, immediately pins to SHA or blocks the action, rotates all exposed secrets, and reports the compromised action to GitHub"
|
|
55
|
+
weight: 0.35
|
|
56
|
+
description: "Comprehensive supply chain response"
|
|
57
|
+
- type: llm_judge
|
|
58
|
+
criteria: "Audit finding is remediated correctly — explains that required workflows from the calling repo can be modified, the fix uses organization-level required workflows (which run the org's version, not the PR's), and the auditor is given a corrective action plan"
|
|
59
|
+
weight: 0.35
|
|
60
|
+
description: "Correct audit finding remediation"
|
|
61
|
+
- type: llm_judge
|
|
62
|
+
criteria: "Infinite loop and runner issues are resolved — the infinite loop is stopped by disabling the workflow or adding recursion prevention ([skip ci] or checking github.actor), the runner fleet recovery addresses the K8s upgrade issue, and permanent fixes prevent both recurrence"
|
|
63
|
+
weight: 0.30
|
|
64
|
+
description: "Loop and runner resolution"
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: compliance-automation
|
|
3
|
+
level: 3
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Automate compliance in CI/CD — embed SOC 2, PCI DSS, and HIPAA controls into GitHub Actions workflows"
|
|
7
|
+
tags: [github, actions, compliance, SOC2, PCI-DSS, HIPAA, audit, advanced]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
Your fintech company processes healthcare payments (both PCI DSS and
|
|
13
|
+
HIPAA apply) and is pursuing SOC 2 Type II certification. The
|
|
14
|
+
auditors want to see that compliance controls are automated in CI/CD,
|
|
15
|
+
not just documented.
|
|
16
|
+
|
|
17
|
+
Required automated controls:
|
|
18
|
+
|
|
19
|
+
1. Change management (SOC 2 CC8.1):
|
|
20
|
+
- Every production change has an approved PR (no direct pushes)
|
|
21
|
+
- PR approval is from someone other than the author
|
|
22
|
+
- All CI checks pass before merge
|
|
23
|
+
- Deployment creates an auditable record (who, when, what, why)
|
|
24
|
+
|
|
25
|
+
2. Security testing (PCI DSS 6.5):
|
|
26
|
+
- SAST scan on every PR (CodeQL or Semgrep)
|
|
27
|
+
- Dependency vulnerability scan (Dependabot or Snyk)
|
|
28
|
+
- Secret scanning with push protection
|
|
29
|
+
- Container image scanning before deployment
|
|
30
|
+
|
|
31
|
+
3. Data protection (HIPAA):
|
|
32
|
+
- No PHI in logs (log sanitization check)
|
|
33
|
+
- Encryption verification (TLS, at-rest encryption config checks)
|
|
34
|
+
- Access audit log generation for every deployment
|
|
35
|
+
|
|
36
|
+
4. Evidence collection:
|
|
37
|
+
- All workflow runs produce compliance artifacts
|
|
38
|
+
- Artifacts are retained for 7 years (regulatory requirement)
|
|
39
|
+
- Evidence must be tamper-proof (signed, immutable)
|
|
40
|
+
- Monthly compliance report generation (automated)
|
|
41
|
+
|
|
42
|
+
Current gaps:
|
|
43
|
+
- Some repos don't have branch protection
|
|
44
|
+
- Security scans exist but are not required (can be skipped)
|
|
45
|
+
- No centralized compliance artifact storage
|
|
46
|
+
- Deployment audit logs are in plain text files, easy to modify
|
|
47
|
+
|
|
48
|
+
Task: Build the compliance automation pipeline. Write: the required
|
|
49
|
+
workflows (as organization-level required workflows), the branch
|
|
50
|
+
protection rulesets (org-wide enforcement), the security scan
|
|
51
|
+
configuration (CodeQL + Dependabot + secret scanning), the evidence
|
|
52
|
+
collection system (artifact storage, retention, signing), and the
|
|
53
|
+
monthly compliance report workflow. Include: the auditor-facing
|
|
54
|
+
documentation explaining how the automation satisfies each control.
|
|
55
|
+
|
|
56
|
+
assertions:
|
|
57
|
+
- type: llm_judge
|
|
58
|
+
criteria: "Controls are automated correctly — organization-level required workflows enforce security scans on all repos, branch protection rulesets prevent self-merge and require CI, and deployment audit records are generated automatically with tamper-proof signatures"
|
|
59
|
+
weight: 0.35
|
|
60
|
+
description: "Correctly automated controls"
|
|
61
|
+
- type: llm_judge
|
|
62
|
+
criteria: "Evidence collection meets regulatory requirements — compliance artifacts are stored with 7-year retention (not default 90 days), artifacts are signed for tamper-proofing, and the monthly report aggregates compliance data across all repos"
|
|
63
|
+
weight: 0.35
|
|
64
|
+
description: "Regulatory-meeting evidence collection"
|
|
65
|
+
- type: llm_judge
|
|
66
|
+
criteria: "Auditor documentation maps controls to workflows — each SOC 2/PCI/HIPAA control has a corresponding workflow or configuration with evidence of automation, and the documentation would satisfy an auditor (not just an engineer)"
|
|
67
|
+
weight: 0.30
|
|
68
|
+
description: "Auditor-satisfying documentation"
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: docker-action-development
|
|
3
|
+
level: 3
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Build custom Docker actions — create isolated, language-agnostic actions using Docker containers with proper testing and publishing"
|
|
7
|
+
tags: [github, actions, Docker, custom-actions, containers, advanced]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
Your security team needs 3 custom Docker-based actions for their
|
|
13
|
+
compliance pipeline. Docker actions are required (not JavaScript)
|
|
14
|
+
because they need specific CLI tools, language runtimes, and
|
|
15
|
+
isolation guarantees.
|
|
16
|
+
|
|
17
|
+
Action 1 — "compliance-scanner":
|
|
18
|
+
Purpose: Run a compliance scan against CIS benchmarks for Docker
|
|
19
|
+
images and Kubernetes manifests. Must include specific tools
|
|
20
|
+
(trivy, kubesec, conftest) that aren't available as standalone
|
|
21
|
+
actions with the versions you need.
|
|
22
|
+
Inputs: scan-type (docker/k8s), target (image name or manifest path),
|
|
23
|
+
severity-threshold (critical/high/medium), policy-dir (OPA policies)
|
|
24
|
+
Outputs: findings-count, report-path, pass/fail status
|
|
25
|
+
Requirements: Multi-stage Dockerfile, report in SARIF format,
|
|
26
|
+
integration with GitHub Security tab
|
|
27
|
+
|
|
28
|
+
Action 2 — "license-auditor":
|
|
29
|
+
Purpose: Audit all dependencies for license compliance. Must support
|
|
30
|
+
npm, pip, Go, and Java (Maven) in a single action. Uses a Python
|
|
31
|
+
script with specific libraries.
|
|
32
|
+
Inputs: package-manager, allowed-licenses (JSON array), fail-on-deny
|
|
33
|
+
Outputs: audit-report-path, denied-licenses-count
|
|
34
|
+
Requirements: Should generate a license bill of materials (BOM)
|
|
35
|
+
|
|
36
|
+
Action 3 — "secret-detector":
|
|
37
|
+
Purpose: Scan PR diffs for accidentally committed secrets using
|
|
38
|
+
custom regex patterns and entropy analysis. Runs in isolated
|
|
39
|
+
container for security (action itself handles sensitive data).
|
|
40
|
+
Inputs: custom-patterns (file path to regex list), entropy-threshold
|
|
41
|
+
Outputs: secrets-found-count, findings-path
|
|
42
|
+
Requirements: Must NOT log the actual secret values, must annotate
|
|
43
|
+
the PR with findings location
|
|
44
|
+
|
|
45
|
+
Task: Build all 3 Docker actions. For each, write: the Dockerfile
|
|
46
|
+
(multi-stage for size optimization), the entrypoint script, the
|
|
47
|
+
action.yml metadata, the test workflow (how to test a Docker action),
|
|
48
|
+
and the CI/CD for the action itself (building, testing, and publishing
|
|
49
|
+
the action). Include: the Docker caching strategy for action builds,
|
|
50
|
+
the versioning approach, and the security considerations for Docker
|
|
51
|
+
actions that handle sensitive data.
|
|
52
|
+
|
|
53
|
+
assertions:
|
|
54
|
+
- type: llm_judge
|
|
55
|
+
criteria: "Dockerfiles are well-designed — uses multi-stage builds to minimize image size, includes all required tools, entrypoint scripts handle inputs from environment variables correctly, and the action.yml files have complete metadata with all inputs/outputs"
|
|
56
|
+
weight: 0.35
|
|
57
|
+
description: "Well-designed Docker actions"
|
|
58
|
+
- type: llm_judge
|
|
59
|
+
criteria: "Testing strategy is practical — includes unit tests for the scripts, integration tests using a test workflow (workflow_dispatch or push to test branch), and explains how to test Docker actions locally before publishing"
|
|
60
|
+
weight: 0.35
|
|
61
|
+
description: "Practical testing strategy"
|
|
62
|
+
- type: llm_judge
|
|
63
|
+
criteria: "Security considerations are addressed — the secret-detector doesn't log secrets, Docker actions run in isolation, the compliance-scanner SARIF output integrates with GitHub Security tab, and the versioning approach uses SHA-pinned tags"
|
|
64
|
+
weight: 0.30
|
|
65
|
+
description: "Security considerations addressed"
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: github-environments
|
|
3
|
+
level: 3
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Configure GitHub Environments — set up deployment protection rules, approval gates, and environment-specific secrets"
|
|
7
|
+
tags: [github, actions, environments, protection-rules, deployment-gates, advanced]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
Your company needs a multi-environment deployment pipeline with
|
|
13
|
+
proper gates and controls. Currently, deployments go directly to
|
|
14
|
+
production with no staging or approval process.
|
|
15
|
+
|
|
16
|
+
Environment requirements:
|
|
17
|
+
1. Development (dev):
|
|
18
|
+
- Auto-deploy on every push to feature branches
|
|
19
|
+
- Ephemeral environments (one per PR, destroyed on merge)
|
|
20
|
+
- No approval required
|
|
21
|
+
- Uses development database and mock services
|
|
22
|
+
|
|
23
|
+
2. Staging:
|
|
24
|
+
- Auto-deploy on merge to main
|
|
25
|
+
- Protected: only deployable from main branch
|
|
26
|
+
- Runs smoke tests after deployment
|
|
27
|
+
- Uses staging database with anonymized production data
|
|
28
|
+
- Secrets: staging-specific AWS credentials, API keys
|
|
29
|
+
|
|
30
|
+
3. Production:
|
|
31
|
+
- Manual approval required (2 reviewers from @devops team)
|
|
32
|
+
- Deployment window: weekdays 9AM-4PM ET (no weekend deploys)
|
|
33
|
+
- Wait timer: 5-minute delay after approval (for last-minute
|
|
34
|
+
cancellation)
|
|
35
|
+
- Branch restriction: only main branch
|
|
36
|
+
- Secrets: production AWS credentials, API keys, DB connection
|
|
37
|
+
- Required: all staging smoke tests must have passed
|
|
38
|
+
|
|
39
|
+
4. Canary (subset of production):
|
|
40
|
+
- Deploy to 5% of production traffic first
|
|
41
|
+
- Monitor error rates for 15 minutes
|
|
42
|
+
- Auto-promote to full production if error rate < 0.5%
|
|
43
|
+
- Auto-rollback if error rate > 1%
|
|
44
|
+
|
|
45
|
+
Task: Configure all 4 environments. Write: the GitHub Environment
|
|
46
|
+
settings for each (protection rules, secrets, deployment branch
|
|
47
|
+
policy), the deployment workflow that uses all 4 environments in
|
|
48
|
+
sequence, the canary deployment logic (traffic splitting and
|
|
49
|
+
monitoring), and the ephemeral environment management for dev (create
|
|
50
|
+
on PR open, destroy on PR close). Include the IAM and infrastructure
|
|
51
|
+
setup needed to support environment-specific secrets.
|
|
52
|
+
|
|
53
|
+
assertions:
|
|
54
|
+
- type: llm_judge
|
|
55
|
+
criteria: "GitHub Environment configuration is correct — each environment has appropriate protection rules (required reviewers for production, wait timer, branch policy), environment-specific secrets are properly scoped, and the deployment window restriction uses custom deployment protection rules"
|
|
56
|
+
weight: 0.35
|
|
57
|
+
description: "Correct environment configuration"
|
|
58
|
+
- type: llm_judge
|
|
59
|
+
criteria: "Deployment workflow uses environments correctly — references environments with 'environment:' key in each job, environment approvals pause the workflow, secrets are accessed per-environment, and the sequential flow (dev → staging → canary → production) is properly orchestrated"
|
|
60
|
+
weight: 0.35
|
|
61
|
+
description: "Correct environment workflow usage"
|
|
62
|
+
- type: llm_judge
|
|
63
|
+
criteria: "Canary and ephemeral environments are practical — canary deployment includes traffic splitting logic and monitoring-based auto-promote/rollback, ephemeral dev environments are created/destroyed via PR lifecycle events, and the infrastructure requirements are addressed"
|
|
64
|
+
weight: 0.30
|
|
65
|
+
description: "Practical canary and ephemeral environments"
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: monorepo-ci
|
|
3
|
+
level: 3
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Design monorepo CI — build efficient CI pipelines for monorepos with path filters, dynamic matrices, and selective testing"
|
|
7
|
+
tags: [github, actions, monorepo, path-filters, dynamic-matrix, turborepo, advanced]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
Your company migrated 8 microservices into a Turborepo monorepo.
|
|
13
|
+
The current CI runs ALL tests for every PR, taking 35 minutes and
|
|
14
|
+
costing $800/month unnecessarily. You need to make CI smart enough
|
|
15
|
+
to only test what changed.
|
|
16
|
+
|
|
17
|
+
Monorepo structure:
|
|
18
|
+
```
|
|
19
|
+
/
|
|
20
|
+
├── apps/
|
|
21
|
+
│ ├── web/ (React, 12,000 lines)
|
|
22
|
+
│ ├── api/ (Express, 8,000 lines)
|
|
23
|
+
│ ├── mobile/ (React Native, 10,000 lines)
|
|
24
|
+
│ └── admin/ (Next.js, 5,000 lines)
|
|
25
|
+
├── packages/
|
|
26
|
+
│ ├── ui/ (Shared components, used by web + mobile + admin)
|
|
27
|
+
│ ├── auth/ (Auth library, used by api + web + admin)
|
|
28
|
+
│ ├── database/ (Prisma client, used by api + admin)
|
|
29
|
+
│ └── config/ (Shared config, used by all)
|
|
30
|
+
├── turbo.json
|
|
31
|
+
└── package.json
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Dependency graph:
|
|
35
|
+
- web depends on: ui, auth, config
|
|
36
|
+
- api depends on: auth, database, config
|
|
37
|
+
- mobile depends on: ui, auth, config
|
|
38
|
+
- admin depends on: ui, auth, database, config
|
|
39
|
+
|
|
40
|
+
Requirements:
|
|
41
|
+
1. Only run tests for changed packages and their dependents
|
|
42
|
+
2. If packages/auth changes, test web, api, mobile, and admin
|
|
43
|
+
3. If apps/web changes, only test web
|
|
44
|
+
4. If packages/config changes, test everything (affects all)
|
|
45
|
+
5. Generate the test matrix dynamically based on affected packages
|
|
46
|
+
6. Run Turborepo's --filter for selective builds
|
|
47
|
+
7. Cache Turborepo's .turbo directory across workflow runs
|
|
48
|
+
|
|
49
|
+
Task: Write the monorepo CI workflow. Include: the change detection
|
|
50
|
+
job (determines which packages are affected), the dynamic matrix
|
|
51
|
+
generation (creates a matrix from affected packages), the selective
|
|
52
|
+
test execution (only tests affected packages), the Turborepo
|
|
53
|
+
integration (using --filter and caching), and the deployment trigger
|
|
54
|
+
logic (deploy web only if web or its dependencies changed).
|
|
55
|
+
|
|
56
|
+
assertions:
|
|
57
|
+
- type: llm_judge
|
|
58
|
+
criteria: "Change detection correctly identifies affected packages — uses git diff with path matching, understands the dependency graph (changing auth affects all consumers), and handles the transitive dependency case (config affects everything)"
|
|
59
|
+
weight: 0.35
|
|
60
|
+
description: "Correct change detection"
|
|
61
|
+
- type: llm_judge
|
|
62
|
+
criteria: "Dynamic matrix is properly generated — the detection job outputs a JSON array of affected packages, the test job uses fromJson() to create a dynamic matrix, and the matrix correctly handles the case where no packages are affected (skips testing)"
|
|
63
|
+
weight: 0.35
|
|
64
|
+
description: "Proper dynamic matrix generation"
|
|
65
|
+
- type: llm_judge
|
|
66
|
+
criteria: "Turborepo integration is correct — uses turbo run test --filter with correct syntax, caches .turbo directory between runs, and the cost savings are estimated (from 35 minutes for all packages to X minutes for affected only)"
|
|
67
|
+
weight: 0.30
|
|
68
|
+
description: "Correct Turborepo integration"
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: oidc-cloud-deployments
|
|
3
|
+
level: 3
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Deploy with OIDC — configure keyless authentication to AWS, GCP, and Azure using GitHub Actions OIDC tokens"
|
|
7
|
+
tags: [github, actions, OIDC, AWS, GCP, Azure, cloud-auth, advanced]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
Your company deploys to all 3 major cloud providers and currently
|
|
13
|
+
uses long-lived credentials stored as GitHub Secrets. The security
|
|
14
|
+
team mandates a migration to OIDC (keyless authentication) within
|
|
15
|
+
30 days. No more static credentials in GitHub Secrets.
|
|
16
|
+
|
|
17
|
+
Current setup (to be replaced):
|
|
18
|
+
- AWS: IAM user access key + secret key in GitHub Secrets
|
|
19
|
+
- GCP: Service account key JSON file in GitHub Secrets
|
|
20
|
+
- Azure: Service principal client ID + secret in GitHub Secrets
|
|
21
|
+
|
|
22
|
+
Deployment targets:
|
|
23
|
+
- AWS: ECS (API), S3 + CloudFront (frontend), Lambda (serverless)
|
|
24
|
+
- GCP: Cloud Run (microservices), GCS (static assets)
|
|
25
|
+
- Azure: AKS (Kubernetes), Azure Functions (serverless)
|
|
26
|
+
|
|
27
|
+
Requirements:
|
|
28
|
+
- Each cloud provider should only trust tokens from specific repos
|
|
29
|
+
- Production deployments should only be allowed from the main branch
|
|
30
|
+
- Staging deployments should be allowed from any branch
|
|
31
|
+
- Each cloud role should have minimum required permissions
|
|
32
|
+
- The OIDC configuration should work with GitHub Environments
|
|
33
|
+
|
|
34
|
+
Task: Configure OIDC for all 3 cloud providers. For each, write:
|
|
35
|
+
the identity provider setup (cloud-side configuration), the trust
|
|
36
|
+
policy (limiting which repos/branches can assume the role), the
|
|
37
|
+
IAM role with minimum permissions, the workflow changes (replacing
|
|
38
|
+
static credentials with OIDC), and the testing/verification steps.
|
|
39
|
+
Include: a comparison of OIDC across the 3 providers, the common
|
|
40
|
+
pitfalls, and the migration checklist for removing old static
|
|
41
|
+
credentials safely.
|
|
42
|
+
|
|
43
|
+
assertions:
|
|
44
|
+
- type: llm_judge
|
|
45
|
+
criteria: "AWS OIDC is correctly configured — IAM OIDC provider with GitHub's thumbprint, IAM role trust policy with conditions on repo and branch (sub claim), workflow uses aws-actions/configure-aws-credentials with role-to-assume and no static credentials"
|
|
46
|
+
weight: 0.35
|
|
47
|
+
description: "Correct AWS OIDC configuration"
|
|
48
|
+
- type: llm_judge
|
|
49
|
+
criteria: "GCP and Azure OIDC are also configured — GCP uses Workload Identity Federation with correct attribute mapping, Azure uses federated credentials on the app registration, and both have branch-restricted trust policies matching the AWS pattern"
|
|
50
|
+
weight: 0.35
|
|
51
|
+
description: "Complete multi-cloud OIDC"
|
|
52
|
+
- type: llm_judge
|
|
53
|
+
criteria: "Migration plan is safe — includes a parallel-running period (both OIDC and static credentials work), verification steps before removing static credentials, rollback plan if OIDC fails, and the credential rotation/deletion checklist"
|
|
54
|
+
weight: 0.30
|
|
55
|
+
description: "Safe migration plan"
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: release-automation
|
|
3
|
+
level: 3
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Automate releases — build semantic versioning, changelog generation, and GitHub Release workflows"
|
|
7
|
+
tags: [github, actions, releases, semantic-versioning, changelog, automation, advanced]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
Your team currently releases manually: someone bumps the version in
|
|
13
|
+
package.json, writes a changelog entry, creates a git tag, builds
|
|
14
|
+
the artifacts, and creates a GitHub Release. This takes 45 minutes
|
|
15
|
+
and has caused errors (wrong version, missing changelog entries,
|
|
16
|
+
forgotten tags). You need to fully automate the release process.
|
|
17
|
+
|
|
18
|
+
Requirements:
|
|
19
|
+
1. Semantic versioning based on commit messages:
|
|
20
|
+
- feat: → minor bump (1.2.0 → 1.3.0)
|
|
21
|
+
- fix: → patch bump (1.2.0 → 1.2.1)
|
|
22
|
+
- BREAKING CHANGE: → major bump (1.2.0 → 2.0.0)
|
|
23
|
+
- Use conventional commits to determine version bump
|
|
24
|
+
|
|
25
|
+
2. Automated changelog generation:
|
|
26
|
+
- Generate from conventional commits since last release
|
|
27
|
+
- Group by type: Features, Bug Fixes, Breaking Changes
|
|
28
|
+
- Include PR links and author attributions
|
|
29
|
+
- Update CHANGELOG.md in the repo
|
|
30
|
+
|
|
31
|
+
3. Release artifacts:
|
|
32
|
+
- Build production bundles (frontend + backend)
|
|
33
|
+
- Generate Docker images tagged with version
|
|
34
|
+
- Create source code archives (zip + tar.gz)
|
|
35
|
+
- Sign artifacts with cosign/sigstore
|
|
36
|
+
|
|
37
|
+
4. Release workflow triggers:
|
|
38
|
+
- Option A: Automatically release on merge to main (CD)
|
|
39
|
+
- Option B: Manual trigger with version override
|
|
40
|
+
- Option C: Release PR workflow (create a "release PR" that
|
|
41
|
+
shows the changelog for review before publishing)
|
|
42
|
+
|
|
43
|
+
Task: Implement all 3 release workflow options. For each, write: the
|
|
44
|
+
complete workflow YAML, the tooling configuration (semantic-release,
|
|
45
|
+
release-please, or changesets — compare all 3), the changelog format
|
|
46
|
+
and generation logic, and the artifact signing configuration. Recommend
|
|
47
|
+
which option works best for different team sizes and release cadences.
|
|
48
|
+
|
|
49
|
+
assertions:
|
|
50
|
+
- type: llm_judge
|
|
51
|
+
criteria: "Semantic versioning is correctly automated — conventional commits are parsed, version bumps follow semver rules, package.json version is updated, git tag is created, and BREAKING CHANGE triggers a major bump correctly"
|
|
52
|
+
weight: 0.35
|
|
53
|
+
description: "Correct semantic versioning automation"
|
|
54
|
+
- type: llm_judge
|
|
55
|
+
criteria: "Tool comparison is informative — compares semantic-release, release-please, and changesets on features, complexity, customization, and team fit. Makes a clear recommendation for different scenarios (OSS vs enterprise, mono vs multi-repo)"
|
|
56
|
+
weight: 0.35
|
|
57
|
+
description: "Informative tool comparison"
|
|
58
|
+
- type: llm_judge
|
|
59
|
+
criteria: "All 3 workflow options are implemented — automatic CD, manual trigger with override, and release PR workflow are all provided with complete YAML, and the recommendation explains when each is appropriate"
|
|
60
|
+
weight: 0.30
|
|
61
|
+
description: "All release workflow options"
|