11 KiB
Step 2: Pipeline Architecture Decisions
MANDATORY EXECUTION RULES (READ FIRST):
- 🛑 NEVER generate content without user input
- 📖 CRITICAL: ALWAYS read the complete step file before taking any action - partial understanding leads to incomplete decisions
- 🔄 CRITICAL: When loading next step with 'C', ensure the entire file is read and understood before proceeding
- ✅ ALWAYS treat this as collaborative discovery between pipeline architecture peers
- 📋 YOU ARE A FACILITATOR, not a content generator
- 💬 FOCUS on making critical pipeline architecture decisions collaboratively
- 🌐 ALWAYS search the web to verify current technology versions
- ⚠️ ABSOLUTELY NO TIME ESTIMATES - AI development speed has fundamentally changed
- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config
{communication_language}
EXECUTION PROTOCOLS:
- 🎯 Show your analysis before taking any action
- 🌐 Search the web to verify technology versions and options
- ⚠️ Present A/P/C menu after each major decision category
- 💾 ONLY save when user chooses C (Continue)
- 📖 Update frontmatter
stepsCompleted: [1, 2]before loading next step - 🚫 FORBIDDEN to load next step until C is selected
COLLABORATION MENUS (A/P/C):
This step will generate content and present choices for each decision category:
- A (Advanced Elicitation): Use discovery protocols to explore innovative approaches to specific decisions
- P (Party Mode): Bring multiple perspectives to evaluate decision trade-offs
- C (Continue): Save the current decisions and proceed to next decision category
PROTOCOL INTEGRATION:
- When 'A' selected: Invoke the
bmad-advanced-elicitationskill - When 'P' selected: Invoke the
bmad-party-modeskill - PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed
- User accepts/rejects protocol changes before proceeding
CONTEXT BOUNDARIES:
- Infrastructure context from step 1 is available (IaC tool, container strategy, env topology)
- Architecture document decisions are available
- Existing CI/CD configuration scan results are available
- Focus on pipeline platform and branching strategy decisions
YOUR TASK:
Facilitate collaborative pipeline architecture decision making, leveraging existing infrastructure context and architecture decisions, focusing on the foundational choices that shape all subsequent pipeline stages.
DECISION MAKING SEQUENCE:
1. Load Context & Check Existing Preferences
Review Infrastructure Context from Step 1: "Based on our initialization in step 1, let's build on these foundations:
Infrastructure Context:
- IaC Tool: {{iac_tool_from_step_1}}
- Container Strategy: {{container_strategy_from_step_1}}
- Environment Topology: {{env_topology_from_step_1}}
Existing CI/CD Configuration: {{existing_cicd_config_from_step_1}}
Architecture Decisions (relevant): {{relevant_architecture_decisions}}"
Identify What's Already Decided: Based on infrastructure context, architecture document, and existing CI/CD config, identify what decisions are already made versus what needs collaborative decision making.
2. Decision Categories
Category 1: CI/CD Platform Selection
Options to present with trade-offs:
- GitHub Actions - Native GitHub integration, YAML-based, marketplace ecosystem
- GitLab CI - Built into GitLab, YAML-based, comprehensive DevSecOps
- Jenkins - Self-hosted, Groovy-based, maximum flexibility and plugin ecosystem
- Azure DevOps - Microsoft ecosystem, YAML pipelines, Azure-native
- CircleCI - Cloud-native, YAML-based, strong Docker support
- Buildkite - Hybrid model (cloud orchestration, self-hosted agents), scalable
Present the Decision: Based on user skill level and project context:
Expert Mode: "CI/CD Platform Selection:
Options: {{concise_option_list_with_tradeoffs}}
Given your {{existing_vcs_platform}} and {{infrastructure_choices}}, what's your preference?"
Intermediate Mode: "Next decision: CI/CD Platform
We need to choose where your pipelines will run.
Common options: {{option_list_with_brief_explanations}}
For your project, I'd lean toward {{recommendation}} because {{reason}}. What are your thoughts?"
Beginner Mode: "Let's talk about where your pipelines will run.
{{Educational_Context_About_CI_CD_Platforms}}
Think of it like {{real_world_analogy}} - an automated assembly line for your code.
Your main options: {{friendly_options_with_pros_cons}}
My suggestion: {{recommendation}} This is good for you because {{beginner_friendly_reason}}.
What feels right to you?"
Verify Technology Versions:
Search the web: "{{platform}} latest version features"
Search the web: "{{platform}} pricing current"
Category 2: Pipeline-as-Code Approach
- YAML declarative - Structured, readable, widely supported (GitHub Actions, GitLab CI, Azure DevOps)
- Groovy scripted - Programmable, flexible (Jenkins scripted pipeline)
- Groovy declarative - Structured Groovy (Jenkins declarative pipeline)
- HCL - Terraform-style (Waypoint)
- Starlark - Python-like (Buildkite, some tools)
Note: This decision may be determined by the CI/CD platform choice.
Category 3: Branch Strategy and Pipeline Implications
- Trunk-Based Development - Short-lived branches, continuous integration to main, feature flags for incomplete work. Pipeline: single main pipeline with feature-flag-gated deployments
- GitHub Flow - Feature branches off main, PR-based merging. Pipeline: PR validation pipeline + main deployment pipeline
- GitFlow - Feature/develop/release/hotfix branches. Pipeline: Multiple pipelines per branch type, release branch promotion
Present how each strategy impacts pipeline complexity and deployment frequency.
Category 4: Monorepo vs Polyrepo Pipeline Considerations
- Monorepo - Path-based triggers, selective builds, shared pipeline definitions, dependency-aware ordering
- Polyrepo - Independent pipelines per repo, cross-repo orchestration challenges, simpler per-repo config
- Hybrid - Core services in monorepo, peripheral services in separate repos
Note: This may already be determined by the project structure.
Category 5: Runner/Agent Infrastructure
- Managed/Cloud runners - Zero maintenance, pay-per-minute, limited customization
- Self-hosted runners - Full control, security isolation, cost optimization at scale
- Hybrid - Managed for standard builds, self-hosted for specialized/security-sensitive workloads
Security considerations:
- Network access to deployment targets
- Secrets management in runner environment
- Runner isolation between projects/environments
3. Facilitate Each Decision
For each category, follow the collaborative decision pattern:
Get User Input: "What's your preference? (or 'explain more' for details)"
Handle User Response:
- If user wants more info: Provide deeper explanation
- If user has preference: Discuss implications and record decision
- If user wants alternatives: Explore other options
Record the Decision:
- Category: {{category}}
- Decision: {{user_choice}}
- Version: {{verified_version_if_applicable}}
- Rationale: {{user_reasoning_or_default}}
- Affects: {{downstream_pipeline_decisions}}
4. Generate Pipeline Architecture Content
After facilitating all decision categories, prepare the content to append:
Content Structure:
## Pipeline Architecture
### CI/CD Platform
**Platform:** {{platform_choice}}
**Version:** {{verified_version}}
**Rationale:** {{rationale}}
### Pipeline-as-Code Approach
**Approach:** {{approach_choice}}
**Configuration Format:** {{format}}
**Rationale:** {{rationale}}
### Branch Strategy
**Strategy:** {{branch_strategy}}
**Pipeline Implications:**
{{how_strategy_maps_to_pipeline_triggers_and_flows}}
### Repository Strategy
**Approach:** {{monorepo_polyrepo_hybrid}}
**Pipeline Implications:**
{{trigger_strategy_selective_builds_etc}}
### Runner Infrastructure
**Runner Type:** {{managed_selfhosted_hybrid}}
**Security Model:** {{isolation_and_access_model}}
**Rationale:** {{rationale}}
5. Present Content and Menu
Show the generated pipeline architecture content and present choices:
"I've documented our pipeline architecture decisions.
Here's what I'll add to the document:
[Show the complete markdown content from step 4]
What would you like to do? [A] Advanced Elicitation - Explore innovative approaches to any specific decisions [P] Party Mode - Review decisions from multiple perspectives [C] Continue - Save these decisions and move to pipeline stage design"
6. Handle Menu Selection
If 'A' (Advanced Elicitation):
- Invoke the
bmad-advanced-elicitationskill with specific decision categories - Process enhanced insights about particular decisions
- Ask user: "Accept these enhancements to the pipeline architecture? (y/n)"
- If yes: Update content, then return to A/P/C menu
- If no: Keep original content, then return to A/P/C menu
If 'P' (Party Mode):
- Invoke the
bmad-party-modeskill with pipeline architecture context - Process collaborative insights about decision trade-offs
- Ask user: "Accept these changes to the pipeline architecture? (y/n)"
- If yes: Update content, then return to A/P/C menu
- If no: Keep original content, then return to A/P/C menu
If 'C' (Continue):
- Append the final content to
{planning_artifacts}/pipeline.md - Update frontmatter:
stepsCompleted: [1, 2] - Load
./step-03-pipeline-stages.md
APPEND TO DOCUMENT:
When user selects 'C', append the content directly to the document using the structure from step 4.
SUCCESS METRICS:
✅ All pipeline architecture decisions made collaboratively ✅ Technology versions verified using web search ✅ Decision rationale clearly documented ✅ Infrastructure context leveraged for informed decisions ✅ Existing CI/CD configuration considered in recommendations ✅ User provided appropriate level of explanation for skill level ✅ A/P/C menu presented and handled correctly for each category ✅ Content properly appended to document when C selected
FAILURE MODES:
❌ Making recommendations instead of facilitating decisions ❌ Not verifying technology versions with web search ❌ Ignoring existing infrastructure context from step 1 ❌ Not adapting explanations to user skill level ❌ Forgetting to consider existing CI/CD configuration ❌ Not presenting A/P/C menu after content generation
❌ CRITICAL: Reading only partial step file - leads to incomplete understanding and poor decisions ❌ CRITICAL: Proceeding with 'C' without fully reading and understanding the next step file ❌ CRITICAL: Making decisions without complete understanding of step requirements and protocols
NEXT STEP:
After user selects 'C' and content is saved to document, load ./step-03-pipeline-stages.md to design the pipeline stages.
Remember: Do NOT proceed to step-03 until user explicitly selects 'C' from the A/P/C menu and content is saved!