Skip to content

Comments

Add ACR naming guidance for hyphenated environment names#903

Merged
kvenkatrajan merged 6 commits intomainfrom
copilot/fix-invalid-acr-names
Feb 24, 2026
Merged

Add ACR naming guidance for hyphenated environment names#903
kvenkatrajan merged 6 commits intomainfrom
copilot/fix-invalid-acr-names

Conversation

Copy link
Contributor

Copilot AI commented Feb 12, 2026

Add ACR naming guidance for hyphenated environment names

Problem

When environment names contain hyphens (e.g., nodejs-demoapp), the generated ACR names fail because Azure Container Registry only allows alphanumeric characters.

Changes

Updated azure-prepare skill documentation with minimal ACR naming guidance:

  • bicep/patterns.md: Added ACR naming pattern to existing naming convention section
  • container-apps/bicep.md: Added brief naming guidance note (ACR not required since containers can use public registries)

Pattern

// Before (fails with hyphenated environments)
var acrName = 'cr${environmentName}${resourceSuffix}'

// After
var acrName = replace('cr${environmentName}${resourceToken}', '-', '')

The pattern uses replace() to strip hyphens from environment names, ensuring ACR names are always alphanumeric.

Original prompt

This section details on the original issue you should resolve

<issue_title>Container App IAC rules produce invalid Container Registry names when environment name contains hyphens</issue_title>
<issue_description>## Description

When following the Container App IAC rules from the deploy_iac_rules_get tool (AZD + Bicep + containerapp), the generated Bicep naming pattern for Azure Container Registry can produce invalid resource names.

Problem

The standard naming convention from the IAC rules is:

var resourceSuffix = take(uniqueString(subscription().id, environmentName, location), 6)
name: 'cr${environmentName}${resourceSuffix}'

If environmentName contains hyphens (e.g., nodejs-demoapp), the resulting ACR name will be something like crnodejs-demoappekwy4z, which fails with:

ResourceNameInvalid: Invalid resource name: 'crnodejs-demoappekwy4z'.
Resource names may contain alpha numeric characters only and must be between 5 and 50 characters.

Expected Behavior

The IAC rules or generated Bicep should account for ACR's alphanumeric-only naming constraint by stripping hyphens from the name, e.g.:

var acrName = replace('cr${environmentName}${resourceSuffix}', '-', '')

Steps to Reproduce

  1. Create an AZD project with a hyphenated environment name (e.g., nodejs-demoapp)
  2. Use deploy_iac_rules_get with resource-types: containerapp to get IAC rules
  3. Generate Bicep following the naming convention {prefix}-{name}-{uniqueHash}
  4. Run azd provision — fails on Container Registry resource

Suggested Fix

The Container App IAC rules should explicitly note that Container Registry names must be alphanumeric only and provide the replace() pattern to strip invalid characters.
</issue_description>

<agent_instructions>Examine the existing skills in this repo and update them to avoid this problem in the future.</agent_instructions>

Comments on the Issue (you are @copilot in this section)


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI and others added 3 commits February 12, 2026 20:51
Co-authored-by: tmeschter <10506730+tmeschter@users.noreply.github.com>
…tterns

Co-authored-by: tmeschter <10506730+tmeschter@users.noreply.github.com>
Co-authored-by: tmeschter <10506730+tmeschter@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix invalid Container Registry names generation Fix ACR naming patterns for hyphenated environment names Feb 12, 2026
Copilot AI requested a review from tmeschter February 12, 2026 20:57
Co-authored-by: tmeschter <10506730+tmeschter@users.noreply.github.com>
Copilot AI changed the title Fix ACR naming patterns for hyphenated environment names Add ACR naming guidance for hyphenated environment names Feb 12, 2026
Copilot AI requested a review from tmeschter February 12, 2026 21:24
@tmeschter
Copy link
Member

@copilot Remove the changes to package-lock.json from the PR.

Co-authored-by: tmeschter <10506730+tmeschter@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Feb 23, 2026

@copilot Remove the changes to package-lock.json from the PR.

Removed package-lock.json changes in commit a5ce487. The PR now only contains the ACR naming guidance changes.

@tmeschter tmeschter marked this pull request as ready for review February 23, 2026 18:24
Copilot AI review requested due to automatic review settings February 23, 2026 18:24
@github-actions
Copy link
Contributor

🔍 Token Analysis Report

@github-copilot-for-azure/scripts@1.0.0 tokens
node --import tsx src/tokens/cli.ts compare --base origin/main --head HEAD --markdown

📊 Token Change Report

Comparing origin/mainHEAD

Summary

Metric Value
📈 Total Change +88 tokens (+8%)
Before 1,134 tokens
After 1,222 tokens
Files Changed 2

Changed Files

File Before After Change
plugin/skills/azure-prepare/references/services/container-apps/bicep.md 458 513 +55 (+12%)
plugin/skills/azure-prepare/references/recipes/bicep/patterns.md 676 709 +33 (+5%)

@github-copilot-for-azure/scripts@1.0.0 tokens
node --import tsx src/tokens/cli.ts check --markdown

📊 Token Limit Check Report

Checked: 388 files
Exceeded: 94 files

⚠️ Files Exceeding Token Limits

File Tokens Limit Over By
.github/skills/file-test-bug/SKILL.md 613 500 +113
.github/skills/sensei/README.md 3530 1000 +2530
.github/skills/sensei/SKILL.md 2216 500 +1716
.github/skills/sensei/references/EXAMPLES.md 3328 1000 +2328
.github/skills/sensei/references/LOOP.md 3717 1000 +2717
.github/skills/sensei/references/SCORING.md 2521 1000 +1521
.github/skills/sensei/references/TOKEN-INTEGRATION.md 1094 1000 +94
.github/skills/skill-authoring/SKILL.md 732 500 +232
plugin/skills/appinsights-instrumentation/SKILL.md 952 500 +452
plugin/skills/azure-ai/SKILL.md 835 500 +335
plugin/skills/azure-aigateway/SKILL.md 6329 500 +5829
plugin/skills/azure-compliance/SKILL.md 1238 500 +738
plugin/skills/azure-compliance/references/azqr-recommendations.md 1447 1000 +447
plugin/skills/azure-compliance/references/azqr-remediation-patterns.md 1987 1000 +987
plugin/skills/azure-compliance/references/azure-keyvault-expiration-audit.md 1286 1000 +286
plugin/skills/azure-compliance/references/azure-quick-review.md 1268 1000 +268
plugin/skills/azure-cost-optimization/SKILL.md 3456 500 +2956
plugin/skills/azure-deploy/SKILL.md 961 500 +461
plugin/skills/azure-deploy/references/pre-deploy-checklist.md 1004 1000 +4
plugin/skills/azure-deploy/references/recipes/azd/errors.md 1136 1000 +136
plugin/skills/azure-deploy/references/troubleshooting.md 1527 1000 +527
plugin/skills/azure-diagnostics/SKILL.md 876 500 +376
plugin/skills/azure-kusto/SKILL.md 2167 500 +1667
plugin/skills/azure-messaging/SKILL.md 857 500 +357
plugin/skills/azure-messaging/references/service-troubleshooting.md 1044 1000 +44
plugin/skills/azure-observability/SKILL.md 939 500 +439
plugin/skills/azure-postgres/SKILL.md 1519 500 +1019
plugin/skills/azure-postgres/references/entra-rbac-overview.md 1823 1000 +823
plugin/skills/azure-postgres/references/group-sync.md 1844 1000 +844
plugin/skills/azure-postgres/references/permission-templates.md 1647 1000 +647
plugin/skills/azure-postgres/references/troubleshooting.md 1959 1000 +959
plugin/skills/azure-prepare/SKILL.md 1545 500 +1045
plugin/skills/azure-prepare/references/aspire.md 2633 1000 +1633
plugin/skills/azure-prepare/references/azure-context.md 1019 1000 +19
plugin/skills/azure-prepare/references/recipes/azd/aspire.md 1289 1000 +289
plugin/skills/azure-prepare/references/recipes/azd/azure-yaml.md 1709 1000 +709
plugin/skills/azure-prepare/references/recipes/azd/terraform.md 2924 1000 +1924
plugin/skills/azure-prepare/references/research.md 1600 1000 +600
plugin/skills/azure-prepare/references/runtimes/nodejs.md 1508 1000 +508
plugin/skills/azure-prepare/references/security.md 1784 1000 +784
plugin/skills/azure-prepare/references/services/functions/bicep.md 1969 1000 +969
plugin/skills/azure-prepare/references/services/functions/templates/SPEC-composable-templates.md 6187 1000 +5187
plugin/skills/azure-prepare/references/services/functions/templates/recipes/README.md 1354 1000 +354
plugin/skills/azure-prepare/references/services/functions/templates/recipes/common/nodejs-entry-point.md 1034 1000 +34
plugin/skills/azure-prepare/references/services/functions/templates/recipes/common/uami-bindings.md 1223 1000 +223
plugin/skills/azure-prepare/references/services/functions/templates/recipes/composition.md 4564 1000 +3564
plugin/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/README.md 1467 1000 +467
plugin/skills/azure-prepare/references/services/functions/templates/recipes/durable/README.md 1149 1000 +149
plugin/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/README.md 1403 1000 +403
plugin/skills/azure-prepare/references/services/functions/templates/recipes/mcp/source/java.md 1312 1000 +312
plugin/skills/azure-prepare/references/services/functions/templates/recipes/mcp/source/python.md 1207 1000 +207
plugin/skills/azure-prepare/references/services/functions/templates/recipes/mcp/source/typescript.md 1138 1000 +138
plugin/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/README.md 1171 1000 +171
plugin/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/source/dotnet.md 1256 1000 +256
plugin/skills/azure-prepare/references/services/functions/templates/recipes/sql/source/java.md 1009 1000 +9
plugin/skills/azure-prepare/references/services/functions/templates/recipes/sql/source/python.md 1080 1000 +80
plugin/skills/azure-prepare/references/services/functions/terraform.md 2358 1000 +1358
plugin/skills/azure-prepare/references/services/service-bus/patterns.md 1010 1000 +10
plugin/skills/azure-resource-lookup/SKILL.md 1379 500 +879
plugin/skills/azure-resource-lookup/references/azure-resource-graph.md 1307 1000 +307
plugin/skills/azure-resource-visualizer/SKILL.md 2091 500 +1591
plugin/skills/azure-storage/SKILL.md 1092 500 +592
plugin/skills/azure-storage/references/sdk-usage.md 1096 1000 +96
plugin/skills/azure-validate/SKILL.md 734 500 +234
plugin/skills/azure-validate/references/recipes/azd/README.md 1147 1000 +147
plugin/skills/entra-app-registration/SKILL.md 2055 500 +1555
plugin/skills/entra-app-registration/references/api-permissions.md 2545 1000 +1545
plugin/skills/entra-app-registration/references/cli-commands.md 2211 1000 +1211
plugin/skills/entra-app-registration/references/console-app-example.md 2752 1000 +1752
plugin/skills/entra-app-registration/references/first-app-registration.md 1846 1000 +846
plugin/skills/entra-app-registration/references/oauth-flows.md 2375 1000 +1375
plugin/skills/entra-app-registration/references/troubleshooting.md 1896 1000 +896
plugin/skills/microsoft-foundry/SKILL.md 1934 500 +1434
plugin/skills/microsoft-foundry/foundry-agent/create/create.md 3095 1000 +2095
plugin/skills/microsoft-foundry/foundry-agent/create/references/agentframework.md 1177 1000 +177
plugin/skills/microsoft-foundry/foundry-agent/deploy/deploy.md 3557 1000 +2557
plugin/skills/microsoft-foundry/foundry-agent/invoke/invoke.md 1273 1000 +273
plugin/skills/microsoft-foundry/foundry-agent/troubleshoot/troubleshoot.md 1299 1000 +299
plugin/skills/microsoft-foundry/models/deploy-model/SKILL.md 1627 500 +1127
plugin/skills/microsoft-foundry/models/deploy-model/capacity/SKILL.md 1725 500 +1225
plugin/skills/microsoft-foundry/models/deploy-model/customize/SKILL.md 2220 500 +1720
plugin/skills/microsoft-foundry/models/deploy-model/customize/references/customize-workflow.md 1859 1000 +859
plugin/skills/microsoft-foundry/models/deploy-model/preset/SKILL.md 1212 500 +712
plugin/skills/microsoft-foundry/models/deploy-model/preset/references/preset-workflow.md 4252 1000 +3252
plugin/skills/microsoft-foundry/models/deploy-model/preset/references/workflow.md 1315 1000 +315
plugin/skills/microsoft-foundry/project/create/create-foundry-project.md 1218 1000 +218
plugin/skills/microsoft-foundry/quota/references/ptu-guide.md 1473 1000 +473
plugin/skills/microsoft-foundry/quota/references/troubleshooting.md 1807 1000 +807
plugin/skills/microsoft-foundry/quota/references/workflows.md 1614 1000 +614
plugin/skills/microsoft-foundry/rbac/rbac.md 1752 1000 +752
plugin/skills/microsoft-foundry/references/sdk/foundry-sdk-py.md 1888 1000 +888
plugin/skills/microsoft-foundry/resource/create/create-foundry-resource.md 1489 1000 +489
plugin/skills/microsoft-foundry/resource/create/references/workflows.md 1637 1000 +637
.github/agents/SkillCreator.agent.md 1044 1000 +44

Consider moving content to references/ subdirectories.


Automated token analysis. See skill authoring guidelines for best practices.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR addresses an issue where Azure Container Registry (ACR) names fail validation when environment names contain hyphens. ACR only allows alphanumeric characters (5-50 chars), but the existing infrastructure-as-code patterns didn't account for this constraint when using hyphenated environment names like nodejs-demoapp.

Changes:

  • Added ACR naming guidance with replace() pattern to strip hyphens in two documentation files
  • Provides a minimal, focused solution to prevent ResourceNameInvalid errors during deployment

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
plugin/skills/azure-prepare/references/services/container-apps/bicep.md Added warning callout about ACR naming constraint with example pattern
plugin/skills/azure-prepare/references/recipes/bicep/patterns.md Added ACR naming example to the Naming Convention section showing the replace() pattern

@tmeschter
Copy link
Member

I ran through the scenario again and validated that the container registry definition in the bicep now uses replace('cr${environmentName}${resourceSuffix}', '-', '') to avoid hyphens.

@tmeschter tmeschter removed the blocked label Feb 24, 2026
@kvenkatrajan kvenkatrajan merged commit 26a9bf0 into main Feb 24, 2026
14 checks passed
@kvenkatrajan kvenkatrajan deleted the copilot/fix-invalid-acr-names branch February 24, 2026 19:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Container App IAC rules produce invalid Container Registry names when environment name contains hyphens

4 participants