{"id":45965610,"url":"https://github.com/thecloudexplorers/release-engine-pattern-template","last_synced_at":"2026-02-28T14:13:45.765Z","repository":{"id":320198718,"uuid":"1075550701","full_name":"thecloudexplorers/release-engine-pattern-template","owner":"thecloudexplorers","description":"This repository contains Azure DevOps YAML Pipelines Templates for Example Workloads","archived":false,"fork":false,"pushed_at":"2025-11-20T10:30:29.000Z","size":86,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-20T12:18:54.938Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Bicep","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thecloudexplorers.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-10-13T16:50:54.000Z","updated_at":"2025-11-10T09:27:04.000Z","dependencies_parsed_at":"2025-10-22T14:54:49.742Z","dependency_job_id":"296f778f-8b5a-4023-b065-f7a779ccaed6","html_url":"https://github.com/thecloudexplorers/release-engine-pattern-template","commit_stats":null,"previous_names":["thecloudexplorers/release-engine-pattern-template"],"tags_count":8,"template":true,"template_full_name":null,"purl":"pkg:github/thecloudexplorers/release-engine-pattern-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecloudexplorers%2Frelease-engine-pattern-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecloudexplorers%2Frelease-engine-pattern-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecloudexplorers%2Frelease-engine-pattern-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecloudexplorers%2Frelease-engine-pattern-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thecloudexplorers","download_url":"https://codeload.github.com/thecloudexplorers/release-engine-pattern-template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecloudexplorers%2Frelease-engine-pattern-template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29937017,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T13:49:17.081Z","status":"ssl_error","status_checked_at":"2026-02-28T13:48:50.396Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-28T14:13:45.227Z","updated_at":"2026-02-28T14:13:45.742Z","avatar_url":"https://github.com/thecloudexplorers.png","language":"Bicep","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Release Engine Workload Patterns (Template Repository)\n\n## 🏗️ Repository Overview\n\nThis repository serves as the **Abstraction Layer Template** in the Release Engine three-tier solution. It contains reusable workload patterns that define \"how\" infrastructure and applications are deployed through Infrastructure as Code (Bicep) templates and pipeline configurations.\n\n\u003e **🚨 Important**: This is a **template repository**. Organizations should clone this repository to create their own workload pattern collections.\n\n## Architecture Context\n\n```text\nConfiguration Layer (Simple) → Abstraction Layer (THIS REPO) → Core Layer (Pipelines)\n```\n\n### This Repository's Role\n- **Pattern Library**: Contains proven deployment patterns for common workload types\n- **Infrastructure as Code**: Azure Bicep templates with Azure Verified Modules integration\n- **Pipeline Orchestration**: Workload-specific pipeline configurations and dependency management\n- **Template Foundation**: Starting point for organizations to build their pattern collections\n\n## 📁 Current Patterns\n\n### Available Deployment Patterns\n\n| Pattern | Description | Complexity | Deployment Scope | Documentation |\n|---------|-------------|------------|------------------|---------------|\n| `resource_group_scope_pattern` | Simple single-resource deployments within a resource group | ⭐ Basic | Resource Group | [README](./patterns/resource_group_scope_pattern/README.md) |\n| `subscription_scope_pattern` | Subscription-level resource deployments | ⭐⭐ Intermediate | Subscription | [README](./patterns/subscription_scope_pattern/README.md) |\n| `multi_stage_pattern` | Complex multi-stage deployments with dependencies | ⭐⭐⭐ Advanced | Subscription | [README](./patterns/multi_stage_pattern/README.md) |\n\n### Pattern Structure\nEach pattern directory contains:\n```text\npatterns/{pattern_name}/\n├── workload.yml                    # Pipeline configuration and orchestration\n├── {pattern_name}.bicep           # Main infrastructure template\n├── {pattern_name}.prerequisite.bicep  # Prerequisites (if multi-stage)\n├── {pattern_name}.dependent.bicep     # Dependent resources (if multi-stage)\n└── README.md                      # Pattern documentation and usage guide\n```\n\n### 📖 Pattern Documentation\n- **[Comprehensive Patterns Overview](./docs/PATTERNS_OVERVIEW.md)** - Detailed comparison, selection guide, and technical architecture\n- **Individual Pattern READMEs** - Complete usage instructions, parameters, and examples for each pattern\n- **[AI Assistant Instructions](./AGENTS.md)** - Detailed guidance for AI agents working with patterns\n\n## 🚀 Quick Start (Using as Template)\n\n### Step 1: Clone This Template\n```bash\n# Clone this template repository\ngit clone https://github.com/thecloudexplorers/release-engine-example-workload-pattern.git\n\n# Rename for your organization\nmv release-engine-example-workload-pattern release-engine-myorg-workload-patterns\ncd release-engine-myorg-workload-patterns\n```\n\n### Step 2: Set Up Upstream Tracking\n```bash\n# Add upstream remote for future updates\ngit remote add upstream https://github.com/thecloudexplorers/release-engine-example-workload-pattern.git\n\n# Set new origin (your repository)\ngit remote set-url origin https://github.com/myorg/release-engine-myorg-workload-patterns.git\n\n# Verify configuration\ngit remote -v\n```\n\n### Step 3: Customize for Your Organization\n1. **Update Service Connections**: Modify service connection references in `workload.yml` files\n2. **Add Organization Patterns**: Create patterns specific to your organization's needs\n3. **Update Documentation**: Customize READMEs and pattern documentation\n4. **Test Patterns**: Validate patterns work with your Azure environment\n\n## 🔧 Creating New Patterns\n\n### Pattern Development Process\n\n1. **Create Pattern Directory**\n   ```bash\n   mkdir patterns/my_new_pattern\n   cd patterns/my_new_pattern\n   ```\n\n2. **Required Files**\n   - `workload.yml` - Pipeline configuration and deployment orchestration\n   - `{pattern_name}.bicep` - Infrastructure as Code definitions\n   - `README.md` - Pattern documentation and usage instructions\n\n3. **Follow Naming Conventions**\n   - Use descriptive names: `webapp_with_database`, `function_app_premium`\n   - Use underscores for separation\n   - Keep names concise but clear\n\n### Infrastructure as Code Guidelines\n\n#### Azure Bicep Best Practices\n```bicep\nmetadata resources = {\n  version: '0.1.0'\n  author: '\u003cYour Name\u003e'\n  company: '\u003cYour Organization\u003e'\n  description: '\u003cPattern Description\u003e'\n}\n\ntargetScope = 'subscription' // or 'resourceGroup'\n\n@allowed([\n  'westeurope'\n  'uksouth'\n  'eastus'\n])\n@description('Region in which resources should be deployed')\nparam resourceLocation string\n\nparam tags object = {}\n```\n\n#### Azure Verified Modules Priority\n- ✅ **Always check AVM first**: Use `br/public:avm/res/` registry\n- ✅ **Pin versions**: Always specify exact AVM versions\n- ⚠️ **Document exceptions**: If AVM unavailable, document why using direct resources\n\nExample AVM Usage:\n```bicep\nmodule storageAccount 'br/public:avm/res/storage/storage-account:0.27.1' = {\n  name: 'storageAccountDeployment'\n  params: {\n    name: storageAccountName\n    location: resourceLocation\n    skuName: storageAccountSku\n    tags: tags\n  }\n}\n```\n\n### Pipeline Configuration (`workload.yml`)\n\n#### Basic Pattern Template\n```yaml\nparameters:\n  - name: deploymentSettings\n    type: object\n\nvariables:\n  - name: serviceConnection\n    value: \u003cyour-org-service-connection\u003e\n\nstages:\n  - template: /pipelines/01-orchestrators/pattern.orchestrator.yml@release-engine-core\n    parameters:\n      patternSettings:\n        name: \u003cpattern_name\u003e\n        configurationFilePath: ${{ parameters.deploymentSettings.configurationFilePath }}\n        environments: ${{ parameters.deploymentSettings.environments }}\n        patternArtifactsPath: /patterns/\u003cpattern_name\u003e\n        stages:\n          - infrastructure:\n              iac:\n                name: \u003cdeployment_name\u003e\n                displayName: \u003chuman_readable_name\u003e\n                deploymentScope: \u003cSubscription|ResourceGroup\u003e\n                serviceConnection: $(serviceConnection)\n                iacMainFileName: \u003cbicep_file\u003e.bicep\n                iacParameterFileName: ${{ parameters.deploymentSettings.iacParameterFileName }}\n```\n\n#### Multi-Stage Pattern Example\nFor complex deployments with dependencies:\n```yaml\nstages:\n  # Prerequisites (no dependencies)\n  - infrastructure:\n      iac:\n        name: prerequisite_stage\n        displayName: Prerequisites\n        deploymentScope: Subscription\n        iacMainFileName: prerequisite.bicep\n        \n  # Dependent deployment (depends on prerequisites)\n  - infrastructure:\n      iac:\n        name: main_deployment\n        displayName: Main Infrastructure\n        deploymentScope: ResourceGroup\n        iacMainFileName: main.bicep\n        dependsOn: prerequisite_stage\n        lastInStage: true\n```\n\n## 📋 Pattern Categories\n\n### Platform Patterns\nInfrastructure foundations and shared services:\n- **Logging Infrastructure**: Centralized logging with Log Analytics\n- **Monitoring Infrastructure**: Azure Monitor and Application Insights\n- **Networking Hub**: Hub network with firewall and gateway\n- **Security Baseline**: Key Vault and security configurations\n\n### Application Patterns\nApplication-specific deployment patterns:\n- **Web App Basic**: Simple web app with app service plan\n- **Web App with Database**: Web app with SQL database integration\n- **Function App Premium**: Premium function app with dependencies\n- **Container App**: Containerized application deployment\n\n### Data Patterns\nData platform and analytics patterns:\n- **SQL Database**: SQL Database with backup and security\n- **Cosmos Database**: Cosmos DB with consistency configurations\n- **Synapse Workspace**: Analytics workspace and pools\n- **Data Factory**: ETL pipelines and data integration\n\n## 🔄 Template Maintenance\n\n### Keeping Up-to-Date with Upstream\n\n#### Regular Synchronization (Recommended: Monthly)\n```bash\n# Fetch upstream changes\ngit fetch upstream\n\n# Create integration branch\ngit checkout -b upstream-sync-$(date +%Y%m%d)\n\n# Merge upstream improvements\ngit merge upstream/main\n\n# Resolve conflicts (preserve your customizations)\n# Test changes thoroughly\n# Push and create PR to main\n```\n\n#### What to Sync\n- ✅ **New Patterns**: Additional patterns that benefit your organization\n- ✅ **Bug Fixes**: Fixes to existing patterns and pipeline configurations\n- ✅ **Security Updates**: Security improvements and best practices\n- ✅ **Documentation**: Improved examples and documentation\n\n#### What to Preserve\n- 🔒 **Service Connections**: Your organization-specific service connections\n- 🔒 **Custom Patterns**: Your organization-specific deployment patterns\n- 🔒 **Naming Conventions**: Your organization's naming standards\n- 🔒 **Customizations**: Any modifications for your environment\n\n### Contributing Back to Template\n\n#### When to Contribute\n- 🎯 **Universal Patterns**: Patterns that would benefit multiple organizations\n- 🐛 **Bug Fixes**: Fixes to existing patterns or configurations\n- 📚 **Documentation**: Improvements to pattern documentation\n- ⚡ **Enhancements**: Performance or security improvements\n\n#### Contribution Process\n1. **Fork** the upstream repository\n2. **Create** feature branch: `feature/new-pattern-name`\n3. **Develop** and test your improvements\n4. **Document** changes and provide examples\n5. **Submit** pull request with clear description\n\n## 🧪 Testing and Validation\n\n### Pattern Testing Strategy\n\n#### Local Validation\n```bash\n# Validate Bicep syntax\naz bicep build --file patterns/pattern_name/pattern.bicep\n\n# Validate pipeline YAML\naz pipelines validate --yaml-path patterns/pattern_name/workload.yml\n```\n\n#### Integration Testing\n1. **Deploy in Isolation**: Test patterns in isolated test environments\n2. **Validate Outputs**: Ensure all expected outputs are generated\n3. **Test Dependencies**: Verify multi-stage dependencies work correctly\n4. **Check Configuration**: Validate parameter files work with patterns\n\n### Quality Gates\n- ✅ **Bicep Validation**: All templates must compile without errors\n- ✅ **Parameter Validation**: All required parameters must be documented\n- ✅ **Output Documentation**: All outputs must be documented\n- ✅ **Pattern Documentation**: Each pattern must have comprehensive README\n\n## 📚 Documentation Standards\n\n### Pattern Documentation Template\nEach pattern should include a comprehensive README:\n\n```markdown\n# [Pattern Name] Pattern\n\n## Overview\nBrief description of what this pattern deploys.\n\n## Architecture\nDescription or diagram of deployed resources.\n\n## Prerequisites\n- Required permissions\n- Dependencies\n- Service principal requirements\n\n## Parameters\n| Parameter | Type | Description | Default | Required |\n|-----------|------|-------------|---------|----------|\n| param1 | string | Description | value | Yes |\n\n## Outputs\nList of outputs and their purposes.\n\n## Usage Example\nReference to configuration setup.\n\n## Dependencies\nAny pattern dependencies.\n```\n\n## 🔗 Integration with Release Engine\n\n### Repository Dependencies\nThis repository integrates with:\n\n- **[Release Engine Core](https://github.com/thecloudexplorers/release-engine-core)**: Provides pipeline orchestration framework\n- **Configuration Repositories**: Uses patterns defined here for actual deployments\n\n### Usage in Configuration Repositories\nConfiguration repositories reference patterns from this repository:\n\n```yaml\n# In configuration repository azure-pipelines.yml\nresources:\n  repositories:\n    - repository: workload\n      type: github\n      name: myorg/release-engine-myorg-workload-patterns\n      endpoint: myorg-github\n      ref: refs/heads/main\n\nextends:\n  template: /patterns/webapp_basic/workload.yml@workload\n```\n\n## 🎯 Best Practices\n\n### Development Guidelines\n- **Start Simple**: Begin with basic patterns, add complexity gradually\n- **Test Thoroughly**: Validate patterns in non-production environments first\n- **Document Everything**: Comprehensive documentation enables self-service adoption\n- **Follow Conventions**: Consistent naming and structure across patterns\n\n### Security Considerations\n- **Least Privilege**: Use minimal required permissions for deployments\n- **Managed Identities**: Prefer system-assigned managed identities\n- **Secure Defaults**: Configure resources with security-first defaults\n- **Compliance**: Ensure patterns meet organizational compliance requirements\n\n### Performance Optimization\n- **Parallel Deployment**: Structure patterns to enable parallel resource creation\n- **Resource Dependencies**: Minimize unnecessary dependencies between resources\n- **Deployment Speed**: Optimize for fast deployment times\n- **Error Recovery**: Design patterns for easy rollback and recovery\n\n## 📞 Support and Resources\n\n### Getting Help\n- **Documentation**: Comprehensive guides in [AGENTS.md](./AGENTS.md)\n- **Community**: GitHub Discussions for questions and ideas\n- **Issues**: Report bugs via GitHub Issues\n- **Contributions**: Follow contribution guidelines for improvements\n\n### Related Resources\n- **[Release Engine Core](https://github.com/thecloudexplorers/release-engine-core)**: Core pipeline framework\n- **[Configuration Template](https://github.com/thecloudexplorers/release-engine-config-template)**: Configuration repository template\n- **[Azure Bicep Documentation](https://docs.microsoft.com/en-us/azure/azure-resource-manager/bicep/)**\n- **[Azure Verified Modules](https://github.com/Azure/bicep-registry-modules)**\n\n---\n\n*This template repository enables organizations to create sophisticated workload deployment patterns while maintaining consistency and leveraging community improvements. Clone, customize, and extend to meet your organization's specific needs.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthecloudexplorers%2Frelease-engine-pattern-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthecloudexplorers%2Frelease-engine-pattern-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthecloudexplorers%2Frelease-engine-pattern-template/lists"}