From 93cc0fc8bd81d9b31bb0398253f5ea2961df3456 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kaare=20B=C3=B8rsting?= Date: Mon, 26 Jan 2026 16:11:23 +0100 Subject: [PATCH 1/3] chore: changed to be templatelike instead --- Infrastructure/main.bicep | 13 +++++++------ Setup/azure-pipelines-deploy-jobs.yml | 16 +++++++++++++--- Setup/azure-pipelines-external.yml | 4 ++-- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/Infrastructure/main.bicep b/Infrastructure/main.bicep index d35d428..4f544f9 100644 --- a/Infrastructure/main.bicep +++ b/Infrastructure/main.bicep @@ -4,8 +4,8 @@ param websitePassword string @secure() param sessionSecret string -@description('Custom name for the App Service. If not provided, defaults to wa-{solutionId}') -param appServiceName string = '' +@description('Resource naming template with {resourcetype} placeholder. Example: "d365ce-dev-erp-{resourcetype}" creates "d365ce-dev-erp-wa" for web app and "d365ce-dev-erp-asp" for app service plan. If not provided, defaults to "{resourcetype}-{solutionId}".') +param resourceNameTemplate string = '' param adoOrganizationUrl string = '' param adoProjectName string = '' @@ -31,11 +31,12 @@ param entraIdAllowedGroups string = '' param disablePasswordAuth bool = false var location = resourceGroup().location -var resolvedAppServiceName = empty(appServiceName) ? 'wa-${solutionId}' : appServiceName +var resolvedAppServicePlanName = empty(resourceNameTemplate) ? 'asp-${solutionId}' : replace(resourceNameTemplate, '{resourcetype}', 'asp') +var resolvedWebAppName = empty(resourceNameTemplate) ? 'wa-${solutionId}' : replace(resourceNameTemplate, '{resourcetype}', 'wa') @description('Create an App Service Plan') resource appServicePlan 'Microsoft.Web/serverfarms@2021-02-01' = { - name: 'asp-${solutionId}' + name: resolvedAppServicePlanName location: location sku: { name: 'F1' @@ -48,7 +49,7 @@ resource appServicePlan 'Microsoft.Web/serverfarms@2021-02-01' = { @description('Create a Web App') resource webApp 'Microsoft.Web/sites@2021-02-01' = { - name: resolvedAppServiceName + name: resolvedWebAppName location: location identity: { type: 'SystemAssigned' @@ -74,7 +75,7 @@ resource webApp 'Microsoft.Web/sites@2021-02-01' = { } { name: 'NEXTAUTH_URL' - value: 'https://${resolvedAppServiceName}.azurewebsites.net' + value: 'https://${resolvedWebAppName}.azurewebsites.net' } { name: 'WEBSITE_NODE_DEFAULT_VERSION' diff --git a/Setup/azure-pipelines-deploy-jobs.yml b/Setup/azure-pipelines-deploy-jobs.yml index 6781e8d..2b976c5 100644 --- a/Setup/azure-pipelines-deploy-jobs.yml +++ b/Setup/azure-pipelines-deploy-jobs.yml @@ -23,7 +23,7 @@ parameters: - name: websiteName type: string default: '' - - name: appServiceName + - name: resourceNameTemplate type: string default: '' - name: adoOrganizationUrl @@ -64,7 +64,17 @@ steps: inlineScript: | # Create resource group az group create --name ${{ parameters.azureResourceGroupName }} --location ${{ parameters.azureLocation }} - + + # Debug: Show resource naming configuration + $resourceNameTemplate = "${{ parameters.resourceNameTemplate }}" + if ($resourceNameTemplate) { + Write-Host "Using resource name template: $resourceNameTemplate" + Write-Host " App Service Plan: $($resourceNameTemplate -replace '\{resourcetype\}', 'asp')" + Write-Host " Web App: $($resourceNameTemplate -replace '\{resourcetype\}', 'wa')" + } else { + Write-Host "Using default naming: asp-${{ parameters.websiteName }}, wa-${{ parameters.websiteName }}" + } + # Deploy bicep template $jsonResult = az deployment group create ` --resource-group ${{ parameters.azureResourceGroupName }} ` @@ -72,7 +82,7 @@ steps: --parameters websitePassword="${{ parameters.websitePassword }}" ` --parameters sessionSecret="${{ parameters.websiteSessionSecret }}" ` --parameters solutionId="${{ parameters.websiteName }}" ` - --parameters appServiceName="${{ parameters.appServiceName }}" ` + --parameters resourceNameTemplate="${{ parameters.resourceNameTemplate }}" ` --parameters adoOrganizationUrl="${{ parameters.adoOrganizationUrl }}" ` --parameters adoProjectName="${{ parameters.adoProjectName }}" ` --parameters adoRepositoryName="${{ parameters.adoRepositoryName }}" ` diff --git a/Setup/azure-pipelines-external.yml b/Setup/azure-pipelines-external.yml index 04b63bc..c9c3d99 100644 --- a/Setup/azure-pipelines-external.yml +++ b/Setup/azure-pipelines-external.yml @@ -30,7 +30,7 @@ # - EntraIdAllowedGroups (comma-separated list of Entra ID group object IDs) # # Optional variables (for custom naming): -# - AppServiceName (custom App Service name, defaults to wa-{WebsiteName} if not provided) +# - ResourceNameTemplate (naming template with {resourcetype} placeholder, e.g., "d365ce-dev-erp-{resourcetype}") trigger: none pr: none @@ -100,7 +100,7 @@ stages: websitePassword: $(WebsitePassword) websiteSessionSecret: $(WebsiteSessionSecret) websiteName: $(WebsiteName) - appServiceName: ${{ coalesce(variables.AppServiceName, '') }} + resourceNameTemplate: ${{ coalesce(variables.ResourceNameTemplate, '') }} adoOrganizationUrl: $(System.CollectionUri) adoProjectName: $(System.TeamProject) adoRepositoryName: ${{ coalesce(variables.AdoRepositoryName, '') }} From ca9d93492c923ec45076a8ea2635e75f44d89754 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kaare=20B=C3=B8rsting?= Date: Mon, 26 Jan 2026 16:33:45 +0100 Subject: [PATCH 2/3] chore: rename --- Setup/azure-pipelines-external.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Setup/azure-pipelines-external.yml b/Setup/azure-pipelines-external.yml index c9c3d99..e90275c 100644 --- a/Setup/azure-pipelines-external.yml +++ b/Setup/azure-pipelines-external.yml @@ -30,7 +30,7 @@ # - EntraIdAllowedGroups (comma-separated list of Entra ID group object IDs) # # Optional variables (for custom naming): -# - ResourceNameTemplate (naming template with {resourcetype} placeholder, e.g., "d365ce-dev-erp-{resourcetype}") +# - AzureServiceNameTemplate (naming template with {resourcetype} placeholder, e.g., "d365ce-dev-erp-{resourcetype}") trigger: none pr: none @@ -100,7 +100,7 @@ stages: websitePassword: $(WebsitePassword) websiteSessionSecret: $(WebsiteSessionSecret) websiteName: $(WebsiteName) - resourceNameTemplate: ${{ coalesce(variables.ResourceNameTemplate, '') }} + resourceNameTemplate: ${{ coalesce(variables.AzureServiceNameTemplate, '') }} adoOrganizationUrl: $(System.CollectionUri) adoProjectName: $(System.TeamProject) adoRepositoryName: ${{ coalesce(variables.AdoRepositoryName, '') }} From 9f86519b2247cf9df82370cfb7e56b10512f3f71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kaare=20B=C3=B8rsting?= Date: Mon, 26 Jan 2026 16:53:18 +0100 Subject: [PATCH 3/3] fix: force evaluation --- Setup/azure-pipelines-external.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Setup/azure-pipelines-external.yml b/Setup/azure-pipelines-external.yml index e90275c..a585bf8 100644 --- a/Setup/azure-pipelines-external.yml +++ b/Setup/azure-pipelines-external.yml @@ -100,7 +100,7 @@ stages: websitePassword: $(WebsitePassword) websiteSessionSecret: $(WebsiteSessionSecret) websiteName: $(WebsiteName) - resourceNameTemplate: ${{ coalesce(variables.AzureServiceNameTemplate, '') }} + resourceNameTemplate: '$(AzureServiceNameTemplate)' adoOrganizationUrl: $(System.CollectionUri) adoProjectName: $(System.TeamProject) adoRepositoryName: ${{ coalesce(variables.AdoRepositoryName, '') }}