dojo.md 0.1.0 → 0.2.0
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 +27 -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/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/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/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/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 +3 -1
- package/dist/mcp/session-manager.d.ts.map +1 -1
- package/dist/mcp/session-manager.js +44 -22
- 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,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"
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: security-hardening
|
|
3
|
+
level: 3
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Harden GitHub Actions security — prevent supply chain attacks, pin actions by SHA, implement OIDC, and secure workflows"
|
|
7
|
+
tags: [github, actions, security, supply-chain, OIDC, hardening, advanced]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
Your security team conducted an audit of your GitHub Actions setup
|
|
13
|
+
and found critical vulnerabilities. You need to remediate all findings
|
|
14
|
+
and implement a security hardening plan.
|
|
15
|
+
|
|
16
|
+
Audit findings:
|
|
17
|
+
|
|
18
|
+
Finding 1 — Supply chain risk (Critical):
|
|
19
|
+
All 45 third-party actions are referenced by tag (e.g., @v4) not by
|
|
20
|
+
SHA. A compromised action tag could execute malicious code in your
|
|
21
|
+
CI. Example: `uses: some-popular-action/upload@v3` — if that
|
|
22
|
+
maintainer's account is compromised, v3 could be overwritten.
|
|
23
|
+
|
|
24
|
+
Finding 2 — Overly permissive GITHUB_TOKEN (High):
|
|
25
|
+
All workflows run with default GITHUB_TOKEN permissions (read+write
|
|
26
|
+
on all scopes). Most workflows only need read access to contents
|
|
27
|
+
and write access to pull-requests.
|
|
28
|
+
|
|
29
|
+
Finding 3 — Fork PR vulnerability (High):
|
|
30
|
+
Workflows triggered by pull_request_target have access to secrets
|
|
31
|
+
and run in the context of the base branch. A malicious fork could
|
|
32
|
+
submit a PR that exfiltrates secrets.
|
|
33
|
+
|
|
34
|
+
Finding 4 — No OIDC authentication (Medium):
|
|
35
|
+
AWS deployments use long-lived access keys stored as GitHub Secrets.
|
|
36
|
+
These keys never rotate and would be exposed if a workflow is
|
|
37
|
+
compromised. Should use OIDC for keyless authentication.
|
|
38
|
+
|
|
39
|
+
Finding 5 — Script injection (Medium):
|
|
40
|
+
Several workflows use github.event.pull_request.title directly in
|
|
41
|
+
run: commands. A PR title containing backticks or $() could execute
|
|
42
|
+
arbitrary commands.
|
|
43
|
+
|
|
44
|
+
Task: Remediate all 5 findings. For each, write: the vulnerability
|
|
45
|
+
explanation (how it could be exploited), the remediation (specific
|
|
46
|
+
YAML changes), the verification steps (how to confirm the fix works),
|
|
47
|
+
and the ongoing prevention strategy. Include: the complete OIDC setup
|
|
48
|
+
for AWS (IAM role, trust policy, workflow changes), the GITHUB_TOKEN
|
|
49
|
+
permission lockdown, and a security checklist for all future workflows.
|
|
50
|
+
|
|
51
|
+
assertions:
|
|
52
|
+
- type: llm_judge
|
|
53
|
+
criteria: "All 5 vulnerabilities are remediated correctly — actions pinned by full SHA, GITHUB_TOKEN permissions restricted with permissions: key at workflow and job level, pull_request_target secured against fork attacks, OIDC configured for AWS, and script injection prevented with environment variables"
|
|
54
|
+
weight: 0.35
|
|
55
|
+
description: "Correct vulnerability remediation"
|
|
56
|
+
- type: llm_judge
|
|
57
|
+
criteria: "OIDC setup is complete — includes the AWS IAM OIDC identity provider, the IAM role trust policy with correct GitHub conditions (repo, branch, environment), the workflow changes to use aws-actions/configure-aws-credentials with OIDC, and explains why this is more secure than static keys"
|
|
58
|
+
weight: 0.35
|
|
59
|
+
description: "Complete OIDC setup"
|
|
60
|
+
- type: llm_judge
|
|
61
|
+
criteria: "Security checklist is actionable — covers at least 10 security practices for GitHub Actions, is formatted as a PR review checklist, and includes automated enforcement options (e.g., CodeQL for workflow scanning, required workflow for org-wide security policy)"
|
|
62
|
+
weight: 0.30
|
|
63
|
+
description: "Actionable security checklist"
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: self-hosted-runners
|
|
3
|
+
level: 3
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Manage self-hosted runners — set up, secure, scale, and maintain self-hosted runner infrastructure for GitHub Actions"
|
|
7
|
+
tags: [github, actions, self-hosted-runners, infrastructure, scaling, advanced]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
Your company is migrating from GitHub-hosted to self-hosted runners
|
|
13
|
+
for 3 reasons: cost reduction (spending $15K/month on GitHub runners),
|
|
14
|
+
specialized hardware needs (GPU for ML model testing), and compliance
|
|
15
|
+
requirements (code must not leave your network).
|
|
16
|
+
|
|
17
|
+
Infrastructure requirements:
|
|
18
|
+
- 80 engineers, 300 workflow runs per day
|
|
19
|
+
- Peak: 50 concurrent jobs during 10AM-2PM
|
|
20
|
+
- Job types: CI (80%), deployment (15%), ML training (5%)
|
|
21
|
+
- Runner OS: Linux (90%), macOS (10% for iOS builds)
|
|
22
|
+
- Security: runners must be ephemeral (clean state per job)
|
|
23
|
+
- Network: runners need access to internal services but not
|
|
24
|
+
unrestricted internet access
|
|
25
|
+
|
|
26
|
+
Architecture options to evaluate:
|
|
27
|
+
1. Bare metal servers in your data center
|
|
28
|
+
2. VMs on existing VMware infrastructure
|
|
29
|
+
3. Kubernetes with actions-runner-controller (ARC)
|
|
30
|
+
4. Auto-scaled cloud VMs (AWS EC2 with runner auto-scaler)
|
|
31
|
+
|
|
32
|
+
Security concerns:
|
|
33
|
+
- How to prevent a malicious workflow from compromising the runner
|
|
34
|
+
- How to handle secrets on self-hosted runners
|
|
35
|
+
- How to ensure runners are patched and updated
|
|
36
|
+
- How to isolate runners between teams/repos
|
|
37
|
+
- How to prevent crypto mining on organization runners
|
|
38
|
+
|
|
39
|
+
Task: Design the self-hosted runner infrastructure. Write: the
|
|
40
|
+
architecture recommendation (which option and why), the runner
|
|
41
|
+
configuration (labels, groups, scaling policies), the security
|
|
42
|
+
hardening guide (ephemeral runners, network isolation, secret
|
|
43
|
+
handling), the monitoring and alerting setup (runner health, queue
|
|
44
|
+
depth, job wait times), and the cost comparison (self-hosted vs
|
|
45
|
+
GitHub-hosted for your usage). Include the runner registration
|
|
46
|
+
automation and the disaster recovery plan.
|
|
47
|
+
|
|
48
|
+
assertions:
|
|
49
|
+
- type: llm_judge
|
|
50
|
+
criteria: "Architecture recommendation is well-reasoned — evaluates all 4 options with pros/cons for the specific requirements, likely recommends ARC or cloud auto-scaling for ephemeral runners, and addresses GPU needs for ML jobs separately from general CI"
|
|
51
|
+
weight: 0.35
|
|
52
|
+
description: "Well-reasoned architecture"
|
|
53
|
+
- type: llm_judge
|
|
54
|
+
criteria: "Security hardening is comprehensive — covers ephemeral runners (clean state per job), network isolation (firewall rules, no internet for sensitive repos), runner groups for team isolation, automatic patching, and protection against malicious workflows"
|
|
55
|
+
weight: 0.35
|
|
56
|
+
description: "Comprehensive security hardening"
|
|
57
|
+
- type: llm_judge
|
|
58
|
+
criteria: "Cost comparison is data-driven — calculates the total cost of self-hosted (hardware, maintenance, networking, engineer time) vs GitHub-hosted ($15K/month), identifies the break-even point, and the monitoring setup tracks runner utilization to optimize costs"
|
|
59
|
+
weight: 0.30
|
|
60
|
+
description: "Data-driven cost comparison"
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: workflow-optimization
|
|
3
|
+
level: 3
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Optimize workflow performance — reduce CI time from 30 to 10 minutes using parallelism, caching, and smart architecture"
|
|
7
|
+
tags: [github, actions, optimization, parallelism, performance, advanced]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
Your team's main CI workflow takes 30 minutes to complete. This is
|
|
13
|
+
the #1 developer experience complaint. The CTO wants it under 10
|
|
14
|
+
minutes. Here's the current workflow and timing breakdown:
|
|
15
|
+
|
|
16
|
+
Current workflow (sequential):
|
|
17
|
+
```
|
|
18
|
+
checkout (30s) → install (3min) → lint (2min) → typecheck (3min) →
|
|
19
|
+
unit-tests (8min) → integration-tests (6min) → e2e-tests (5min) →
|
|
20
|
+
build (2min) → docker-build (1.5min) = 31 minutes total
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Additional data:
|
|
24
|
+
- Unit tests: 1,200 tests in 45 test files
|
|
25
|
+
- Integration tests: 80 tests requiring PostgreSQL + Redis
|
|
26
|
+
- E2E tests: 30 Cypress tests requiring a running dev server
|
|
27
|
+
- Build output: 12MB frontend bundle + Docker image
|
|
28
|
+
- Cache hit rate: 60% (should be 95%+)
|
|
29
|
+
- Runner: ubuntu-latest (2 CPU, 7GB RAM)
|
|
30
|
+
|
|
31
|
+
Optimization budget:
|
|
32
|
+
- Can split into multiple parallel jobs
|
|
33
|
+
- Can use larger runners (4 CPU, 16GB RAM) — 2x cost but 2x faster
|
|
34
|
+
- Can use test sharding (split tests across parallel workers)
|
|
35
|
+
- Can use remote caching (Turborepo remote cache or similar)
|
|
36
|
+
- Can restructure tests (some unit tests may actually be integration)
|
|
37
|
+
|
|
38
|
+
Task: Redesign the workflow for sub-10-minute completion. Write: the
|
|
39
|
+
optimized workflow YAML with parallel jobs, the test sharding
|
|
40
|
+
configuration (split unit tests across N workers), the caching
|
|
41
|
+
strategy (to achieve 95%+ hit rate), the runner sizing analysis
|
|
42
|
+
(standard vs larger runners — cost vs speed trade-off), and the
|
|
43
|
+
before/after comparison (timeline diagram showing parallel execution
|
|
44
|
+
vs sequential). Explain each optimization technique and its expected
|
|
45
|
+
impact.
|
|
46
|
+
|
|
47
|
+
assertions:
|
|
48
|
+
- type: llm_judge
|
|
49
|
+
criteria: "Workflow is redesigned for parallelism — lint, typecheck, and unit tests run in parallel (not sequential), e2e tests use sharding across multiple runners, and the critical path is identified and optimized to under 10 minutes"
|
|
50
|
+
weight: 0.35
|
|
51
|
+
description: "Parallel workflow redesign"
|
|
52
|
+
- type: llm_judge
|
|
53
|
+
criteria: "Test sharding is correctly implemented — unit tests split across N parallel workers using matrix strategy with test file distribution, integration tests use proper service containers, and e2e tests are sharded with Cypress's parallelization"
|
|
54
|
+
weight: 0.35
|
|
55
|
+
description: "Correct test sharding"
|
|
56
|
+
- type: llm_judge
|
|
57
|
+
criteria: "Before/after comparison is clear — shows the timeline diagram (text-based) of sequential vs parallel execution, quantifies each optimization's contribution, and the cost analysis compares standard vs larger runners at the new parallel configuration"
|
|
58
|
+
weight: 0.30
|
|
59
|
+
description: "Clear before/after comparison"
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: cicd-data-architecture
|
|
3
|
+
level: 4
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Design CI/CD data architecture — build analytics pipelines for workflow metrics, cost tracking, and predictive insights"
|
|
7
|
+
tags: [github, actions, data-architecture, analytics, metrics, DORA, expert]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're the Head of Data Engineering building the data infrastructure
|
|
13
|
+
for CI/CD analytics. The platform team needs data to track DORA
|
|
14
|
+
metrics, optimize costs, and predict failures. Currently there's no
|
|
15
|
+
centralized CI/CD data — metrics are scattered across GitHub API
|
|
16
|
+
responses, runner logs, and deployment systems.
|
|
17
|
+
|
|
18
|
+
Data sources:
|
|
19
|
+
- GitHub Actions API: Workflow runs, job details, step timings, costs
|
|
20
|
+
- GitHub webhooks: Real-time workflow events (50,000+ events/day)
|
|
21
|
+
- Self-hosted runner metrics: CPU, memory, queue depth (Prometheus)
|
|
22
|
+
- Cloud provider APIs: Deployment status, resource costs
|
|
23
|
+
- Incident management: PagerDuty alerts, incident timelines
|
|
24
|
+
- Git data: Commit frequency, PR merge times, branch patterns
|
|
25
|
+
|
|
26
|
+
Analytics requirements:
|
|
27
|
+
1. DORA metrics dashboard (deployment frequency, lead time, MTTR,
|
|
28
|
+
change failure rate) — real-time, per team, trending
|
|
29
|
+
2. Cost analytics (per-team, per-repo, per-workflow cost allocation
|
|
30
|
+
with budget alerts)
|
|
31
|
+
3. Failure prediction (ML model to predict which PRs will have CI
|
|
32
|
+
failures based on files changed, time of day, author history)
|
|
33
|
+
4. Performance trending (workflow duration trends, bottleneck
|
|
34
|
+
detection, runner utilization optimization)
|
|
35
|
+
5. Compliance reporting (automated evidence for SOC 2 audits)
|
|
36
|
+
|
|
37
|
+
Constraints:
|
|
38
|
+
- Budget: $100K/year for data infrastructure
|
|
39
|
+
- Must handle 50K+ events/day without data loss
|
|
40
|
+
- DORA dashboard must update within 5 minutes of events
|
|
41
|
+
- Cost data must be accurate to within $1 per team per month
|
|
42
|
+
- 2-year data retention for compliance
|
|
43
|
+
|
|
44
|
+
Task: Design the CI/CD data architecture. Write: the data model
|
|
45
|
+
(entities, relationships, derived metrics), the ingestion pipeline
|
|
46
|
+
(webhook processing, API polling, stream processing), the storage
|
|
47
|
+
strategy (time-series for metrics, OLAP for analytics, feature store
|
|
48
|
+
for ML), the DORA metrics computation logic, and the ML pipeline for
|
|
49
|
+
failure prediction. Include the cost breakdown for the $100K budget.
|
|
50
|
+
|
|
51
|
+
assertions:
|
|
52
|
+
- type: llm_judge
|
|
53
|
+
criteria: "DORA metrics computation is correct — deployment frequency counts production deploys per day, lead time measures commit-to-deploy, MTTR measures incident-open-to-resolved, change failure rate is failed-deploys/total-deploys, and all are computed per-team with correct time windows"
|
|
54
|
+
weight: 0.35
|
|
55
|
+
description: "Correct DORA metrics computation"
|
|
56
|
+
- type: llm_judge
|
|
57
|
+
criteria: "Architecture fits the $100K budget — uses cost-effective technologies (not enterprise tools), handles 50K+ events/day reliably, and the cost breakdown accounts for compute, storage, and data transfer across all components"
|
|
58
|
+
weight: 0.35
|
|
59
|
+
description: "Budget-fitting architecture"
|
|
60
|
+
- type: llm_judge
|
|
61
|
+
criteria: "ML failure prediction is practical — identifies useful features (files changed, test history, time of day, PR size, author failure rate), proposes a reasonable model (not over-engineered), and the feature store design supports both batch training and real-time inference"
|
|
62
|
+
weight: 0.30
|
|
63
|
+
description: "Practical ML failure prediction"
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: cicd-economics-roi
|
|
3
|
+
level: 4
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Analyze CI/CD economics — calculate the true cost, model ROI, and present the business case for CI/CD investment"
|
|
7
|
+
tags: [github, actions, economics, ROI, cost-analysis, business-case, expert]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're the Director of Engineering presenting a business case to the
|
|
13
|
+
CFO for a $2M CI/CD platform investment. The CFO asks: "We spend
|
|
14
|
+
$1.2M/year on GitHub Actions already. Why invest more?"
|
|
15
|
+
|
|
16
|
+
Current CI/CD costs:
|
|
17
|
+
- GitHub Actions: $1.2M/year (minutes + storage)
|
|
18
|
+
- Self-hosted runners: $300K/year (infrastructure + maintenance)
|
|
19
|
+
- Engineering time on CI/CD: 3 FTEs dedicated ($600K/year)
|
|
20
|
+
- Time lost to CI failures: estimated 2 hours/week per developer
|
|
21
|
+
- Total: ~$2.1M/year visible costs
|
|
22
|
+
|
|
23
|
+
Hidden costs (to calculate):
|
|
24
|
+
- Developer waiting time: 800 engineers × avg 20 min/day waiting
|
|
25
|
+
for CI = ? hours/year at $85/hour fully loaded
|
|
26
|
+
- Failed deployments: 12/quarter, avg 4 hours to fix, 3 engineers
|
|
27
|
+
- Rollbacks: 8/quarter, avg 2 hours, 2 engineers
|
|
28
|
+
- Context switching: developers context-switch while waiting for
|
|
29
|
+
30-minute CI runs
|
|
30
|
+
|
|
31
|
+
Proposed investment ($2M over 2 years):
|
|
32
|
+
1. CI/CD platform team: 5 FTEs ($1M/year)
|
|
33
|
+
2. Self-hosted runner infrastructure upgrade: $400K
|
|
34
|
+
3. Tooling and automation: $200K
|
|
35
|
+
4. Training program: $100K
|
|
36
|
+
|
|
37
|
+
Expected outcomes:
|
|
38
|
+
- Reduce average CI time from 25 min to 8 min
|
|
39
|
+
- Reduce deployment failures from 12/quarter to 2/quarter
|
|
40
|
+
- Eliminate 80% of developer CI wait time
|
|
41
|
+
- Standardize deployment across all 200 repos
|
|
42
|
+
|
|
43
|
+
Task: Build the complete economic model. Write: the true cost of
|
|
44
|
+
the current state (including all hidden costs), the investment
|
|
45
|
+
analysis for the proposed $2M (expected returns, payback period,
|
|
46
|
+
NPV), the risk-adjusted projection (what if improvements are only
|
|
47
|
+
50% of target), the DORA metrics improvement forecast (deployment
|
|
48
|
+
frequency, lead time, MTTR, change failure rate), and the 2-page
|
|
49
|
+
executive summary for the CFO. Include a sensitivity analysis.
|
|
50
|
+
|
|
51
|
+
assertions:
|
|
52
|
+
- type: llm_judge
|
|
53
|
+
criteria: "Hidden costs are calculated — developer wait time is quantified (800 engineers × 20 min/day × 250 days × $85/hour), deployment failure costs are summed, and the total true cost is significantly higher than the visible $2.1M"
|
|
54
|
+
weight: 0.35
|
|
55
|
+
description: "Calculated hidden costs"
|
|
56
|
+
- type: llm_judge
|
|
57
|
+
criteria: "Investment analysis is rigorous — includes NPV with appropriate discount rate, payback period calculation, sensitivity analysis (best/expected/worst case), and the risk-adjusted projection shows the investment is worthwhile even at 50% of expected improvements"
|
|
58
|
+
weight: 0.35
|
|
59
|
+
description: "Rigorous investment analysis"
|
|
60
|
+
- type: llm_judge
|
|
61
|
+
criteria: "Executive summary is CFO-ready — leads with business impact (not technical details), presents the 'do nothing' cost, shows clear ROI, includes DORA metrics improvement as industry-standard benchmarks, and fits in 2 pages"
|
|
62
|
+
weight: 0.30
|
|
63
|
+
description: "CFO-ready executive summary"
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: cicd-executive-communication
|
|
3
|
+
level: 4
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Executive communication about CI/CD — present platform health, investment needs, and strategic roadmap to C-suite audiences"
|
|
7
|
+
tags: [github, actions, executive, communication, strategy, DORA-metrics, expert]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're the CTO preparing 3 executive communications about CI/CD
|
|
13
|
+
platform strategy. Each audience has different concerns.
|
|
14
|
+
|
|
15
|
+
Communication 1 — Board of Directors quarterly update:
|
|
16
|
+
The board wants to understand "engineering velocity" as a competitive
|
|
17
|
+
metric. Your DORA metrics data:
|
|
18
|
+
- Deployment frequency: 45/day (up from 8/day last year)
|
|
19
|
+
- Lead time for changes: 2.3 hours (down from 5 days)
|
|
20
|
+
- Mean time to recovery: 18 minutes (down from 4 hours)
|
|
21
|
+
- Change failure rate: 2.1% (down from 12%)
|
|
22
|
+
All metrics are now in the "Elite" DORA category. The board asks:
|
|
23
|
+
"How does this compare to competitors and how does it impact revenue?"
|
|
24
|
+
|
|
25
|
+
Communication 2 — CFO budget review:
|
|
26
|
+
CI/CD costs increased 300% year-over-year ($400K → $1.6M) due to
|
|
27
|
+
growth from 100 to 500 engineers. The CFO wants to understand: is
|
|
28
|
+
this scaling linearly (bad) or sublinearly (good)? What's the cost
|
|
29
|
+
per deployment? How does the investment in the platform team ($3M)
|
|
30
|
+
pay back? And should the company consider moving from GitHub Actions
|
|
31
|
+
to a cheaper alternative?
|
|
32
|
+
|
|
33
|
+
Communication 3 — All-engineering town hall:
|
|
34
|
+
You're presenting the CI/CD platform roadmap for the next year. The
|
|
35
|
+
audience includes engineers frustrated with current CI speed ("builds
|
|
36
|
+
take 30 minutes"), teams that want more deployment autonomy ("why
|
|
37
|
+
do we need the platform team's approval to change our pipeline"),
|
|
38
|
+
and security engineers who want stricter controls.
|
|
39
|
+
|
|
40
|
+
Task: Write all 3 communications. For each: adapt the message to
|
|
41
|
+
the audience, use data effectively, include specific asks or next
|
|
42
|
+
steps, and anticipate tough questions. The board update should be
|
|
43
|
+
1 page, the CFO review should include financial models, and the
|
|
44
|
+
town hall should be an engaging presentation outline.
|
|
45
|
+
|
|
46
|
+
assertions:
|
|
47
|
+
- type: llm_judge
|
|
48
|
+
criteria: "Board communication connects DORA metrics to business value — translates elite DORA metrics into competitive advantage (faster time-to-market, lower outage costs, higher engineering productivity), with industry benchmarks for context"
|
|
49
|
+
weight: 0.35
|
|
50
|
+
description: "Business-value board communication"
|
|
51
|
+
- type: llm_judge
|
|
52
|
+
criteria: "CFO review has solid financial analysis — shows cost-per-deployment trend (should be declining despite total cost increase), demonstrates sublinear cost scaling per engineer, and makes a data-driven case against switching platforms (migration cost vs savings)"
|
|
53
|
+
weight: 0.35
|
|
54
|
+
description: "Financial CFO review"
|
|
55
|
+
- type: llm_judge
|
|
56
|
+
criteria: "Town hall addresses all audience segments — acknowledges the 30-minute build frustration with a specific improvement plan, explains the balance between autonomy and governance, and gives security engineers confidence in the compliance roadmap"
|
|
57
|
+
weight: 0.30
|
|
58
|
+
description: "Multi-audience town hall"
|