From 65562971817460fde419fc131bee05c535e2de2b Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sat, 28 May 2022 14:06:06 +1000 Subject: [PATCH 01/88] added custom token --- settings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.json b/settings.json index 9198a0f7d0..d11a82d7cc 100644 --- a/settings.json +++ b/settings.json @@ -5,7 +5,7 @@ "localTokens": [ { "name": "namePrefix", - "value": "carml", + "value": "zu3bx", "metadata": { "description": "A 3-5 character length string, included in the resources names" } From 5c63406d948d3e40c971d39f84c79e059f64ae22 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sat, 28 May 2022 14:08:11 +1000 Subject: [PATCH 02/88] set telemtry to false --- settings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.json b/settings.json index d11a82d7cc..3289e7f18c 100644 --- a/settings.json +++ b/settings.json @@ -15,5 +15,5 @@ // Enable or disable CARMLs CI telemetry tracking. // Note: This tracks the number of deployments only // For more information see: https://github.com/Azure/ResourceModules/wiki/The%20library%20-%20Module%20design#telemetry - "enableDefaultTelemetry": true + "enableDefaultTelemetry": false } From c66f8c58ee2a7e80bdf7200c55f86e2754f75878 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Thu, 9 Jun 2022 13:51:18 +1000 Subject: [PATCH 03/88] updated naming convention --- global.variables.yml | 4 ++-- settings.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/global.variables.yml b/global.variables.yml index 7fed8d13f9..cff5a706eb 100644 --- a/global.variables.yml +++ b/global.variables.yml @@ -24,7 +24,7 @@ variables: ###################################### bicepRegistryDoPublish: true # Set to true, if you would like to publish module templates to a bicep registry - bicepRegistryName: adpsxxazacrx001 # The name of the bicep registry (ACR) to publish to. If it does not exist, it will be created. + bicepRegistryName: adpzu3bxazacrx001 # The name of the bicep registry (ACR) to publish to. If it does not exist, it will be created. bicepRegistryRGName: 'artifacts-rg' # The resource group that hosts the private bicep registry (ACR) bicepRegistryRgLocation: 'West Europe' # The location of the resource group to publish to @@ -38,7 +38,7 @@ variables: vmImage: 'ubuntu-latest' # Use this for Microsoft-hosted agents poolName: '' # Use this for self-hosted agents - serviceConnection: 'CARML-CSU-Tenant-Connection' + serviceConnection: 'carml' ###################################### # Source diff --git a/settings.json b/settings.json index 9198a0f7d0..d11a82d7cc 100644 --- a/settings.json +++ b/settings.json @@ -5,7 +5,7 @@ "localTokens": [ { "name": "namePrefix", - "value": "carml", + "value": "zu3bx", "metadata": { "description": "A 3-5 character length string, included in the resources names" } From 2fbac349225882fed2ba1b17ef8e77d52334399f Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Thu, 9 Jun 2022 17:52:26 +1000 Subject: [PATCH 04/88] test --- .../templates/validateModuleDeployment/action.yml | 13 ++++++------- global.variables.yml | 11 +++++++++++ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index 7d23efa771..16180f5f70 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -129,15 +129,12 @@ runs: # Load used functions . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') - # Load Settings File - $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable - # Construct Token Function Input $ConvertTokensInputs = @{ Tokens = @{} FilePath = '${{ inputs.parameterFilePath }}' - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + TokenPrefix = '${{ env.tokenPrefix }}' + TokenSuffix = '${{ env.tokenSuffix }}' } # Local tokens @@ -150,9 +147,11 @@ runs: } # Add local tokens - if ($Settings.parameterFileTokens.localTokens) { + write-verbose "New Tokens Approach" -verbose + $localTokens = Get-ChildItem ENV: | Where-Object -Property Name -Like "token_*" + if ((Get-ChildItem ENV: | Where-Object -Property Name -Like "token_*")) { $tokenMap = @{} - foreach ($token in $Settings.parameterFileTokens.localTokens) { + foreach ($token in $localTokens) { $tokenMap += @{ $token.name = $token.value } } Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose diff --git a/global.variables.yml b/global.variables.yml index cff5a706eb..9065ff54f6 100644 --- a/global.variables.yml +++ b/global.variables.yml @@ -3,6 +3,17 @@ variables: ################################################## Common Variables ####################################################### ########################################################################################################################### + enableDefaultTelemetry: false # Enable or disable CARMLs CI telemetry tracking. Note: This tracks the number of deployments only. See: https://github.com/Azure/ResourceModules/wiki/The%20library%20-%20Module%20design#telemetry + + ###################################### + # Local tokens settings + ###################################### + + tokenPrefix: '<<' + tokenSuffix: '>>' + token_namePrefix: 'zu3bx' + token_test: 'tester' + ###################################### # Validation deployment settings ###################################### From c40e86e2e53877b443570695187603599655fbe3 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Thu, 9 Jun 2022 18:40:04 +1000 Subject: [PATCH 05/88] test --- .../validateModuleDeployment/action.yml | 18 +++++++----------- global.variables.yml | 10 ++++++++-- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index 16180f5f70..ed3e84c62e 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -147,12 +147,10 @@ runs: } # Add local tokens - write-verbose "New Tokens Approach" -verbose - $localTokens = Get-ChildItem ENV: | Where-Object -Property Name -Like "token_*" - if ((Get-ChildItem ENV: | Where-Object -Property Name -Like "token_*")) { + if ([System.Convert]::ToBoolean('${{ env.enableLocalTokens }}')) { $tokenMap = @{} - foreach ($token in $localTokens) { - $tokenMap += @{ $token.name = $token.value } + foreach ($token in Get-ChildItem env: | Where-Object -Property Name -Like "localToken_*") { + $tokenMap += @{ $token.Name.Replace('localToken_','') = $token.value } } Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens += $tokenMap @@ -199,10 +197,9 @@ runs: $functionInput['parameterFilePath'] = Join-Path $env:GITHUB_WORKSPACE '${{ inputs.parameterFilePath }}' } - $projectSettings = Get-Content -Path 'settings.json' | ConvertFrom-Json - if (-not [String]::IsNullOrEmpty($projectSettings.enableDefaultTelemetry) -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { + if ([System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }}') -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { $functionInput['additionalParameters'] += @{ - enableDefaultTelemetry = $projectSettings.enableDefaultTelemetry + enableDefaultTelemetry = ${{ env.enableDefaultTelemetry }} } } @@ -241,10 +238,9 @@ runs: $functionInput['parameterFilePath'] = Join-Path $env:GITHUB_WORKSPACE '${{ inputs.parameterFilePath }}' } - $projectSettings = Get-Content -Path 'settings.json' | ConvertFrom-Json - if (-not [String]::IsNullOrEmpty($projectSettings.enableDefaultTelemetry) -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { + if ([System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }}') -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { $functionInput['additionalParameters'] += @{ - enableDefaultTelemetry = $projectSettings.enableDefaultTelemetry + enableDefaultTelemetry = ${{ env.enableDefaultTelemetry }} } } diff --git a/global.variables.yml b/global.variables.yml index 9065ff54f6..ca8f72de39 100644 --- a/global.variables.yml +++ b/global.variables.yml @@ -9,10 +9,16 @@ variables: # Local tokens settings ###################################### + enableLocalTokens: true # Enable or disable local tokens that are stored in the format 'localToken_*'. e.g. localToken_myTokenKey = myTokenValue + localToken_namePrefix: 'zu3bx' #"A 3-5 character length string, included in the resources names" + localToken_test: 'tester' + + ###################################### + # global tokens settings + ###################################### + tokenPrefix: '<<' tokenSuffix: '>>' - token_namePrefix: 'zu3bx' - token_test: 'tester' ###################################### # Validation deployment settings From 2b8c8710b4d34568f624c501c646b5ce9ae893b3 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Thu, 9 Jun 2022 19:10:22 +1000 Subject: [PATCH 06/88] test --- .../actions/templates/validateModuleDeployment/action.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index ed3e84c62e..5a743e4eff 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -137,7 +137,7 @@ runs: TokenSuffix = '${{ env.tokenSuffix }}' } - # Local tokens + # Add standard tokens $ConvertTokensInputs.Tokens += @{ resourceGroupName = '${{ inputs.resourceGroupName }}' subscriptionId = '${{ inputs.subscriptionId }}' @@ -146,10 +146,14 @@ runs: deploymentSpId = '${{ env.DEPLOYMENT_SP_ID }}' } - # Add local tokens + # Add local (source control) tokens if ([System.Convert]::ToBoolean('${{ env.enableLocalTokens }}')) { $tokenMap = @{} foreach ($token in Get-ChildItem env: | Where-Object -Property Name -Like "localToken_*") { + # Prioritize Name Prefix Token from Environment Variables () + if(($token.name -eq 'localToken_namePrefix') -and '${{ env.TOKEN_NAMEPREFIX }}'){ + $token.value = '${{ env.TOKEN_NAMEPREFIX }}' + } $tokenMap += @{ $token.Name.Replace('localToken_','') = $token.value } } Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose From 606721fb2a95d8e227a533a6cf30cc23af5c4b44 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Thu, 9 Jun 2022 19:10:57 +1000 Subject: [PATCH 07/88] crocs --- global.variables.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global.variables.yml b/global.variables.yml index ca8f72de39..2b4bc4675e 100644 --- a/global.variables.yml +++ b/global.variables.yml @@ -10,7 +10,7 @@ variables: ###################################### enableLocalTokens: true # Enable or disable local tokens that are stored in the format 'localToken_*'. e.g. localToken_myTokenKey = myTokenValue - localToken_namePrefix: 'zu3bx' #"A 3-5 character length string, included in the resources names" + localToken_namePrefix: 'crocs' #"A 3-5 character length string, included in the resources names" localToken_test: 'tester' ###################################### From 5677b2f7d2f59dba6a9c3c8bae2a87c51b21adae Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Thu, 9 Jun 2022 19:29:21 +1000 Subject: [PATCH 08/88] test --- .github/workflows/ms.network.applicationsecuritygroups.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ms.network.applicationsecuritygroups.yml b/.github/workflows/ms.network.applicationsecuritygroups.yml index a4f3df798d..99142f38dd 100644 --- a/.github/workflows/ms.network.applicationsecuritygroups.yml +++ b/.github/workflows/ms.network.applicationsecuritygroups.yml @@ -34,6 +34,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### From a980a54368f965bc7b6a8db8efc03c3ba32464dd Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Thu, 9 Jun 2022 19:55:51 +1000 Subject: [PATCH 09/88] set local tokens to false --- global.variables.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/global.variables.yml b/global.variables.yml index 2b4bc4675e..b27b216848 100644 --- a/global.variables.yml +++ b/global.variables.yml @@ -9,9 +9,10 @@ variables: # Local tokens settings ###################################### - enableLocalTokens: true # Enable or disable local tokens that are stored in the format 'localToken_*'. e.g. localToken_myTokenKey = myTokenValue - localToken_namePrefix: 'crocs' #"A 3-5 character length string, included in the resources names" + enableLocalTokens: false # Enable or disable local tokens that are stored in the format 'localToken_*'. e.g. localToken_myTokenKey = myTokenValue + localToken_namePrefix: 'carml' #"A 3-5 character length string, included in the resources names" localToken_test: 'tester' + localToken_test2: 'tester2' ###################################### # global tokens settings From 1df43c07e0e7d9e7dd26fd1546a12b38fd14f084 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Thu, 9 Jun 2022 20:08:04 +1000 Subject: [PATCH 10/88] test --- .github/actions/templates/validateModuleDeployment/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index 5a743e4eff..3722214e15 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -201,7 +201,7 @@ runs: $functionInput['parameterFilePath'] = Join-Path $env:GITHUB_WORKSPACE '${{ inputs.parameterFilePath }}' } - if ([System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }}') -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { + if (-not [System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }}') -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { $functionInput['additionalParameters'] += @{ enableDefaultTelemetry = ${{ env.enableDefaultTelemetry }} } @@ -242,7 +242,7 @@ runs: $functionInput['parameterFilePath'] = Join-Path $env:GITHUB_WORKSPACE '${{ inputs.parameterFilePath }}' } - if ([System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }}') -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { + if (-not [System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }}') -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { $functionInput['additionalParameters'] += @{ enableDefaultTelemetry = ${{ env.enableDefaultTelemetry }} } From 018a6cdaf9e209411187fe2c783fd3e6876f5cfb Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Thu, 9 Jun 2022 20:36:03 +1000 Subject: [PATCH 11/88] test --- .github/actions/templates/validateModuleDeployment/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index 3722214e15..164605c1f7 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -203,7 +203,7 @@ runs: if (-not [System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }}') -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { $functionInput['additionalParameters'] += @{ - enableDefaultTelemetry = ${{ env.enableDefaultTelemetry }} + enableDefaultTelemetry = '${{ env.enableDefaultTelemetry }}' } } @@ -244,7 +244,7 @@ runs: if (-not [System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }}') -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { $functionInput['additionalParameters'] += @{ - enableDefaultTelemetry = ${{ env.enableDefaultTelemetry }} + enableDefaultTelemetry = '${{ env.enableDefaultTelemetry }}' } } From 063bb7ed6858563a8fe7d8cd5ca3b4687be72bdd Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Thu, 9 Jun 2022 21:05:41 +1000 Subject: [PATCH 12/88] test --- .../validateModuleDeployment/action.yml | 22 +++++++++---------- global.variables.yml | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index 164605c1f7..728770ac8b 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -147,17 +147,17 @@ runs: } # Add local (source control) tokens - if ([System.Convert]::ToBoolean('${{ env.enableLocalTokens }}')) { - $tokenMap = @{} - foreach ($token in Get-ChildItem env: | Where-Object -Property Name -Like "localToken_*") { - # Prioritize Name Prefix Token from Environment Variables () - if(($token.name -eq 'localToken_namePrefix') -and '${{ env.TOKEN_NAMEPREFIX }}'){ - $token.value = '${{ env.TOKEN_NAMEPREFIX }}' - } - $tokenMap += @{ $token.Name.Replace('localToken_','') = $token.value } - } - Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.Tokens += $tokenMap + $tokenMap = @{} + foreach ($token in (Get-ChildItem env: | Where-Object -Property Name -Like "localToken_*")) { + $tokenMap += @{ $token.Name.Replace('localToken_','') = $token.value } + } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.Tokens += $tokenMap + + # Swap 'namePrefix' token if provided as a GitHub secret + if($ConvertTokensInputs.Tokens.namePrefix -and '${{ env.TOKEN_NAMEPREFIX }}'){ + Write-Verbose 'Using [namePrefix] token from GitHub' -Verbose + $ConvertTokensInputs.Tokens.namePrefix = '${{ env.TOKEN_NAMEPREFIX }}' } # Add custom tokens (passed in via the pipeline) diff --git a/global.variables.yml b/global.variables.yml index b27b216848..88d5143407 100644 --- a/global.variables.yml +++ b/global.variables.yml @@ -9,7 +9,7 @@ variables: # Local tokens settings ###################################### - enableLocalTokens: false # Enable or disable local tokens that are stored in the format 'localToken_*'. e.g. localToken_myTokenKey = myTokenValue + # the token name prefix 'localToken_' will be removed from the key name when the pipelines run localToken_namePrefix: 'carml' #"A 3-5 character length string, included in the resources names" localToken_test: 'tester' localToken_test2: 'tester2' From f7ec740a4dcb293483f5582ff681cd79c5448121 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Thu, 9 Jun 2022 21:22:08 +1000 Subject: [PATCH 13/88] fix --- .github/actions/templates/validateModuleDeployment/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index 728770ac8b..a5ea6b839f 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -203,7 +203,7 @@ runs: if (-not [System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }}') -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { $functionInput['additionalParameters'] += @{ - enableDefaultTelemetry = '${{ env.enableDefaultTelemetry }}' + enableDefaultTelemetry = [System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }}' } } @@ -244,7 +244,7 @@ runs: if (-not [System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }}') -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { $functionInput['additionalParameters'] += @{ - enableDefaultTelemetry = '${{ env.enableDefaultTelemetry }}' + enableDefaultTelemetry = [System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }}' } } From 6fe76451c39359d148c945a6e857be5bab20e0ca Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Thu, 9 Jun 2022 21:29:30 +1000 Subject: [PATCH 14/88] fix --- .github/actions/templates/validateModuleDeployment/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index a5ea6b839f..4fae1c4ba4 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -203,7 +203,7 @@ runs: if (-not [System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }}') -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { $functionInput['additionalParameters'] += @{ - enableDefaultTelemetry = [System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }}' + enableDefaultTelemetry = [System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }})' } } @@ -244,7 +244,7 @@ runs: if (-not [System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }}') -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { $functionInput['additionalParameters'] += @{ - enableDefaultTelemetry = [System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }}' + enableDefaultTelemetry = [System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }})' } } From 3d3c573e2e364cab9cbc59860dc066f89fc8a8a4 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Thu, 9 Jun 2022 21:30:08 +1000 Subject: [PATCH 15/88] fix --- .github/actions/templates/validateModuleDeployment/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index 4fae1c4ba4..0cb11cb9f2 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -203,7 +203,7 @@ runs: if (-not [System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }}') -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { $functionInput['additionalParameters'] += @{ - enableDefaultTelemetry = [System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }})' + enableDefaultTelemetry = [System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }}') } } @@ -244,7 +244,7 @@ runs: if (-not [System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }}') -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { $functionInput['additionalParameters'] += @{ - enableDefaultTelemetry = [System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }})' + enableDefaultTelemetry = [System.Convert]::ToBoolean('${{ env.enableDefaultTelemetry }}') } } From f7ca33acf2ffe3f1e34f99e10ac8874704dbc361 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Thu, 9 Jun 2022 21:42:53 +1000 Subject: [PATCH 16/88] test --- global.variables.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/global.variables.yml b/global.variables.yml index 88d5143407..b7f9c3e340 100644 --- a/global.variables.yml +++ b/global.variables.yml @@ -10,9 +10,7 @@ variables: ###################################### # the token name prefix 'localToken_' will be removed from the key name when the pipelines run - localToken_namePrefix: 'carml' #"A 3-5 character length string, included in the resources names" - localToken_test: 'tester' - localToken_test2: 'tester2' + localToken_namePrefix: 'carml' # A 3-5 character length string, included in the resources names, is overridden if provided as GitHub Secret / ADO Variable ###################################### # global tokens settings From 8d6ba721b97d30d6ec9c57cc984b1dd6048f3bd4 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sat, 18 Jun 2022 09:41:59 +1000 Subject: [PATCH 17/88] updated global modules test --- arm/.global/global.module.tests.ps1 | 9 ++++----- global.variables.yml | 8 ++++++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/arm/.global/global.module.tests.ps1 b/arm/.global/global.module.tests.ps1 index ad5a900410..d6e26607d0 100644 --- a/arm/.global/global.module.tests.ps1 +++ b/arm/.global/global.module.tests.ps1 @@ -12,13 +12,12 @@ param ( ) $script:RepoRoot = Split-Path (Split-Path $PSScriptRoot -Parent) -Parent -$script:Settings = Get-Content -Path (Join-Path $PSScriptRoot '..\..\settings.json') | ConvertFrom-Json -AsHashtable +$script:TokensSettings = Get-Content -Path (Join-Path $PSScriptRoot '..\..\global.variables.yml') | ConvertFrom-Yaml | Select-Object -ExpandProperty variables | Select-Object tokenPrefix, tokenSuffix $script:RGdeployment = 'https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#' $script:Subscriptiondeployment = 'https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#' $script:MGdeployment = 'https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#' $script:Tenantdeployment = 'https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#' $script:moduleFolderPaths = $moduleFolderPaths -$script:enforcedTokenList = $enforcedTokenList # For runtime purposes, we cache the compiled template in a hashtable that uses a formatted relative module path as a key $script:convertedTemplates = @{} @@ -510,7 +509,7 @@ Describe 'Deployment template tests' -Tag Template { parameterFile_AllParameterNames = $parameterFile_AllParameterNames templateFile_AllParameterNames = $TemplateFile_AllParameterNames templateFile_RequiredParametersNames = $TemplateFile_RequiredParametersNames - tokenSettings = $Settings.parameterFileTokens + tokenSettings = $TokensSettings } } } @@ -919,7 +918,7 @@ Describe 'Deployment template tests' -Tag Template { $parameterFileTokenTestCases += @{ parameterFilePath = $ParameterFilePath parameterFileName = Split-Path $ParameterFilePath -Leaf - tokenSettings = $Settings.parameterFileTokens + tokenSettings = $TokensSettings tokenName = $token tokenValue = $enforcedTokenList[$token] moduleFolderName = $moduleFolderPath.Replace('\', '/').Split('/arm/')[1] @@ -933,7 +932,7 @@ Describe 'Deployment template tests' -Tag Template { param ( [string] $parameterFilePath, [string] $parameterFileName, - [hashtable] $tokenSettings, + [Selected.System.Collections.Hashtable] $tokenSettings, [string] $tokenName, [string] $tokenValue, [string] $moduleFolderName diff --git a/global.variables.yml b/global.variables.yml index b7f9c3e340..38754b9d70 100644 --- a/global.variables.yml +++ b/global.variables.yml @@ -3,19 +3,23 @@ variables: ################################################## Common Variables ####################################################### ########################################################################################################################### - enableDefaultTelemetry: false # Enable or disable CARMLs CI telemetry tracking. Note: This tracks the number of deployments only. See: https://github.com/Azure/ResourceModules/wiki/The%20library%20-%20Module%20design#telemetry + # Enable or disable CARMLs CI telemetry tracking. Note: This tracks the number of deployments only. + # See: https://github.com/Azure/ResourceModules/wiki/The%20library%20-%20Module%20design#telemetry + enableDefaultTelemetry: false ###################################### # Local tokens settings ###################################### - # the token name prefix 'localToken_' will be removed from the key name when the pipelines run + # the 'localToken_' prefix will be removed from the key name when the pipelines run. + # e.g. if you have a token in your parameter file as <>, then the token defined in this file looks like "localToken_customKey": 'value' localToken_namePrefix: 'carml' # A 3-5 character length string, included in the resources names, is overridden if provided as GitHub Secret / ADO Variable ###################################### # global tokens settings ###################################### + # this determines the starting prefix and ending suffix of the token in your file. tokenPrefix: '<<' tokenSuffix: '>>' From 7c8f6a51fb70f9ce2c5648d853478eaf8db49d66 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sat, 18 Jun 2022 13:55:54 +1000 Subject: [PATCH 18/88] First major test --- .../validateModuleDeployment/action.yml | 4 +- .../templates/validateModulePester/action.yml | 37 +++++--- arm/.global/global.module.tests.ps1 | 46 ++++----- settings.json | 19 ---- utilities/tools/Test-ModuleLocally.ps1 | 94 ++++++++----------- 5 files changed, 93 insertions(+), 107 deletions(-) delete mode 100644 settings.json diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index 0cb11cb9f2..6cab88c54c 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -14,7 +14,7 @@ ## |============================================================================================================================================================================| ## | Parameter | Required | Default | Description | Example | ## |---------------------------|----------|---------|-------------------------------------------------------|-------------------------------------------------------------------| -## | templateFilePath | true | '' | The path to the template file to use for deployment | 'arm/Microsoft.ApiManagement/service/deploy.bicep' | +## | templateFilePath | true | '' | The path to the template file to use for deployment | 'arm/Microsoft.ApiManagement/service/deploy.bicep' | ## | parameterFilePath | true | '' | The path to the parameter file to use for deployment | 'arm/Microsoft.ApiManagement/service/.parameters/parameters.json' | ## | location | true | '' | The location to use for deployment | 'WestEurope' | ## | resourceGroupName | false | '' | The resource group to deploy to | 'validation-rg' | @@ -137,7 +137,7 @@ runs: TokenSuffix = '${{ env.tokenSuffix }}' } - # Add standard tokens + # Add enforced tokens $ConvertTokensInputs.Tokens += @{ resourceGroupName = '${{ inputs.resourceGroupName }}' subscriptionId = '${{ inputs.subscriptionId }}' diff --git a/.github/actions/templates/validateModulePester/action.yml b/.github/actions/templates/validateModulePester/action.yml index 2585707067..c3fbb5cb83 100644 --- a/.github/actions/templates/validateModulePester/action.yml +++ b/.github/actions/templates/validateModulePester/action.yml @@ -45,6 +45,7 @@ runs: # This is the latest tested Pester version. Uncomment the next line in case of a future breaking change in the default version installed on the runner. # @{ Name = 'Pester'; Version = '5.3.1' } @{ Name = 'Az.Resources' } + @{ Name = 'powershell-yaml'; Version = '0.4.2'} ) # Set agent up @@ -76,18 +77,32 @@ runs: Write-Verbose "- [($moduleFolderPath]" -Verbose } - $enforcedTokenList = @{} - if (-not [String]::IsNullOrEmpty('${{ env.ARM_SUBSCRIPTION_ID }}')) { - $enforcedTokenList['subscriptionId'] = '${{ env.ARM_SUBSCRIPTION_ID }}' + $GlobalVariablesObject = Get-Content -Path '${{ inputs.variablesPath }}' | ConvertFrom-Yaml | Select-Object -ExpandProperty variables + + # Construct Token Configuration Input + $tokenConfiguration = @{ + Tokens = @{} + TokenPrefix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenPrefix + TokenSuffix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenSuffix + } + + ## Enforced Tokens + if ($ValidateOrDeployParameters.ContainsKey('subscriptionId')) { + $tokenConfiguration.Tokens['subscriptionId'] = '${{ env.ARM_SUBSCRIPTION_ID }}' } - if (-not [String]::IsNullOrEmpty('${{ env.ARM_MGMTGROUP_ID }}')) { - $enforcedTokenList['managementGroupId'] = '${{ env.ARM_MGMTGROUP_ID }}' + if ($ValidateOrDeployParameters.ContainsKey('managementGroupId')) { + $tokenConfiguration.Tokens['managementGroupId'] = '${{ env.ARM_MGMTGROUP_ID }}' } - if (-not [String]::IsNullOrEmpty('${{ env.DEPLOYMENT_SP_ID }}')) { - $enforcedTokenList['deploymentSpId'] = '${{ env.DEPLOYMENT_SP_ID }}' + if ($AdditionalTokens.ContainsKey('deploymentSpId')) { + $tokenConfiguration.Tokens['deploymentSpId'] = '${{ env.DEPLOYMENT_SP_ID }}' } - if (-not [String]::IsNullOrEmpty('${{ env.ARM_TENANT_ID }}')) { - $enforcedTokenList['tenantId'] = '${{ env.ARM_TENANT_ID }}' + if ($AdditionalTokens.ContainsKey('tenantId')) { + $tokenConfiguration.Tokens['tenantId'] = '${{ env.ARM_TENANT_ID }}' + } + + ## Local Tokens from global.variables.yml + foreach ($localToken in $GlobalVariablesObject.Keys | ForEach-Object { if ($PSItem.contains('localToken_')) { $PSItem } }) { + $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '')] = $GlobalVariablesObject.$localToken } # --------------------- # @@ -96,8 +111,8 @@ runs: Invoke-Pester -Configuration @{ Run = @{ Container = New-PesterContainer -Path 'arm/.global/global.module.tests.ps1' -Data @{ - moduleFolderPaths = $moduleFolderPaths - enforcedTokenList = $enforcedTokenList + moduleFolderPaths = $moduleFolderPaths + tokenConfiguration = $tokenConfiguration } } TestResult = @{ diff --git a/arm/.global/global.module.tests.ps1 b/arm/.global/global.module.tests.ps1 index 283409aacd..5f0de9ba49 100644 --- a/arm/.global/global.module.tests.ps1 +++ b/arm/.global/global.module.tests.ps1 @@ -6,13 +6,12 @@ param ( (Get-ChildItem $_ -File -Depth 0 -Include @('deploy.json', 'deploy.bicep') -Force).Count -gt 0 }), - # Tokens to test for (i.e. their value should not be used in the parameter files, but their placeholder) + # Dedicated Tokens configuration hashtable containing the tokens and token prefix and suffix. [Parameter(Mandatory = $false)] - [hashtable] $enforcedTokenList = @{} + [hashtable] $tokenConfiguration = @{} ) $script:RepoRoot = Split-Path (Split-Path $PSScriptRoot -Parent) -Parent -$script:TokensSettings = Get-Content -Path (Join-Path $PSScriptRoot '..\..\global.variables.yml') | ConvertFrom-Yaml | Select-Object -ExpandProperty variables | Select-Object tokenPrefix, tokenSuffix $script:RGdeployment = 'https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#' $script:Subscriptiondeployment = 'https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#' $script:MGdeployment = 'https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#' @@ -146,7 +145,6 @@ Describe 'File/folder tests' -Tag Modules { } } } - Describe 'Readme tests' -Tag Readme { Context 'Readme content tests' { @@ -514,7 +512,7 @@ Describe 'Deployment template tests' -Tag Template { parameterFile_AllParameterNames = $parameterFile_AllParameterNames templateFile_AllParameterNames = $TemplateFile_AllParameterNames templateFile_RequiredParametersNames = $TemplateFile_RequiredParametersNames - tokenSettings = $TokensSettings + tokenConfiguration = $tokenConfiguration } } } @@ -919,13 +917,14 @@ Describe 'Deployment template tests' -Tag Template { if (Test-Path (Join-Path $moduleFolderPath '.parameters')) { $ParameterFilePaths = (Get-ChildItem (Join-Path -Path $moduleFolderPath -ChildPath '.parameters' -AdditionalChildPath '*parameters.json') -Recurse -Force).FullName foreach ($ParameterFilePath in $ParameterFilePaths) { - foreach ($token in $enforcedTokenList.Keys) { + foreach ($token in $tokenConfiguration.Tokens.Keys) { $parameterFileTokenTestCases += @{ parameterFilePath = $ParameterFilePath parameterFileName = Split-Path $ParameterFilePath -Leaf - tokenSettings = $TokensSettings + tokenPrefix = $tokenConfiguration.TokenPrefix + tokenSuffix = $tokenConfiguration.TokenSuffix tokenName = $token - tokenValue = $enforcedTokenList[$token] + tokenValue = $tokenConfiguration.Tokens[$token] moduleFolderName = $moduleFolderPath.Replace('\', '/').Split('/arm/')[1] } } @@ -933,21 +932,24 @@ Describe 'Deployment template tests' -Tag Template { } } - It '[] [Tokens] Parameter file [] should not contain the plain value for token [] guid' -TestCases $parameterFileTokenTestCases { - param ( - [string] $parameterFilePath, - [string] $parameterFileName, - [Selected.System.Collections.Hashtable] $tokenSettings, - [string] $tokenName, - [string] $tokenValue, - [string] $moduleFolderName - ) - $ParameterFileTokenName = -join ($tokenSettings.tokenPrefix, $tokenName, $tokenSettings.tokenSuffix) - $ParameterFileContent = Get-Content -Path $parameterFilePath + foreach ($parameterFileTokenTestCase in $parameterFileTokenTestCases) { + It '[] [Tokens] Parameter file [] should not contain the plain value for token []' -TestCases $parameterFileTokenTestCase { + param ( + [string] $parameterFilePath, + [string] $parameterFileName, + [string] $tokenPrefix, + [string] $tokenSuffix, + [string] $tokenName, + [string] $tokenValue, + [string] $moduleFolderName + ) + $ParameterFileTokenName = -join ($tokenPrefix, $tokenName, $tokenSuffix) + $ParameterFileContent = Get-Content -Path $parameterFilePath - $incorrectReferencesFound = $ParameterFileContent | Select-String -Pattern $tokenValue -AllMatches - if ($incorrectReferencesFound.Matches) { - $incorrectReferencesFound.Matches.Count | Should -Be 0 -Because ('Parameter file should not contain the [{0}] value, instead should reference the token value [{1}]. Please check the {2} lines: [{3}]' -f $tokenName, $ParameterFileTokenName, $incorrectReferencesFound.Matches.Count, ($incorrectReferencesFound.Line.Trim() -join ",`n")) + $incorrectReferencesFound = $ParameterFileContent | Select-String -Pattern $tokenValue -AllMatches + if ($incorrectReferencesFound.Matches) { + $incorrectReferencesFound.Matches.Count | Should -Be 0 -Because ('Parameter file should not contain the [{0}] value, instead should reference the token value [{1}]. Please check the {2} lines: [{3}]' -f $tokenName, $ParameterFileTokenName, $incorrectReferencesFound.Matches.Count, ($incorrectReferencesFound.Line.Trim() -join ",`n")) + } } } } diff --git a/settings.json b/settings.json deleted file mode 100644 index 3289e7f18c..0000000000 --- a/settings.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "parameterFileTokens": { - "tokenPrefix": "<<", - "tokenSuffix": ">>", - "localTokens": [ - { - "name": "namePrefix", - "value": "zu3bx", - "metadata": { - "description": "A 3-5 character length string, included in the resources names" - } - } - ] - }, - // Enable or disable CARMLs CI telemetry tracking. - // Note: This tracks the number of deployments only - // For more information see: https://github.com/Azure/ResourceModules/wiki/The%20library%20-%20Module%20design#telemetry - "enableDefaultTelemetry": false -} diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index dced7d66d2..aba8967ce8 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -143,32 +143,55 @@ function Test-ModuleLocally { . (Join-Path $PSScriptRoot '../pipelines/resourceDeployment/Test-TemplateDeployment.ps1') } process { + ################ + # TOKENS Replacement # + ################ + + $GlobalVariablesObject = Get-Content -Path (Join-Path $PSScriptRoot '..\..\global.variables.yml') | ConvertFrom-Yaml -ErrorAction Stop | Select-Object -ExpandProperty variables + + # Construct Token Configuration Input + $tokenConfiguration = @{ + Tokens = @{} + TokenPrefix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenPrefix + TokenSuffix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenSuffix + } + + ## Enforced Tokens + if ($ValidateOrDeployParameters.ContainsKey('subscriptionId')) { + $tokenConfiguration.Tokens['subscriptionId'] = $ValidateOrDeployParameters.SubscriptionId + } + if ($ValidateOrDeployParameters.ContainsKey('managementGroupId')) { + $tokenConfiguration.Tokens['managementGroupId'] = $ValidateOrDeployParameters.ManagementGroupId + } + if ($AdditionalTokens.ContainsKey('deploymentSpId')) { + $tokenConfiguration.Tokens['deploymentSpId'] = $AdditionalTokens['deploymentSpId'] + } + if ($AdditionalTokens.ContainsKey('tenantId')) { + $tokenConfiguration.Tokens['tenantId'] = $AdditionalTokens['tenantId'] + } + + ## Local Tokens from global.variables.yml + foreach ($localToken in $GlobalVariablesObject.Keys | ForEach-Object { if ($PSItem.contains('localToken_')) { $PSItem } }) { + $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '')] = $GlobalVariablesObject.$localToken + } + #Add Other Parameter File Tokens (For Testing) + $AdditionalTokens.Keys | ForEach-Object { + if (-not $tokenConfiguration.Tokens.ContainsKey($PSItem)) { + $tokenConfiguration.Tokens[$PSItem] = $AdditionalTokens.$PSItem + } + } ################ # PESTER Tests # ################ if ($PesterTest) { Write-Verbose "Pester Testing Module: $ModuleName" try { - $enforcedTokenList = @{} - if ($ValidateOrDeployParameters.ContainsKey('subscriptionId')) { - $enforcedTokenList['subscriptionId'] = $ValidateOrDeployParameters.SubscriptionId - } - if ($ValidateOrDeployParameters.ContainsKey('managementGroupId')) { - $enforcedTokenList['managementGroupId'] = $ValidateOrDeployParameters.ManagementGroupId - } - if ($AdditionalTokens.ContainsKey('deploymentSpId')) { - $enforcedTokenList['deploymentSpId'] = $AdditionalTokens['deploymentSpId'] - } - if ($AdditionalTokens.ContainsKey('tenantId')) { - $enforcedTokenList['tenantId'] = $AdditionalTokens['tenantId'] - } - Invoke-Pester -Configuration @{ Run = @{ Container = New-PesterContainer -Path (Join-Path (Get-Item $PSScriptRoot).Parent.Parent 'arm/.global/global.module.tests.ps1') -Data @{ - moduleFolderPaths = Split-Path $TemplateFilePath -Parent - enforcedTokenList = $enforcedTokenList + moduleFolderPaths = Split-Path $TemplateFilePath -Parent + tokenConfiguration = $tokenConfiguration } } Output = @{ @@ -193,43 +216,8 @@ function Test-ModuleLocally { $ModuleParameterFiles = @($parameterFilePath) } - # Replace parameter file tokens - # ----------------------------- - - # Default Tokens - $ConvertTokensInputs = @{ - Tokens = @{ - subscriptionId = $ValidateOrDeployParameters.SubscriptionId - managementGroupId = $ValidateOrDeployParameters.ManagementGroupId - } - } - - #Add Other Parameter File Tokens (For Testing) - if ($AdditionalTokens) { - $ConvertTokensInputs.Tokens += $AdditionalTokens - } - - # Tokens in settings.json - $settingsFilePath = Join-Path (Get-Item $PSScriptRoot).Parent.Parent 'settings.json' - if (Test-Path $settingsFilePath) { - $Settings = Get-Content -Path $settingsFilePath -Raw | ConvertFrom-Json -AsHashtable - $ConvertTokensInputs += @{ - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix - } - - if ($Settings.parameterFileTokens.localTokens) { - $tokenMap = @{} - foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{ $token.name = $token.value } - } - Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.Tokens += $tokenMap - } - } - # Invoke Token Replacement Functionality and Convert Tokens in Parameter Files - $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInFile @ConvertTokensInputs -FilePath $_ } + $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInFile @tokenConfiguration -FilePath $_ } # Deployment & Validation Testing # ------------------------------- @@ -273,7 +261,7 @@ function Test-ModuleLocally { if (($ValidationTest -or $DeploymentTest) -and $ValidateOrDeployParameters) { # Replace Values with Tokens For Repo Updates Write-Verbose 'Restoring Tokens' - $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInFile @ConvertTokensInputs -FilePath $_ -SwapValueWithName $true } + $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInFile @tokenConfiguration -FilePath $_ -SwapValueWithName $true } } } } From 74b1559774b12ef2bf6b22665d508dfbae346bf2 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sat, 18 Jun 2022 13:56:15 +1000 Subject: [PATCH 19/88] test --- global.variables.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global.variables.yml b/global.variables.yml index 38754b9d70..56c32c8e68 100644 --- a/global.variables.yml +++ b/global.variables.yml @@ -13,7 +13,7 @@ variables: # the 'localToken_' prefix will be removed from the key name when the pipelines run. # e.g. if you have a token in your parameter file as <>, then the token defined in this file looks like "localToken_customKey": 'value' - localToken_namePrefix: 'carml' # A 3-5 character length string, included in the resources names, is overridden if provided as GitHub Secret / ADO Variable + localToken_namePrefix: 'zu3bx' # A 3-5 character length string, included in the resources names, is overridden if provided as GitHub Secret / ADO Variable ###################################### # global tokens settings From 9c9b8c7775724b4241812bb4f819d96a97f91d01 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sat, 18 Jun 2022 14:01:34 +1000 Subject: [PATCH 20/88] fixed global variable path --- .github/actions/templates/validateModulePester/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/templates/validateModulePester/action.yml b/.github/actions/templates/validateModulePester/action.yml index c3fbb5cb83..32bfd09350 100644 --- a/.github/actions/templates/validateModulePester/action.yml +++ b/.github/actions/templates/validateModulePester/action.yml @@ -77,7 +77,7 @@ runs: Write-Verbose "- [($moduleFolderPath]" -Verbose } - $GlobalVariablesObject = Get-Content -Path '${{ inputs.variablesPath }}' | ConvertFrom-Yaml | Select-Object -ExpandProperty variables + $GlobalVariablesObject = Get-Content -Path 'global.variables.yml' | ConvertFrom-Yaml | Select-Object -ExpandProperty variables # Construct Token Configuration Input $tokenConfiguration = @{ From caa197f05488bb564c4b1adcc3a0c45cba14dc17 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sat, 18 Jun 2022 14:04:12 +1000 Subject: [PATCH 21/88] fix --- .github/actions/templates/validateModulePester/action.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/actions/templates/validateModulePester/action.yml b/.github/actions/templates/validateModulePester/action.yml index 32bfd09350..2b45ecae01 100644 --- a/.github/actions/templates/validateModulePester/action.yml +++ b/.github/actions/templates/validateModulePester/action.yml @@ -87,16 +87,16 @@ runs: } ## Enforced Tokens - if ($ValidateOrDeployParameters.ContainsKey('subscriptionId')) { + if (-not [String]::IsNullOrEmpty('${{ env.ARM_SUBSCRIPTION_ID }}')) { $tokenConfiguration.Tokens['subscriptionId'] = '${{ env.ARM_SUBSCRIPTION_ID }}' } - if ($ValidateOrDeployParameters.ContainsKey('managementGroupId')) { + if (-not [String]::IsNullOrEmpty('${{ env.ARM_MGMTGROUP_ID }}')) { $tokenConfiguration.Tokens['managementGroupId'] = '${{ env.ARM_MGMTGROUP_ID }}' } - if ($AdditionalTokens.ContainsKey('deploymentSpId')) { + if (-not [String]::IsNullOrEmpty('${{ env.DEPLOYMENT_SP_ID }}')) { $tokenConfiguration.Tokens['deploymentSpId'] = '${{ env.DEPLOYMENT_SP_ID }}' } - if ($AdditionalTokens.ContainsKey('tenantId')) { + if (-not [String]::IsNullOrEmpty('${{ env.ARM_TENANT_ID }}')) { $tokenConfiguration.Tokens['tenantId'] = '${{ env.ARM_TENANT_ID }}' } From 52452734cfa7f7c635a6a2312680fbd0dbae5975 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sat, 18 Jun 2022 14:54:20 +1000 Subject: [PATCH 22/88] test --- .../helper/Get-DependencyResourceNameList.ps1 | 32 ++++++++----------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 index adb6c4be12..18cafa9ded 100644 --- a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 +++ b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 @@ -33,24 +33,20 @@ function Get-DependencyResourceNameList { } # Replace tokens in dependency parameter files - $Settings = Get-Content -Path (Join-Path $repoRootPath 'settings.json') | ConvertFrom-Json -AsHashtable + $GlobalVariablesObject = Get-Content -Path (Join-Path $PSScriptRoot '..\..\global.variables.yml') | ConvertFrom-Yaml -ErrorAction Stop | Select-Object -ExpandProperty variables - # Add local tokens - if ($Settings.parameterFileTokens.localTokens) { - $tokenMap = @{} - foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{ $token.name = $token.value } - } - Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) + # Construct Token Configuration Input + $tokenConfiguration = @{ + Tokens = @{} + TokenPrefix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenPrefix + TokenSuffix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenSuffix + } - $ConvertTokensInputs = @{ - Tokens = $tokenMap - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix - Verbose = $false - } - $parameterFilePaths | ForEach-Object { $null = Convert-TokensInFile @ConvertTokensInputs -FilePath $_ } + ## Local Tokens from global.variables.yml + foreach ($localToken in $GlobalVariablesObject.Keys | ForEach-Object { if ($PSItem.contains('localToken_')) { $PSItem } }) { + $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '')] = $GlobalVariablesObject.$localToken } + $parameterFilePaths | ForEach-Object { $null = Convert-TokensInFile @tokenConfiguration -FilePath $_ } $dependencyResourceNames = [System.Collections.ArrayList]@() foreach ($parameterFilePath in $parameterFilePaths) { @@ -60,10 +56,8 @@ function Get-DependencyResourceNameList { } } - if ($Settings.parameterFileTokens.localTokens) { - Write-Verbose 'Restoring Tokens' - $parameterFilePaths | ForEach-Object { $null = Convert-TokensInFile @ConvertTokensInputs -FilePath $_ -SwapValueWithName $true } - } + Write-Verbose 'Restoring Tokens' + $parameterFilePaths | ForEach-Object { $null = Convert-TokensInFile @tokenConfiguration -FilePath $_ -SwapValueWithName $true } return $dependencyResourceNames } From 093ab51cfd7ef4704755bfebabe7805ede088faa Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sat, 18 Jun 2022 15:03:59 +1000 Subject: [PATCH 23/88] fix --- .../resourceRemoval/helper/Get-DependencyResourceNameList.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 index 18cafa9ded..85612ebb05 100644 --- a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 +++ b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 @@ -33,7 +33,7 @@ function Get-DependencyResourceNameList { } # Replace tokens in dependency parameter files - $GlobalVariablesObject = Get-Content -Path (Join-Path $PSScriptRoot '..\..\global.variables.yml') | ConvertFrom-Yaml -ErrorAction Stop | Select-Object -ExpandProperty variables + $GlobalVariablesObject = Get-Content -Path (Join-Path $repoRootPath 'global.variables.yml') | ConvertFrom-Yaml -ErrorAction Stop | Select-Object -ExpandProperty variables # Construct Token Configuration Input $tokenConfiguration = @{ From 44544c2de9b5e58f3d596451ad0269af9b78878d Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sun, 19 Jun 2022 22:25:41 +1000 Subject: [PATCH 24/88] Updated ADO - Attempt 1 --- .../jobs.validateModuleDeployment.yml | 43 +++++++++---------- .../jobs.validateModulePester.yml | 26 ++++++++--- 2 files changed, 40 insertions(+), 29 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index 207b45e811..3abfd10b2c 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -92,8 +92,8 @@ jobs: #-------------------------------- - checkout: self - ${{ if ne(parameters.checkoutRepositories, '') }}: - - ? ${{ each checkoutRepository in parameters.checkoutRepositories }} - : - checkout: ${{ checkoutRepository }} + - ${{ each checkoutRepository in parameters.checkoutRepositories }}: + - checkout: ${{ checkoutRepository }} fetchDepth: 1 # the depth of commits to ask Git to fetch; if not set defaults to no limit path: 's/${{ checkoutRepository }}' @@ -164,18 +164,15 @@ jobs: # Load used functions . (Join-Path '$(moduleRepoRoot)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') - # Load Settings File - $Settings = Get-Content -Path (Join-Path '$(moduleRepoRoot)' 'settings.json') | ConvertFrom-Json -AsHashTable - # Construct Token Function Input $ConvertTokensInputs = @{ Tokens = @{} FilePath = Join-Path '$(parametersRepoRoot)' '${{ deploymentBlock.path }}' - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + TokenPrefix = $(tokenPrefix) + TokenSuffix = $(tokenSuffix) } - # Add defaults + # Add enforced tokens $ConvertTokensInputs.Tokens += @{ resourceGroupName = '${{ parameters.resourceGroupName }}' subscriptionId = '${{ parameters.subscriptionId }}' @@ -184,14 +181,18 @@ jobs: deploymentSpId = '$(DEPLOYMENT_SP_ID)' } - # Add local tokens - if ($Settings.parameterFileTokens.localTokens) { - $tokenMap = @{} - foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{ $token.name = $token.value } - } - Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.Tokens += $tokenMap + # Add local (source control) tokens + $tokenMap = @{} + foreach ($token in (Get-ChildItem env: | Where-Object -Property Name -Like "localToken_*")) { + $tokenMap += @{ $token.Name.Replace('localToken_','') = $token.value } + } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.Tokens += $tokenMap + + # Swap 'namePrefix' token if provided as a GitHub secret + if($ConvertTokensInputs.Tokens.namePrefix -and '$(TOKEN_NAMEPREFIX)'){ + Write-Verbose 'Using [namePrefix] token from Azure DevOps Variable Groups' -Verbose + $ConvertTokensInputs.Tokens.namePrefix = '$(TOKEN_NAMEPREFIX)' } # Add custom tokens (passed in via the pipeline) @@ -243,10 +244,9 @@ jobs: $functionInput['parameterFilePath'] = Join-Path '$(ParametersRepoRoot)' '${{ deploymentBlock.path }}' } - $projectSettings = Get-Content -Path 'settings.json' | ConvertFrom-Json - if (-not [String]::IsNullOrEmpty($projectSettings.enableDefaultTelemetry) -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { + if (-not [System.Convert]::ToBoolean('$(enableDefaultTelemetry)') -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { $functionInput['additionalParameters'] += @{ - enableDefaultTelemetry = $projectSettings.enableDefaultTelemetry + enableDefaultTelemetry = [System.Convert]::ToBoolean('$(enableDefaultTelemetry)') } } @@ -296,10 +296,9 @@ jobs: $functionInput['parameterFilePath'] = Join-Path '$(ParametersRepoRoot)' '${{ deploymentBlock.path }}' } - $projectSettings = Get-Content -Path 'settings.json' | ConvertFrom-Json - if (-not [String]::IsNullOrEmpty($projectSettings.enableDefaultTelemetry) -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { + if (-not [System.Convert]::ToBoolean('$(enableDefaultTelemetry)') -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { $functionInput['additionalParameters'] += @{ - enableDefaultTelemetry = $projectSettings.enableDefaultTelemetry + enableDefaultTelemetry = [System.Convert]::ToBoolean('$(enableDefaultTelemetry)') } } diff --git a/.azuredevops/pipelineTemplates/jobs.validateModulePester.yml b/.azuredevops/pipelineTemplates/jobs.validateModulePester.yml index 9e2870a142..2acd6ea320 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModulePester.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModulePester.yml @@ -120,6 +120,7 @@ jobs: # This is the latest tested Pester version. Uncomment the next line in case of a future breaking change in the default version installed on the runner. # @{ Name = 'Pester'; Version = '5.3.1' } @{ Name = 'Az.Resources' } + @{ Name = 'powershell-yaml'; Version = '0.4.2'} ) # Set agent up @@ -145,28 +146,39 @@ jobs: Write-Verbose "- [($moduleFolderPath]" -Verbose } - $enforcedTokenList = @{} + $GlobalVariablesObject = Get-Content -Path (Join-Path '$(System.DefaultWorkingDirectory)' 'global.variables.yml') | ConvertFrom-Yaml | Select-Object -ExpandProperty variables + # Construct Token Configuration Input + $tokenConfiguration = @{ + Tokens = @{} + TokenPrefix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenPrefix + TokenSuffix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenSuffix + } + if (-not [String]::IsNullOrEmpty('${{ parameters.subscriptionId }}')) { - $enforcedTokenList['subscriptionId'] = '${{ parameters.subscriptionId }}' + $tokenConfiguration.Tokens['subscriptionId'] = '${{ parameters.subscriptionId }}' } if (-not [String]::IsNullOrEmpty('${{ parameters.managementGroupId }}')) { - $enforcedTokenList['managementGroupId'] = '${{ parameters.managementGroupId }}' + $tokenConfiguration.Tokens['managementGroupId'] = '${{ parameters.managementGroupId }}' } if (-not [String]::IsNullOrEmpty('$(DEPLOYMENT_SP_ID)')) { - $enforcedTokenList['deploymentSpId'] = '$(DEPLOYMENT_SP_ID)' + $tokenConfiguration.Tokens['deploymentSpId'] = '$(DEPLOYMENT_SP_ID)' } if (-not [String]::IsNullOrEmpty('$(ARM_TENANT_ID)')) { - $enforcedTokenList['tenantId'] = '$(ARM_TENANT_ID)' + $tokenConfiguration.Tokens['tenantId'] = '$(ARM_TENANT_ID)' } + ## Local Tokens from global.variables.yml + foreach ($localToken in $GlobalVariablesObject.Keys | ForEach-Object { if ($PSItem.contains('localToken_')) { $PSItem } }) { + $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '')] = $GlobalVariablesObject.$localToken + # --------------------- # # Invoke Pester test(s) # # --------------------- # Invoke-Pester -Configuration @{ Run = @{ Container = New-PesterContainer -Path (Join-Path '$(moduleRepoRoot)' 'arm' '.global' 'global.module.tests.ps1') -Data @{ - moduleFolderPaths = $moduleFolderPaths - enforcedTokenList = $enforcedTokenList + moduleFolderPaths = $moduleFolderPaths + tokenConfiguration = $tokenConfiguration } } TestResult = @{ From eb8ae5410e8be425ee4832a71183aa25c3cf4a67 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sun, 19 Jun 2022 22:28:38 +1000 Subject: [PATCH 25/88] fixed azure service connection --- global.variables.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global.variables.yml b/global.variables.yml index 56c32c8e68..8302f25c50 100644 --- a/global.variables.yml +++ b/global.variables.yml @@ -58,7 +58,7 @@ variables: vmImage: 'ubuntu-latest' # Use this for Microsoft-hosted agents poolName: '' # Use this for self-hosted agents - serviceConnection: 'carml' + serviceConnection: 'AzureConnection' ###################################### # Source From 4a5f8264ee3a71827ee13e29aa0f5ca788bc07be Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sun, 19 Jun 2022 22:30:45 +1000 Subject: [PATCH 26/88] bug fix --- .azuredevops/pipelineTemplates/jobs.validateModulePester.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModulePester.yml b/.azuredevops/pipelineTemplates/jobs.validateModulePester.yml index 2acd6ea320..7eb9e0c6c4 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModulePester.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModulePester.yml @@ -170,6 +170,7 @@ jobs: ## Local Tokens from global.variables.yml foreach ($localToken in $GlobalVariablesObject.Keys | ForEach-Object { if ($PSItem.contains('localToken_')) { $PSItem } }) { $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '')] = $GlobalVariablesObject.$localToken + } # --------------------- # # Invoke Pester test(s) # From b6fe77041e7f468990aae31c628d7449f44e4c73 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sun, 19 Jun 2022 22:33:55 +1000 Subject: [PATCH 27/88] bug fix --- .../pipelineTemplates/jobs.validateModuleDeployment.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index 3abfd10b2c..1b466106c8 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -168,8 +168,8 @@ jobs: $ConvertTokensInputs = @{ Tokens = @{} FilePath = Join-Path '$(parametersRepoRoot)' '${{ deploymentBlock.path }}' - TokenPrefix = $(tokenPrefix) - TokenSuffix = $(tokenSuffix) + TokenPrefix = '$(tokenPrefix)' + TokenSuffix = '$(tokenSuffix)' } # Add enforced tokens From 1132782b55f5856aa8f5a42eab87cb2083577b7d Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sun, 19 Jun 2022 22:44:50 +1000 Subject: [PATCH 28/88] trial --- .../pipelineTemplates/jobs.validateModuleDeployment.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index 1b466106c8..85a597fb6b 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -123,6 +123,7 @@ jobs: @{ Name = 'Az.Monitor' }, @{ Name = 'Az.OperationalInsights' }, @{ Name = 'Az.RecoveryServices' } + @{ Name = 'powershell-yaml'; Version = '0.4.2'} ) } @@ -202,6 +203,10 @@ jobs: $ConvertTokensInputs.Tokens += $customTokens } + Get-ChildItem env: + + Write-Verbose "Convert Tokens Input:`n $($ConvertTokensInputs | ConvertTo-Json -Depth 10)" -Verbose + # Invoke Token Replacement Functionality $null = Convert-TokensInFile @ConvertTokensInputs From 9638934cca4b6c4cdaca46439f3e579ab2870734 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sun, 19 Jun 2022 22:49:05 +1000 Subject: [PATCH 29/88] test gha --- .github/actions/templates/validateModuleDeployment/action.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index 6cab88c54c..84c1013818 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -167,6 +167,10 @@ runs: $ConvertTokensInputs.Tokens += $customTokens } + Get-ChildItem env: + + Write-Verbose "Convert Tokens Input:`n $($ConvertTokensInputs | ConvertTo-Json -Depth 10)" -Verbose + # Invoke Token Replacement Functionality $null = Convert-TokensInFile @ConvertTokensInputs From 1a1fe3043a64635b4a1f9e89a8d26666d2fed6c0 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sun, 19 Jun 2022 23:13:03 +1000 Subject: [PATCH 30/88] test XASA --- .../pipelineTemplates/jobs.validateModuleDeployment.yml | 2 +- .azuredevops/pipelineTemplates/jobs.validateModulePester.yml | 2 +- .github/actions/templates/validateModuleDeployment/action.yml | 3 ++- .github/actions/templates/validateModulePester/action.yml | 2 +- .../resourceRemoval/helper/Get-DependencyResourceNameList.ps1 | 2 +- utilities/tools/Test-ModuleLocally.ps1 | 2 +- 6 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index 85a597fb6b..86c50108e1 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -185,7 +185,7 @@ jobs: # Add local (source control) tokens $tokenMap = @{} foreach ($token in (Get-ChildItem env: | Where-Object -Property Name -Like "localToken_*")) { - $tokenMap += @{ $token.Name.Replace('localToken_','') = $token.value } + $tokenMap += @{ $token.Name.Replace('localToken_','','OrdinalIgnoreCase') = $token.value } } Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens += $tokenMap diff --git a/.azuredevops/pipelineTemplates/jobs.validateModulePester.yml b/.azuredevops/pipelineTemplates/jobs.validateModulePester.yml index 7eb9e0c6c4..d327b33075 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModulePester.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModulePester.yml @@ -169,7 +169,7 @@ jobs: ## Local Tokens from global.variables.yml foreach ($localToken in $GlobalVariablesObject.Keys | ForEach-Object { if ($PSItem.contains('localToken_')) { $PSItem } }) { - $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '')] = $GlobalVariablesObject.$localToken + $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '','OrdinalIgnoreCase')] = $GlobalVariablesObject.$localToken } # --------------------- # diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index 84c1013818..59cd9d2fbc 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -102,6 +102,7 @@ runs: @{ Name = 'Az.Monitor' }, @{ Name = 'Az.OperationalInsights' }, @{ Name = 'Az.RecoveryServices' } + @{ Name = 'powershell-yaml'; Version = '0.4.2'} ) } @@ -149,7 +150,7 @@ runs: # Add local (source control) tokens $tokenMap = @{} foreach ($token in (Get-ChildItem env: | Where-Object -Property Name -Like "localToken_*")) { - $tokenMap += @{ $token.Name.Replace('localToken_','') = $token.value } + $tokenMap += @{ $token.Name.Replace('localToken_','','OrdinalIgnoreCase') = $token.value } } Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens += $tokenMap diff --git a/.github/actions/templates/validateModulePester/action.yml b/.github/actions/templates/validateModulePester/action.yml index 2b45ecae01..1fc7b6ebe4 100644 --- a/.github/actions/templates/validateModulePester/action.yml +++ b/.github/actions/templates/validateModulePester/action.yml @@ -102,7 +102,7 @@ runs: ## Local Tokens from global.variables.yml foreach ($localToken in $GlobalVariablesObject.Keys | ForEach-Object { if ($PSItem.contains('localToken_')) { $PSItem } }) { - $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '')] = $GlobalVariablesObject.$localToken + $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '','OrdinalIgnoreCase')] = $GlobalVariablesObject.$localToken } # --------------------- # diff --git a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 index 85612ebb05..9401d16e12 100644 --- a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 +++ b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 @@ -44,7 +44,7 @@ function Get-DependencyResourceNameList { ## Local Tokens from global.variables.yml foreach ($localToken in $GlobalVariablesObject.Keys | ForEach-Object { if ($PSItem.contains('localToken_')) { $PSItem } }) { - $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '')] = $GlobalVariablesObject.$localToken + $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '', 'OrdinalIgnoreCase')] = $GlobalVariablesObject.$localToken } $parameterFilePaths | ForEach-Object { $null = Convert-TokensInFile @tokenConfiguration -FilePath $_ } diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index aba8967ce8..3096fd05ad 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -172,7 +172,7 @@ function Test-ModuleLocally { ## Local Tokens from global.variables.yml foreach ($localToken in $GlobalVariablesObject.Keys | ForEach-Object { if ($PSItem.contains('localToken_')) { $PSItem } }) { - $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '')] = $GlobalVariablesObject.$localToken + $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '', 'OrdinalIgnoreCase')] = $GlobalVariablesObject.$localToken } #Add Other Parameter File Tokens (For Testing) From 2419d459b227ad3ed12276cc27594bbe4a7544df Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sun, 19 Jun 2022 23:23:26 +1000 Subject: [PATCH 31/88] test --- .../pipelineTemplates/jobs.validateModuleDeployment.yml | 2 +- .github/actions/templates/validateModuleDeployment/action.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index 86c50108e1..7481f187f9 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -191,7 +191,7 @@ jobs: $ConvertTokensInputs.Tokens += $tokenMap # Swap 'namePrefix' token if provided as a GitHub secret - if($ConvertTokensInputs.Tokens.namePrefix -and '$(TOKEN_NAMEPREFIX)'){ + if($ConvertTokensInputs.Tokens.namePrefix -and (-not [String]::IsNullOrEmpty('$(TOKEN_NAMEPREFIX)'))){ Write-Verbose 'Using [namePrefix] token from Azure DevOps Variable Groups' -Verbose $ConvertTokensInputs.Tokens.namePrefix = '$(TOKEN_NAMEPREFIX)' } diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index 59cd9d2fbc..99265673f0 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -156,7 +156,7 @@ runs: $ConvertTokensInputs.Tokens += $tokenMap # Swap 'namePrefix' token if provided as a GitHub secret - if($ConvertTokensInputs.Tokens.namePrefix -and '${{ env.TOKEN_NAMEPREFIX }}'){ + if($ConvertTokensInputs.Tokens.namePrefix -and (-not [String]::IsNullOrEmpty('${{ env.TOKEN_NAMEPREFIX }}'))){ Write-Verbose 'Using [namePrefix] token from GitHub' -Verbose $ConvertTokensInputs.Tokens.namePrefix = '${{ env.TOKEN_NAMEPREFIX }}' } From 746e978d030970dc72bf7047e2e1d1dadc7a926d Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sun, 19 Jun 2022 23:43:51 +1000 Subject: [PATCH 32/88] test --- .../pipelineTemplates/jobs.validateModuleDeployment.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index 7481f187f9..efcf085409 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -191,9 +191,9 @@ jobs: $ConvertTokensInputs.Tokens += $tokenMap # Swap 'namePrefix' token if provided as a GitHub secret - if($ConvertTokensInputs.Tokens.namePrefix -and (-not [String]::IsNullOrEmpty('$(TOKEN_NAMEPREFIX)'))){ + if($ConvertTokensInputs.Tokens.namePrefix -and (-not [String]::IsNullOrEmpty("$env:TOKEN_NAMEPREFIX"))){ Write-Verbose 'Using [namePrefix] token from Azure DevOps Variable Groups' -Verbose - $ConvertTokensInputs.Tokens.namePrefix = '$(TOKEN_NAMEPREFIX)' + $ConvertTokensInputs.Tokens.namePrefix = "$env:TOKEN_NAMEPREFIX" } # Add custom tokens (passed in via the pipeline) From 69fc55d403080ca6a98a8761c738e3084058306d Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sun, 19 Jun 2022 23:53:47 +1000 Subject: [PATCH 33/88] removed settings.json dependency for ADO --- .../pipelineTemplates/jobs.validateModuleDeployment.yml | 2 -- .github/actions/templates/validateModuleDeployment/action.yml | 2 -- 2 files changed, 4 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index efcf085409..662fa7a112 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -203,8 +203,6 @@ jobs: $ConvertTokensInputs.Tokens += $customTokens } - Get-ChildItem env: - Write-Verbose "Convert Tokens Input:`n $($ConvertTokensInputs | ConvertTo-Json -Depth 10)" -Verbose # Invoke Token Replacement Functionality diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index 99265673f0..432941a359 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -168,8 +168,6 @@ runs: $ConvertTokensInputs.Tokens += $customTokens } - Get-ChildItem env: - Write-Verbose "Convert Tokens Input:`n $($ConvertTokensInputs | ConvertTo-Json -Depth 10)" -Verbose # Invoke Token Replacement Functionality From 3816ac2539eeb855e90f5b5eca91e410059929f5 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Mon, 20 Jun 2022 17:45:20 +1000 Subject: [PATCH 34/88] test removing the condition --- .../pipelineTemplates/jobs.validateModuleDeployment.yml | 4 ++-- .github/actions/templates/validateModuleDeployment/action.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index 662fa7a112..d70b4d5eed 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -191,9 +191,9 @@ jobs: $ConvertTokensInputs.Tokens += $tokenMap # Swap 'namePrefix' token if provided as a GitHub secret - if($ConvertTokensInputs.Tokens.namePrefix -and (-not [String]::IsNullOrEmpty("$env:TOKEN_NAMEPREFIX"))){ + if(-not [String]::IsNullOrEmpty("$env:TOKEN_NAMEPREFIX")){ Write-Verbose 'Using [namePrefix] token from Azure DevOps Variable Groups' -Verbose - $ConvertTokensInputs.Tokens.namePrefix = "$env:TOKEN_NAMEPREFIX" + $ConvertTokensInputs.Tokens['namePrefix'] = "$env:TOKEN_NAMEPREFIX" } # Add custom tokens (passed in via the pipeline) diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index 432941a359..78abedc6fd 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -156,9 +156,9 @@ runs: $ConvertTokensInputs.Tokens += $tokenMap # Swap 'namePrefix' token if provided as a GitHub secret - if($ConvertTokensInputs.Tokens.namePrefix -and (-not [String]::IsNullOrEmpty('${{ env.TOKEN_NAMEPREFIX }}'))){ + if(-not [String]::IsNullOrEmpty('${{ env.TOKEN_NAMEPREFIX }}')){ Write-Verbose 'Using [namePrefix] token from GitHub' -Verbose - $ConvertTokensInputs.Tokens.namePrefix = '${{ env.TOKEN_NAMEPREFIX }}' + $ConvertTokensInputs.Tokens['namePrefix'] = '${{ env.TOKEN_NAMEPREFIX }}' } # Add custom tokens (passed in via the pipeline) From e9ffc12bfb82941d9e2dcf8a7a5bb1289bb270bb Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Mon, 20 Jun 2022 20:39:04 +1000 Subject: [PATCH 35/88] test --- global.variables.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/global.variables.yml b/global.variables.yml index 8302f25c50..6d73d413fb 100644 --- a/global.variables.yml +++ b/global.variables.yml @@ -5,7 +5,7 @@ variables: # Enable or disable CARMLs CI telemetry tracking. Note: This tracks the number of deployments only. # See: https://github.com/Azure/ResourceModules/wiki/The%20library%20-%20Module%20design#telemetry - enableDefaultTelemetry: false + enableDefaultTelemetry: true ###################################### # Local tokens settings @@ -13,8 +13,8 @@ variables: # the 'localToken_' prefix will be removed from the key name when the pipelines run. # e.g. if you have a token in your parameter file as <>, then the token defined in this file looks like "localToken_customKey": 'value' - localToken_namePrefix: 'zu3bx' # A 3-5 character length string, included in the resources names, is overridden if provided as GitHub Secret / ADO Variable - + localToken_namePrefixss: 'zu3bxss' # A 3-5 character length string, included in the resources names, is overridden if provided as GitHub Secret / ADO Variable + localToken_keko: 'leen' ###################################### # global tokens settings ###################################### From 95ed6aff259f646f6aaa463c07a2b369fd452c96 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Mon, 20 Jun 2022 20:53:06 +1000 Subject: [PATCH 36/88] restored token --- global.variables.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/global.variables.yml b/global.variables.yml index 6d73d413fb..600027f56c 100644 --- a/global.variables.yml +++ b/global.variables.yml @@ -13,8 +13,8 @@ variables: # the 'localToken_' prefix will be removed from the key name when the pipelines run. # e.g. if you have a token in your parameter file as <>, then the token defined in this file looks like "localToken_customKey": 'value' - localToken_namePrefixss: 'zu3bxss' # A 3-5 character length string, included in the resources names, is overridden if provided as GitHub Secret / ADO Variable - localToken_keko: 'leen' + localToken_namePrefix: 'token' # A 3-5 character length string, included in the resources names, is overridden if provided as GitHub Secret / ADO Variable + ###################################### # global tokens settings ###################################### From be88d219612a9fd5947db883d1cda968d5efc91a Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Tue, 21 Jun 2022 07:55:28 +1000 Subject: [PATCH 37/88] updates and fetched --- .../pipelineTemplates/jobs.validateModuleDeployment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index d70b4d5eed..e444425298 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -190,7 +190,7 @@ jobs: Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens += $tokenMap - # Swap 'namePrefix' token if provided as a GitHub secret + # Swap 'namePrefix' token if provided as a Azure DevOps variable if(-not [String]::IsNullOrEmpty("$env:TOKEN_NAMEPREFIX")){ Write-Verbose 'Using [namePrefix] token from Azure DevOps Variable Groups' -Verbose $ConvertTokensInputs.Tokens['namePrefix'] = "$env:TOKEN_NAMEPREFIX" From 267e058fd29b4106febcf271fef73d059a917c3e Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Tue, 21 Jun 2022 15:43:13 +1000 Subject: [PATCH 38/88] removed dependency on settings for dep pipeline gha --- .../jobs.validateModuleDeployment.yml | 2 +- .github/workflows/platform.dependencies.yml | 187 +++++++++++------- global.variables.yml | 4 +- 3 files changed, 116 insertions(+), 77 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index e444425298..3c90c98eba 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -122,7 +122,7 @@ jobs: @{ Name = 'Az.KeyVault' }, @{ Name = 'Az.Monitor' }, @{ Name = 'Az.OperationalInsights' }, - @{ Name = 'Az.RecoveryServices' } + @{ Name = 'Az.RecoveryServices' }, @{ Name = 'powershell-yaml'; Version = '0.4.2'} ) } diff --git a/.github/workflows/platform.dependencies.yml b/.github/workflows/platform.dependencies.yml index 1754c3c32c..39999f48bb 100644 --- a/.github/workflows/platform.dependencies.yml +++ b/.github/workflows/platform.dependencies.yml @@ -23,6 +23,7 @@ on: # - 'utilities/pipelines/dependencies/**' env: + variablesPath: 'global.variables.yml' location: 'WestEurope' defaultResourceGroupName: 'validation-rg' resourceGroupNameArtifacts: 'artifacts-rg' @@ -33,6 +34,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: job_deploy_rg: @@ -43,7 +45,8 @@ jobs: strategy: fail-fast: false matrix: - parameterFilePaths: ['validation.parameters.json', 'locks.parameters.json'] + parameterFilePaths: + ['validation.parameters.json', 'locks.parameters.json'] steps: - name: 'Checkout' uses: actions/checkout@v2 @@ -253,7 +256,12 @@ jobs: fail-fast: false matrix: parameterFilePaths: - ['appi.parameters.json', 'aut.parameters.json', 'sol.parameters.json', 'parameters.json'] + [ + 'appi.parameters.json', + 'aut.parameters.json', + 'sol.parameters.json', + 'parameters.json', + ] steps: - name: 'Checkout' uses: actions/checkout@v2 @@ -321,12 +329,18 @@ jobs: # Define PS modules to install on the runner $Modules = @( - @{ Name = 'Az.Storage' } + @{ Name = 'Az.Storage' }, + @{ Name = 'powershell-yaml'; Version = '0.4.2'} ) # Set agent up Set-EnvironmentOnAgent -PSModules $Modules + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} + - name: Azure Login uses: azure/login@v1 with: @@ -342,23 +356,26 @@ jobs: . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'sharedScripts' 'Export-ContentToBlob.ps1') . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') - # Replace tokens in parameter file - $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable + # Construct Token Function Input $ConvertTokensInputs = @{ - FilePath = $parameterFilePath - Tokens = @{} - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + Tokens = @{} + FilePath = $parameterFilePath + TokenPrefix = '${{ env.tokenPrefix }}' + TokenSuffix = '${{ env.tokenSuffix }}' } - # Add local tokens - if ($Settings.parameterFileTokens.localTokens) { - $tokenMap = @{} - foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{ $token.name = $token.value } - } - Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.Tokens += $tokenMap + # Add local (source control) tokens + $tokenMap = @{} + foreach ($token in (Get-ChildItem env: | Where-Object -Property Name -Like "localToken_*")) { + $tokenMap += @{ $token.Name.Replace('localToken_','','OrdinalIgnoreCase') = $token.value } + } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.Tokens += $tokenMap + + # Swap 'namePrefix' token if provided as a GitHub secret + if(-not [String]::IsNullOrEmpty('${{ env.TOKEN_NAMEPREFIX }}')){ + Write-Verbose 'Using [namePrefix] token from GitHub' -Verbose + $ConvertTokensInputs.Tokens['namePrefix'] = '${{ env.TOKEN_NAMEPREFIX }}' } $null = Convert-TokensInFile @ConvertTokensInputs @@ -481,12 +498,18 @@ jobs: # Define PS modules to install on the runner $Modules = @( @{ Name = 'Az.ImageBuilder' }, - @{ Name = 'Az.Storage' } + @{ Name = 'Az.Storage' }, + @{ Name = 'powershell-yaml'; Version = '0.4.2'} ) # Set agent up Set-EnvironmentOnAgent -PSModules $Modules + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} + - name: Azure Login uses: azure/login@v1 with: @@ -512,22 +535,25 @@ jobs: # Load used functions . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') - # Prepare replace tokens in parameter file - $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable + # Construct Token Function Input $ConvertTokensInputs = @{ - Tokens = @{} - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + Tokens = @{} + TokenPrefix = '${{ env.tokenPrefix }}' + TokenSuffix = '${{ env.tokenSuffix }}' } - # Add local tokens - if ($Settings.parameterFileTokens.localTokens) { - $tokenMap = @{} - foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{ $token.name = $token.value } - } - Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.Tokens += $tokenMap + # Add local (source control) tokens + $tokenMap = @{} + foreach ($token in (Get-ChildItem env: | Where-Object -Property Name -Like "localToken_*")) { + $tokenMap += @{ $token.Name.Replace('localToken_','','OrdinalIgnoreCase') = $token.value } + } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.Tokens += $tokenMap + + # Swap 'namePrefix' token if provided as a GitHub secret + if(-not [String]::IsNullOrEmpty('${{ env.TOKEN_NAMEPREFIX }}')){ + Write-Verbose 'Using [namePrefix] token from GitHub' -Verbose + $ConvertTokensInputs.Tokens['namePrefix'] = '${{ env.TOKEN_NAMEPREFIX }}' } # Retrieving parameters from previous job outputs and parameter files @@ -778,7 +804,7 @@ jobs: 'lb.parameters.json', 'lb.min.parameters.json', 'fw.parameters.json', - 'fw.additional.parameters.json' + 'fw.additional.parameters.json', ] steps: - name: 'Checkout' @@ -974,12 +1000,18 @@ jobs: # Define PS modules to install on the runner $Modules = @( - @{ Name = 'Az.KeyVault' } + @{ Name = 'Az.KeyVault' }, + @{ Name = 'powershell-yaml'; Version = '0.4.2'} ) # Set agent up Set-EnvironmentOnAgent -PSModules $Modules + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} + - name: Azure Login uses: azure/login@v1 with: @@ -995,31 +1027,29 @@ jobs: # Load used functions . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') - # Replace tokens in parameter file - $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable + # Construct Token Function Input $ConvertTokensInputs = @{ - FilePath = $parameterFilePath - Tokens = @{} - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + Tokens = @{} + TokenPrefix = '${{ env.tokenPrefix }}' + TokenSuffix = '${{ env.tokenSuffix }}' } - $NoprConvertTokensInputs = @{ - FilePath = $noprParameterFilePath - Tokens = @{} - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + + # Add local (source control) tokens + $tokenMap = @{} + foreach ($token in (Get-ChildItem env: | Where-Object -Property Name -Like "localToken_*")) { + $tokenMap += @{ $token.Name.Replace('localToken_','','OrdinalIgnoreCase') = $token.value } } - if ($Settings.parameterFileTokens.localTokens) { - $tokenMap = @{} - foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{ $token.name = $token.value } - } - Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.Tokens += $tokenMap - $NoprConvertTokensInputs.Tokens += $tokenMap + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.Tokens += $tokenMap + + # Swap 'namePrefix' token if provided as a GitHub secret + if(-not [String]::IsNullOrEmpty('${{ env.TOKEN_NAMEPREFIX }}')){ + Write-Verbose 'Using [namePrefix] token from GitHub' -Verbose + $ConvertTokensInputs.Tokens['namePrefix'] = '${{ env.TOKEN_NAMEPREFIX }}' } - $null = Convert-TokensInFile @ConvertTokensInputs - $null = Convert-TokensInFile @NoprConvertTokensInputs + + $null = Convert-TokensInFile @ConvertTokensInputs -FilePath $parameterFilePath + $null = Convert-TokensInFile @NoprConvertTokensInputs -FilePath $noprParameterFilePath # Get key vault name $keyVaultParameters = (ConvertFrom-Json (Get-Content -Path $parameterFilePath -Raw)).parameters @@ -1028,7 +1058,6 @@ jobs: $noprKeyVaultParameters = (ConvertFrom-Json (Get-Content -Path $noprParameterFilePath -Raw)).parameters $noprKeyVaultName = $noprKeyVaultParameters.name.value - # Generate values $usernameString = ( -join ((65..90) + (97..122) | Get-Random -Count 9 -SetSeed 1 | ForEach-Object { [char]$_ + "$_" })).substring(0, 19) # max length $userName = ConvertTo-SecureString -String $usernameString -AsPlainText -Force @@ -1037,10 +1066,11 @@ jobs: $vpnSharedKeyString = (New-Guid).Guid.SubString(0, 32) $vpnSharedKey = ConvertTo-SecureString -String $vpnSharedKeyString -AsPlainText -Force - $namePrefixToken = $Settings.parameterFileTokens.localTokens | Where-Object { $_.name -eq 'namePrefix' } + $namePrefixToken = $ConvertTokensInputs.Tokens['namePrefix'] + $certInputObject = @{ - Subject = 'CN=*.{0}.onmicrosoft.com' -f $namePrefixToken.value - DnsName = '*.{0}.onmicrosoft.com' -f $namePrefixToken.value + Subject = 'CN=*.{0}.onmicrosoft.com' -f $namePrefixToken + DnsName = '*.{0}.onmicrosoft.com' -f $namePrefixToken CertStoreLocation = 'cert:\LocalMachine\My' KeyExportPolicy = 'Exportable' Provider = 'Microsoft Enhanced RSA and AES Cryptographic Provider' @@ -1154,12 +1184,18 @@ jobs: # Define PS modules to install on the runner $Modules = @( - @{ Name = 'Az.KeyVault' } + @{ Name = 'Az.KeyVault' }, + @{ Name = 'powershell-yaml'; Version = '0.4.2'} ) # Set agent up Set-EnvironmentOnAgent -PSModules $Modules + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} + - name: Azure Login uses: azure/login@v1 with: @@ -1174,23 +1210,26 @@ jobs: # Load used functions . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') - # Replace tokens in parameter file - $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable + # Construct Token Function Input $ConvertTokensInputs = @{ - FilePath = $parameterFilePath - Tokens = @{} - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + Tokens = @{} + FilePath = $parameterFilePath + TokenPrefix = '${{ env.tokenPrefix }}' + TokenSuffix = '${{ env.tokenSuffix }}' } - # Add local tokens - if ($Settings.parameterFileTokens.localTokens) { - $tokenMap = @{} - foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{ $token.name = $token.value } - } - Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.Tokens += $tokenMap + # Add local (source control) tokens + $tokenMap = @{} + foreach ($token in (Get-ChildItem env: | Where-Object -Property Name -Like "localToken_*")) { + $tokenMap += @{ $token.Name.Replace('localToken_','','OrdinalIgnoreCase') = $token.value } + } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.Tokens += $tokenMap + + # Swap 'namePrefix' token if provided as a GitHub secret + if(-not [String]::IsNullOrEmpty('${{ env.TOKEN_NAMEPREFIX }}')){ + Write-Verbose 'Using [namePrefix] token from GitHub' -Verbose + $ConvertTokensInputs.Tokens['namePrefix'] = '${{ env.TOKEN_NAMEPREFIX }}' } $null = Convert-TokensInFile @ConvertTokensInputs @@ -1306,7 +1345,7 @@ jobs: '11.azfw.parameters.json', '12.bastion.parameters.json', '13.bastion.parameters.json', - 'parameters.json' + 'parameters.json', ] steps: - name: 'Checkout' diff --git a/global.variables.yml b/global.variables.yml index 600027f56c..8302f25c50 100644 --- a/global.variables.yml +++ b/global.variables.yml @@ -5,7 +5,7 @@ variables: # Enable or disable CARMLs CI telemetry tracking. Note: This tracks the number of deployments only. # See: https://github.com/Azure/ResourceModules/wiki/The%20library%20-%20Module%20design#telemetry - enableDefaultTelemetry: true + enableDefaultTelemetry: false ###################################### # Local tokens settings @@ -13,7 +13,7 @@ variables: # the 'localToken_' prefix will be removed from the key name when the pipelines run. # e.g. if you have a token in your parameter file as <>, then the token defined in this file looks like "localToken_customKey": 'value' - localToken_namePrefix: 'token' # A 3-5 character length string, included in the resources names, is overridden if provided as GitHub Secret / ADO Variable + localToken_namePrefix: 'zu3bx' # A 3-5 character length string, included in the resources names, is overridden if provided as GitHub Secret / ADO Variable ###################################### # global tokens settings From 51e2d774bb5444addee18706ea17801ae01c54d9 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Tue, 21 Jun 2022 15:50:10 +1000 Subject: [PATCH 39/88] test --- .github/workflows/platform.dependencies.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/platform.dependencies.yml b/.github/workflows/platform.dependencies.yml index 39999f48bb..4361ec38dc 100644 --- a/.github/workflows/platform.dependencies.yml +++ b/.github/workflows/platform.dependencies.yml @@ -52,6 +52,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: From 7faa4ad77dc589ce93cb6562e0a034d486414b19 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Tue, 21 Jun 2022 16:02:06 +1000 Subject: [PATCH 40/88] added env. agent --- .github/workflows/platform.dependencies.yml | 155 ++++++++++++++++---- 1 file changed, 124 insertions(+), 31 deletions(-) diff --git a/.github/workflows/platform.dependencies.yml b/.github/workflows/platform.dependencies.yml index 4361ec38dc..7b4be9025f 100644 --- a/.github/workflows/platform.dependencies.yml +++ b/.github/workflows/platform.dependencies.yml @@ -83,7 +83,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -113,7 +116,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' id: deploy_msi uses: ./.github/actions/templates/validateModuleDeployment @@ -153,7 +159,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -181,7 +190,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -209,7 +221,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -237,7 +252,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -271,7 +289,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -300,7 +321,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -417,7 +441,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -450,7 +477,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' id: deploy_imgt uses: ./.github/actions/templates/validateModuleDeployment @@ -492,7 +522,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Setup agent' shell: pwsh run: | @@ -623,7 +656,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -651,7 +687,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -679,7 +718,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -708,7 +750,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -745,7 +790,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -776,7 +824,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -815,7 +866,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -845,7 +899,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -875,7 +932,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -905,7 +965,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -936,7 +999,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -969,7 +1035,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -1153,7 +1222,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -1284,7 +1356,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -1312,7 +1387,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -1356,7 +1434,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -1386,7 +1467,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -1414,7 +1498,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -1444,7 +1531,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -1472,7 +1562,10 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: From 3c23e2920c719fffc3ab1c9d3a907dff0ab3379e Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Tue, 21 Jun 2022 16:31:25 +1000 Subject: [PATCH 41/88] bug fix --- .github/workflows/platform.dependencies.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/platform.dependencies.yml b/.github/workflows/platform.dependencies.yml index 7b4be9025f..c1da891de4 100644 --- a/.github/workflows/platform.dependencies.yml +++ b/.github/workflows/platform.dependencies.yml @@ -1122,7 +1122,7 @@ jobs: } $null = Convert-TokensInFile @ConvertTokensInputs -FilePath $parameterFilePath - $null = Convert-TokensInFile @NoprConvertTokensInputs -FilePath $noprParameterFilePath + $null = Convert-TokensInFile @ConvertTokensInputs -FilePath $noprParameterFilePath # Get key vault name $keyVaultParameters = (ConvertFrom-Json (Get-Content -Path $parameterFilePath -Raw)).parameters From ea0c78a31fb728b233845e3bed4add9bc544c87f Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Wed, 22 Jun 2022 17:04:39 +1000 Subject: [PATCH 42/88] updated ado --- .../platform.dependencies.yml | 125 ++++++++++-------- 1 file changed, 71 insertions(+), 54 deletions(-) diff --git a/.azuredevops/platformPipelines/platform.dependencies.yml b/.azuredevops/platformPipelines/platform.dependencies.yml index 33013e95ea..b4224ed2ce 100644 --- a/.azuredevops/platformPipelines/platform.dependencies.yml +++ b/.azuredevops/platformPipelines/platform.dependencies.yml @@ -246,22 +246,26 @@ stages: . (Join-Path '$(Build.SourcesDirectory)' 'utilities' 'pipelines' 'sharedScripts' 'Export-ContentToBlob.ps1') . (Join-Path '$(Build.SourcesDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') - # Replace tokens in parameter file - $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json -AsHashTable + # Construct Token Function Input $ConvertTokensInputs = @{ - FilePath = $parameterFilePath - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + Tokens = @{} + FilePath = $parameterFilePath + TokenPrefix = '$(tokenPrefix)' + TokenSuffix = '$(tokenSuffix)' } - # Add local tokens - if ($Settings.parameterFileTokens.localTokens) { - $tokenMap = @{} - foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{ $token.name = $token.value } - } - Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.Tokens = $tokenMap + # Add local (source control) tokens + $tokenMap = @{} + foreach ($token in (Get-ChildItem env: | Where-Object -Property Name -Like "localToken_*")) { + $tokenMap += @{ $token.Name.Replace('localToken_','','OrdinalIgnoreCase') = $token.value } + } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.Tokens += $tokenMap + + # Swap 'namePrefix' token if provided as a Azure DevOps variable + if(-not [String]::IsNullOrEmpty("$env:TOKEN_NAMEPREFIX")){ + Write-Verbose 'Using [namePrefix] token from Azure DevOps Variable Groups' -Verbose + $ConvertTokensInputs.Tokens['namePrefix'] = "$env:TOKEN_NAMEPREFIX" } $null = Convert-TokensInFile @ConvertTokensInputs @@ -373,19 +377,25 @@ stages: # Load used functions . (Join-Path '$(Build.SourcesDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') - # Prepare replace tokens in parameter file - $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json -AsHashTable + # Construct Token Function Input $ConvertTokensInputs = @{ - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + Tokens = @{} + TokenPrefix = '$(tokenPrefix)' + TokenSuffix = '$(tokenSuffix)' } - if ($Settings.parameterFileTokens.localTokens) { - $tokenMap = @{} - foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{ $token.name = $token.value } - } - Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.Tokens = $tokenMap + + # Add local (source control) tokens + $tokenMap = @{} + foreach ($token in (Get-ChildItem env: | Where-Object -Property Name -Like "localToken_*")) { + $tokenMap += @{ $token.Name.Replace('localToken_','','OrdinalIgnoreCase') = $token.value } + } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.Tokens += $tokenMap + + # Swap 'namePrefix' token if provided as a Azure DevOps variable + if(-not [String]::IsNullOrEmpty("$env:TOKEN_NAMEPREFIX")){ + Write-Verbose 'Using [namePrefix] token from Azure DevOps Variable Groups' -Verbose + $ConvertTokensInputs.Tokens['namePrefix'] = "$env:TOKEN_NAMEPREFIX" } # Retrieving parameters from previous job outputs and parameter files @@ -696,29 +706,29 @@ stages: # Load used functions . (Join-Path '$(Build.SourcesDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') - # Replace tokens in parameter file - $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json -AsHashTable + # Construct Token Function Input $ConvertTokensInputs = @{ - FilePath = $parameterFilePath - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + Tokens = @{} + TokenPrefix = '$(tokenPrefix)' + TokenSuffix = '$(tokenSuffix)' } - $NoprConvertTokensInputs = @{ - FilePath = $noprParameterFilePath - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + + # Add local (source control) tokens + $tokenMap = @{} + foreach ($token in (Get-ChildItem env: | Where-Object -Property Name -Like "localToken_*")) { + $tokenMap += @{ $token.Name.Replace('localToken_','','OrdinalIgnoreCase') = $token.value } } - if ($Settings.parameterFileTokens.localTokens) { - $tokenMap = @{} - foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{ $token.name = $token.value } - } - Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.Tokens = $tokenMap - $NoprConvertTokensInputs.Tokens = $tokenMap + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.Tokens += $tokenMap + + # Swap 'namePrefix' token if provided as a Azure DevOps variable + if(-not [String]::IsNullOrEmpty("$env:TOKEN_NAMEPREFIX")){ + Write-Verbose 'Using [namePrefix] token from Azure DevOps Variable Groups' -Verbose + $ConvertTokensInputs.Tokens['namePrefix'] = "$env:TOKEN_NAMEPREFIX" } - $null = Convert-TokensInFile @ConvertTokensInputs - $null = Convert-TokensInFile @NoprConvertTokensInputs + + $null = Convert-TokensInFile @ConvertTokensInputs -FilePath $parameterFilePath + $null = Convert-TokensInFile @NoprConvertTokensInputs -FilePath $noprParameterFilePath # Get key vault name $keyVaultParameters = (ConvertFrom-Json (Get-Content -Path $parameterFilePath -Raw)).parameters @@ -833,21 +843,28 @@ stages: # Load used functions . (Join-Path '$(Build.SourcesDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') - # Replace tokens in parameter file - $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json -AsHashTable + # Construct Token Function Input $ConvertTokensInputs = @{ + Tokens = @{} FilePath = $parameterFilePath - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + TokenPrefix = '$(tokenPrefix)' + TokenSuffix = '$(tokenSuffix)' } - if ($Settings.parameterFileTokens.localTokens) { - $tokenMap = @{} - foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{ $token.name = $token.value } - } - Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.Tokens = $tokenMap + + # Add local (source control) tokens + $tokenMap = @{} + foreach ($token in (Get-ChildItem env: | Where-Object -Property Name -Like "localToken_*")) { + $tokenMap += @{ $token.Name.Replace('localToken_','','OrdinalIgnoreCase') = $token.value } + } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.Tokens += $tokenMap + + # Swap 'namePrefix' token if provided as a Azure DevOps variable + if(-not [String]::IsNullOrEmpty("$env:TOKEN_NAMEPREFIX")){ + Write-Verbose 'Using [namePrefix] token from Azure DevOps Variable Groups' -Verbose + $ConvertTokensInputs.Tokens['namePrefix'] = "$env:TOKEN_NAMEPREFIX" } + $null = Convert-TokensInFile @ConvertTokensInputs # Get key vault name From 5af2f83b7ecd6ca38c711cc3d3004b73835fcefe Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Thu, 23 Jun 2022 11:45:53 +1000 Subject: [PATCH 43/88] test with no policies --- .../platform.dependencies.yml | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/.azuredevops/platformPipelines/platform.dependencies.yml b/.azuredevops/platformPipelines/platform.dependencies.yml index b4224ed2ce..1e1862326c 100644 --- a/.azuredevops/platformPipelines/platform.dependencies.yml +++ b/.azuredevops/platformPipelines/platform.dependencies.yml @@ -134,23 +134,23 @@ stages: templateFilePath: $(templateFilePath) displayName: Function App - - stage: deploy_pa - displayName: Deploy policy assignment - dependsOn: - - deploy_rg - variables: - resourceType: 'Microsoft.Authorization/policyAssignments' - templateFilePath: $(modulesPath)/$(resourceType)/deploy.bicep - jobs: - - template: /.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml - parameters: - deploymentBlocks: - - path: $(dependencyPath)/$(resourceType)/parameters/mg.parameters.json - templateFilePath: $(templateFilePath) - displayName: Policy assignment (mg) - - path: $(dependencyPath)/$(resourceType)/parameters/sub.parameters.json - templateFilePath: $(templateFilePath) - displayName: Policy assignment (sub) + #- stage: deploy_pa + # displayName: Deploy policy assignment + # dependsOn: + # - deploy_rg + # variables: + # resourceType: 'Microsoft.Authorization/policyAssignments' + # templateFilePath: $(modulesPath)/$(resourceType)/deploy.bicep + # jobs: + # - template: /.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml + # parameters: + # deploymentBlocks: + # - path: $(dependencyPath)/$(resourceType)/parameters/mg.parameters.json + # templateFilePath: $(templateFilePath) + # displayName: Policy assignment (mg) + # - path: $(dependencyPath)/$(resourceType)/parameters/sub.parameters.json + # templateFilePath: $(templateFilePath) + # displayName: Policy assignment (sub) - stage: deploy_evh displayName: Deploy event hub From e8fa7e441953097b8a4349791b32a085d3afa31b Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Fri, 24 Jun 2022 16:16:38 +1000 Subject: [PATCH 44/88] bug fix in kv tokens input --- .azuredevops/platformPipelines/platform.dependencies.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azuredevops/platformPipelines/platform.dependencies.yml b/.azuredevops/platformPipelines/platform.dependencies.yml index 1e1862326c..c54a7060ba 100644 --- a/.azuredevops/platformPipelines/platform.dependencies.yml +++ b/.azuredevops/platformPipelines/platform.dependencies.yml @@ -728,7 +728,7 @@ stages: } $null = Convert-TokensInFile @ConvertTokensInputs -FilePath $parameterFilePath - $null = Convert-TokensInFile @NoprConvertTokensInputs -FilePath $noprParameterFilePath + $null = Convert-TokensInFile @ConvertTokensInputs -FilePath $noprParameterFilePath # Get key vault name $keyVaultParameters = (ConvertFrom-Json (Get-Content -Path $parameterFilePath -Raw)).parameters From d539d5b7cb18f5be54abb25e9143dafc6aeaa678 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Mon, 4 Jul 2022 15:26:29 +1000 Subject: [PATCH 45/88] Users/ahmad/token update settings (#21) * Moved to settings.yml --- .../ms.network.applicationsecuritygroups.yml | 2 +- .../pipelineTemplates/jobs.validateModulePester.yml | 4 ++-- .../platformPipelines/platform.dependencies.yml | 2 +- .../platformPipelines/platform.updateReadMe.yml | 2 +- .azuredevops/platformPipelines/platform.wiki-sync.yml | 2 +- .../templates/setEnvironmentVariables/action.yml | 2 +- .../actions/templates/validateModulePester/action.yml | 4 ++-- .../workflows/ms.network.applicationsecuritygroups.yml | 2 +- .github/workflows/platform.dependencies.yml | 9 ++++++--- modules/.global/global.module.tests.ps1 | 2 +- global.variables.yml => settings.yml | 0 .../diskEncryptionSets/parameters/parameters.json | 6 +++--- .../helper/Get-DependencyResourceNameList.ps1 | 4 ++-- utilities/tools/Test-ModuleLocally.ps1 | 10 +++++----- 14 files changed, 27 insertions(+), 24 deletions(-) rename global.variables.yml => settings.yml (100%) diff --git a/.azuredevops/modulePipelines/ms.network.applicationsecuritygroups.yml b/.azuredevops/modulePipelines/ms.network.applicationsecuritygroups.yml index 41234d8952..9523341f10 100644 --- a/.azuredevops/modulePipelines/ms.network.applicationsecuritygroups.yml +++ b/.azuredevops/modulePipelines/ms.network.applicationsecuritygroups.yml @@ -27,7 +27,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/applicationSecurityGroups' diff --git a/.azuredevops/pipelineTemplates/jobs.validateModulePester.yml b/.azuredevops/pipelineTemplates/jobs.validateModulePester.yml index 214a8aa888..96d2550f07 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModulePester.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModulePester.yml @@ -146,7 +146,7 @@ jobs: Write-Verbose "- [($moduleFolderPath]" -Verbose } - $GlobalVariablesObject = Get-Content -Path (Join-Path '$(System.DefaultWorkingDirectory)' 'global.variables.yml') | ConvertFrom-Yaml | Select-Object -ExpandProperty variables + $GlobalVariablesObject = Get-Content -Path (Join-Path '$(System.DefaultWorkingDirectory)' 'settings.yml') | ConvertFrom-Yaml | Select-Object -ExpandProperty variables # Construct Token Configuration Input $tokenConfiguration = @{ Tokens = @{} @@ -167,7 +167,7 @@ jobs: $tokenConfiguration.Tokens['tenantId'] = '$(ARM_TENANT_ID)' } - ## Local Tokens from global.variables.yml + ## Local Tokens from settings.yml foreach ($localToken in $GlobalVariablesObject.Keys | ForEach-Object { if ($PSItem.contains('localToken_')) { $PSItem } }) { $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '','OrdinalIgnoreCase')] = $GlobalVariablesObject.$localToken } diff --git a/.azuredevops/platformPipelines/platform.dependencies.yml b/.azuredevops/platformPipelines/platform.dependencies.yml index 7b8b0df856..1497182bb9 100644 --- a/.azuredevops/platformPipelines/platform.dependencies.yml +++ b/.azuredevops/platformPipelines/platform.dependencies.yml @@ -25,7 +25,7 @@ trigger: none # - 'utilities/pipelines/dependencies/**' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: dependencyPath value: 'utilities/pipelines/dependencies' diff --git a/.azuredevops/platformPipelines/platform.updateReadMe.yml b/.azuredevops/platformPipelines/platform.updateReadMe.yml index 928e74bbd2..f5da470b69 100644 --- a/.azuredevops/platformPipelines/platform.updateReadMe.yml +++ b/.azuredevops/platformPipelines/platform.updateReadMe.yml @@ -13,7 +13,7 @@ trigger: - 'modules/**/deploy.json' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - name: pipelinePrincipalGitUserName value: 'CARMLPipelinePrincipal' - name: pipelinePrincipalGitUserEmail diff --git a/.azuredevops/platformPipelines/platform.wiki-sync.yml b/.azuredevops/platformPipelines/platform.wiki-sync.yml index 0d9809af6f..abf22c1d2f 100644 --- a/.azuredevops/platformPipelines/platform.wiki-sync.yml +++ b/.azuredevops/platformPipelines/platform.wiki-sync.yml @@ -16,7 +16,7 @@ trigger: variables: - group: 'PLATFORM_VARIABLES' - - template: '../../global.variables.yml' + - template: '../../settings.yml' - name: pipelinePrincipalGitUserName value: 'CARMLPipelinePrincipal' - name: pipelinePrincipalGitUserEmail diff --git a/.github/actions/templates/setEnvironmentVariables/action.yml b/.github/actions/templates/setEnvironmentVariables/action.yml index ee49e32e82..208b58e390 100644 --- a/.github/actions/templates/setEnvironmentVariables/action.yml +++ b/.github/actions/templates/setEnvironmentVariables/action.yml @@ -16,7 +16,7 @@ ## |==================================================================================================================================================================| ## | Parameter | Required | Default | Description | Example | ## |--------------------|----------|---------|------------------------------------------------------------------------------------------|-----------------------------| -## | variablesPath | true | '' | The path to the YAML file that contains the key value pairs for environment variables | './global.variables.yml' | +## | variablesPath | true | '' | The path to the YAML file that contains the key value pairs for environment variables | './settings.yml' | ## |==================================================================================================================================================================| ## ##---------------------------------------------## diff --git a/.github/actions/templates/validateModulePester/action.yml b/.github/actions/templates/validateModulePester/action.yml index 2ff6ca3a13..aeae413af8 100644 --- a/.github/actions/templates/validateModulePester/action.yml +++ b/.github/actions/templates/validateModulePester/action.yml @@ -77,7 +77,7 @@ runs: Write-Verbose "- [($moduleFolderPath]" -Verbose } - $GlobalVariablesObject = Get-Content -Path 'global.variables.yml' | ConvertFrom-Yaml | Select-Object -ExpandProperty variables + $GlobalVariablesObject = Get-Content -Path 'settings.yml' | ConvertFrom-Yaml | Select-Object -ExpandProperty variables # Construct Token Configuration Input $tokenConfiguration = @{ @@ -100,7 +100,7 @@ runs: $tokenConfiguration.Tokens['tenantId'] = '${{ env.ARM_TENANT_ID }}' } - ## Local Tokens from global.variables.yml + ## Local Tokens from settings.yml foreach ($localToken in $GlobalVariablesObject.Keys | ForEach-Object { if ($PSItem.contains('localToken_')) { $PSItem } }) { $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '','OrdinalIgnoreCase')] = $GlobalVariablesObject.$localToken } diff --git a/.github/workflows/ms.network.applicationsecuritygroups.yml b/.github/workflows/ms.network.applicationsecuritygroups.yml index 175c3e8e7a..9e5fc7c34f 100644 --- a/.github/workflows/ms.network.applicationsecuritygroups.yml +++ b/.github/workflows/ms.network.applicationsecuritygroups.yml @@ -26,7 +26,7 @@ on: - '!utilities/pipelines/dependencies/**' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/applicationSecurityGroups' workflowPath: '.github/workflows/ms.network.applicationsecuritygroups.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} diff --git a/.github/workflows/platform.dependencies.yml b/.github/workflows/platform.dependencies.yml index f86d51207d..48b4bd13a4 100644 --- a/.github/workflows/platform.dependencies.yml +++ b/.github/workflows/platform.dependencies.yml @@ -23,7 +23,7 @@ on: # - 'utilities/pipelines/dependencies/**' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' location: 'WestEurope' defaultResourceGroupName: 'validation-rg' resourceGroupNameArtifacts: 'artifacts-rg' @@ -1356,11 +1356,14 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Set environment variables + uses: ./.github/actions/templates/setEnvironmentVariables + with: + variablesPath: ${{ env.variablesPath }} - name: 'Deploy module' uses: ./.github/actions/templates/validateModuleDeployment with: - templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' + templateFilePath: 'modules/${{ env.namespace }}/deploy.bicep' parameterFilePath: '${{ env.dependencyPath }}/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.location }}' resourceGroupName: '${{ env.defaultResourceGroupName }}' diff --git a/modules/.global/global.module.tests.ps1 b/modules/.global/global.module.tests.ps1 index 8a320db7b9..843aac8a12 100644 --- a/modules/.global/global.module.tests.ps1 +++ b/modules/.global/global.module.tests.ps1 @@ -928,7 +928,7 @@ Describe 'Deployment template tests' -Tag Template { foreach ($moduleFolderPath in $moduleFolderPaths) { if (Test-Path (Join-Path $moduleFolderPath '.test')) { - $TestFilePaths = (Get-ChildItem (Join-Path -Path $moduleFolderPath -ChildPath '.test' -AdditionalChildPath '.parameters.json') -Recurse -Force).FullName + $TestFilePaths = (Get-ChildItem (Join-Path -Path $moduleFolderPath -ChildPath '.test') -Recurse -Force).FullName foreach ($TestFilePath in $TestFilePaths) { foreach ($token in $tokenConfiguration.Tokens.Keys) { $parameterFileTokenTestCases += @{ diff --git a/global.variables.yml b/settings.yml similarity index 100% rename from global.variables.yml rename to settings.yml diff --git a/utilities/pipelines/dependencies/Microsoft.Compute/diskEncryptionSets/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Compute/diskEncryptionSets/parameters/parameters.json index 8fab464122..9e9aa46c42 100644 --- a/utilities/pipelines/dependencies/Microsoft.Compute/diskEncryptionSets/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Compute/diskEncryptionSets/parameters/parameters.json @@ -5,11 +5,11 @@ "name": { "value": "adp-<>-az-des-x-001" }, - "keyVaultId": { + "keyVaultResourceId": { "value": "/subscriptions/<>/resourceGroups/validation-rg/providers/Microsoft.KeyVault/vaults/adp-<>-az-kv-x-001" }, - "keyUrl": { - "value": "https://adp-<>-az-kv-x-001.vault.azure.net/keys/keyEncryptionKey/bc3bb46d95c64367975d722f473eeae5" // ID must be updated for new keys + "keyName": { + "value": "keyEncryptionKey" } } } diff --git a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 index 9401d16e12..af1fa395fa 100644 --- a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 +++ b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 @@ -33,7 +33,7 @@ function Get-DependencyResourceNameList { } # Replace tokens in dependency parameter files - $GlobalVariablesObject = Get-Content -Path (Join-Path $repoRootPath 'global.variables.yml') | ConvertFrom-Yaml -ErrorAction Stop | Select-Object -ExpandProperty variables + $GlobalVariablesObject = Get-Content -Path (Join-Path $repoRootPath 'settings.yml') | ConvertFrom-Yaml -ErrorAction Stop | Select-Object -ExpandProperty variables # Construct Token Configuration Input $tokenConfiguration = @{ @@ -42,7 +42,7 @@ function Get-DependencyResourceNameList { TokenSuffix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenSuffix } - ## Local Tokens from global.variables.yml + ## Local Tokens from settings.yml foreach ($localToken in $GlobalVariablesObject.Keys | ForEach-Object { if ($PSItem.contains('localToken_')) { $PSItem } }) { $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '', 'OrdinalIgnoreCase')] = $GlobalVariablesObject.$localToken } diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index dfcd621a9a..bbcb308a2c 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -10,7 +10,7 @@ subscription Id, principal Id, tenant ID and other parameters that need to be to .PARAMETER TemplateFilePath Mandatory. Path to the Bicep/ARM module that is being tested -.PARAMETER ParameterFilePath +.PARAMETER TestFilePath Optional. Path to the template file/folder that is to be tested with the template file. Defaults to the module's default '.parameter' folder. Will be used if the DeploymentTest/ValidationTest switches are set. .PARAMETER PesterTest @@ -35,7 +35,7 @@ Optional. A hashtable parameter that contains custom tokens to be replaced in th $TestModuleLocallyInput = @{ TemplateFilePath = 'C:\Microsoft.Network\routeTables\deploy.bicep' - ParameterFilePath = 'C:\Microsoft.Network\routeTables\.test\parameters.json' + TestFilePath = 'C:\Microsoft.Network\routeTables\.test\parameters.json' PesterTest = $false DeploymentTest = $false ValidationTest = $true @@ -115,7 +115,7 @@ function Test-ModuleLocally { [string] $TemplateFilePath, [Parameter(Mandatory = $false)] - [string] $testFilePath = (Join-Path (Split-Path $TemplateFilePath -Parent) '.test'), + [string] $TestFilePath = (Join-Path (Split-Path $TemplateFilePath -Parent) '.test'), [Parameter(Mandatory = $false)] [Psobject] $ValidateOrDeployParameters = @{}, @@ -147,7 +147,7 @@ function Test-ModuleLocally { # TOKENS Replacement # ################ - $GlobalVariablesObject = Get-Content -Path (Join-Path $PSScriptRoot '..\..\global.variables.yml') | ConvertFrom-Yaml -ErrorAction Stop | Select-Object -ExpandProperty variables + $GlobalVariablesObject = Get-Content -Path (Join-Path $PSScriptRoot '..\..\settings.yml') | ConvertFrom-Yaml -ErrorAction Stop | Select-Object -ExpandProperty variables # Construct Token Configuration Input $tokenConfiguration = @{ @@ -170,7 +170,7 @@ function Test-ModuleLocally { $tokenConfiguration.Tokens['tenantId'] = $AdditionalTokens['tenantId'] } - ## Local Tokens from global.variables.yml + ## Local Tokens from settings.yml foreach ($localToken in $GlobalVariablesObject.Keys | ForEach-Object { if ($PSItem.contains('localToken_')) { $PSItem } }) { $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '', 'OrdinalIgnoreCase')] = $GlobalVariablesObject.$localToken } From 67f2e51d21b2ffc6eafd38a2eddbc94fbe958fcf Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Fri, 8 Jul 2022 11:59:50 +1000 Subject: [PATCH 46/88] removed local tokens validations in the pester test --- .../pipelineTemplates/jobs.validateModulePester.yml | 5 ----- .../actions/templates/validateModulePester/action.yml | 5 ----- utilities/tools/Test-ModuleLocally.ps1 | 9 ++------- 3 files changed, 2 insertions(+), 17 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModulePester.yml b/.azuredevops/pipelineTemplates/jobs.validateModulePester.yml index 96d2550f07..16ace6a55d 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModulePester.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModulePester.yml @@ -167,11 +167,6 @@ jobs: $tokenConfiguration.Tokens['tenantId'] = '$(ARM_TENANT_ID)' } - ## Local Tokens from settings.yml - foreach ($localToken in $GlobalVariablesObject.Keys | ForEach-Object { if ($PSItem.contains('localToken_')) { $PSItem } }) { - $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '','OrdinalIgnoreCase')] = $GlobalVariablesObject.$localToken - } - # --------------------- # # Invoke Pester test(s) # # --------------------- # diff --git a/.github/actions/templates/validateModulePester/action.yml b/.github/actions/templates/validateModulePester/action.yml index aeae413af8..3aeca4c4cb 100644 --- a/.github/actions/templates/validateModulePester/action.yml +++ b/.github/actions/templates/validateModulePester/action.yml @@ -100,11 +100,6 @@ runs: $tokenConfiguration.Tokens['tenantId'] = '${{ env.ARM_TENANT_ID }}' } - ## Local Tokens from settings.yml - foreach ($localToken in $GlobalVariablesObject.Keys | ForEach-Object { if ($PSItem.contains('localToken_')) { $PSItem } }) { - $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '','OrdinalIgnoreCase')] = $GlobalVariablesObject.$localToken - } - # --------------------- # # Invoke Pester test(s) # # --------------------- # diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index bbcb308a2c..8ae61002dd 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -143,9 +143,9 @@ function Test-ModuleLocally { . (Join-Path $PSScriptRoot '../pipelines/resourceDeployment/Test-TemplateDeployment.ps1') } process { - ################ + ###################### # TOKENS Replacement # - ################ + ###################### $GlobalVariablesObject = Get-Content -Path (Join-Path $PSScriptRoot '..\..\settings.yml') | ConvertFrom-Yaml -ErrorAction Stop | Select-Object -ExpandProperty variables @@ -170,11 +170,6 @@ function Test-ModuleLocally { $tokenConfiguration.Tokens['tenantId'] = $AdditionalTokens['tenantId'] } - ## Local Tokens from settings.yml - foreach ($localToken in $GlobalVariablesObject.Keys | ForEach-Object { if ($PSItem.contains('localToken_')) { $PSItem } }) { - $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '', 'OrdinalIgnoreCase')] = $GlobalVariablesObject.$localToken - } - #Add Other Parameter File Tokens (For Testing) $AdditionalTokens.Keys | ForEach-Object { if (-not $tokenConfiguration.Tokens.ContainsKey($PSItem)) { From 2e3f11c4b61d6d3656bd667ca92105a6770f4d28 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sun, 17 Jul 2022 09:07:53 +1000 Subject: [PATCH 47/88] uplifted local test script --- utilities/tools/Test-ModuleLocally.ps1 | 30 +++++++++++++++++++------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index f991ce4174..4f17936720 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -160,21 +160,28 @@ function Test-ModuleLocally { TokenSuffix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenSuffix } - ## Enforced Tokens + # Add Enforced Tokens + $enforcedTokenList = @{} if ($ValidateOrDeployParameters.ContainsKey('subscriptionId')) { - $tokenConfiguration.Tokens['subscriptionId'] = $ValidateOrDeployParameters.SubscriptionId + $enforcedTokenList['subscriptionId'] = $ValidateOrDeployParameters.SubscriptionId } if ($ValidateOrDeployParameters.ContainsKey('managementGroupId')) { - $tokenConfiguration.Tokens['managementGroupId'] = $ValidateOrDeployParameters.ManagementGroupId + $enforcedTokenList['managementGroupId'] = $ValidateOrDeployParameters.ManagementGroupId } if ($AdditionalTokens.ContainsKey('deploymentSpId')) { - $tokenConfiguration.Tokens['deploymentSpId'] = $AdditionalTokens['deploymentSpId'] + $enforcedTokenList['deploymentSpId'] = $AdditionalTokens['deploymentSpId'] } if ($AdditionalTokens.ContainsKey('tenantId')) { - $tokenConfiguration.Tokens['tenantId'] = $AdditionalTokens['tenantId'] + $enforcedTokenList['tenantId'] = $AdditionalTokens['tenantId'] } + $tokenConfiguration.Tokens += $enforcedTokenList - #Add Other Parameter File Tokens (For Testing) + # Add local (source control) tokens + foreach ($localToken in ($GlobalVariablesObject.Keys | ForEach-Object { if ($PSItem.contains('localToken_')) { $PSItem } })) { + $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '', 'OrdinalIgnoreCase')] = $GlobalVariablesObject.$localToken + } + + # Add Other Parameter File Tokens (For Testing) $AdditionalTokens.Keys | ForEach-Object { if (-not $tokenConfiguration.Tokens.ContainsKey($PSItem)) { $tokenConfiguration.Tokens[$PSItem] = $AdditionalTokens.$PSItem @@ -185,12 +192,20 @@ function Test-ModuleLocally { ################ if ($PesterTest) { Write-Verbose "Pester Testing Module: $ModuleName" + + # Construct Pester Token Configuration Input + $PesterTokenConfiguration = @{ + Tokens = $enforcedTokenList + TokenPrefix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenPrefix + TokenSuffix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenSuffix + } + try { Invoke-Pester -Configuration @{ Run = @{ Container = New-PesterContainer -Path (Join-Path $repoRootPath $moduleTestFilePath) -Data @{ moduleFolderPaths = Split-Path $TemplateFilePath -Parent - tokenConfiguration = $tokenConfiguration + tokenConfiguration = $PesterTokenConfiguration } } Output = @{ @@ -239,7 +254,6 @@ function Test-ModuleLocally { } } - # Deploy template # --------------- if ($DeploymentTest) { From 22393cbd75aaadc24c079a230c15e64280fa9097 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Tue, 19 Jul 2022 16:47:45 +1000 Subject: [PATCH 48/88] updated ado module pipelines with settings.yml --- .azuredevops/modulePipelines/ms.aad.domainservices.yml | 2 +- .azuredevops/modulePipelines/ms.analysisservices.servers.yml | 2 +- .azuredevops/modulePipelines/ms.apimanagement.service.yml | 2 +- .../modulePipelines/ms.appconfiguration.configurationstores.yml | 2 +- .azuredevops/modulePipelines/ms.authorization.locks.yml | 2 +- .../modulePipelines/ms.authorization.policyassignments.yml | 2 +- .../modulePipelines/ms.authorization.policydefinitions.yml | 2 +- .../modulePipelines/ms.authorization.policyexemptions.yml | 2 +- .../modulePipelines/ms.authorization.policysetdefinitions.yml | 2 +- .../modulePipelines/ms.authorization.roleassignments.yml | 2 +- .../modulePipelines/ms.authorization.roledefinitions.yml | 2 +- .../modulePipelines/ms.automation.automationaccounts.yml | 2 +- .azuredevops/modulePipelines/ms.batch.batchaccounts.yml | 2 +- .azuredevops/modulePipelines/ms.cache.redis.yml | 2 +- .azuredevops/modulePipelines/ms.cognitiveservices.accounts.yml | 2 +- .azuredevops/modulePipelines/ms.compute.availabilitysets.yml | 2 +- .azuredevops/modulePipelines/ms.compute.diskencryptionsets.yml | 2 +- .azuredevops/modulePipelines/ms.compute.disks.yml | 2 +- .azuredevops/modulePipelines/ms.compute.galleries.yml | 2 +- .azuredevops/modulePipelines/ms.compute.images.yml | 2 +- .../modulePipelines/ms.compute.proximityplacementgroups.yml | 2 +- .azuredevops/modulePipelines/ms.compute.virtualmachines.yml | 2 +- .../modulePipelines/ms.compute.virtualmachinescalesets.yml | 2 +- .azuredevops/modulePipelines/ms.consumption.budgets.yml | 2 +- .../modulePipelines/ms.containerinstance.containergroups.yml | 2 +- .../modulePipelines/ms.containerregistry.registries.yml | 2 +- .../modulePipelines/ms.containerservice.managedclusters.yml | 2 +- .azuredevops/modulePipelines/ms.databricks.workspaces.yml | 2 +- .azuredevops/modulePipelines/ms.datafactory.factories.yml | 2 +- .azuredevops/modulePipelines/ms.dataprotection.backupvaults.yml | 2 +- .../ms.desktopvirtualization.applicationgroups.yml | 2 +- .../modulePipelines/ms.desktopvirtualization.hostpools.yml | 2 +- .../modulePipelines/ms.desktopvirtualization.scalingplans.yml | 2 +- .../modulePipelines/ms.desktopvirtualization.workspaces.yml | 2 +- .azuredevops/modulePipelines/ms.documentdb.databaseaccounts.yml | 2 +- .azuredevops/modulePipelines/ms.eventgrid.systemtopics.yml | 2 +- .azuredevops/modulePipelines/ms.eventgrid.topics.yml | 2 +- .azuredevops/modulePipelines/ms.eventhub.namespaces.yml | 2 +- .azuredevops/modulePipelines/ms.healthbot.healthbots.yml | 2 +- .azuredevops/modulePipelines/ms.insights.actiongroups.yml | 2 +- .azuredevops/modulePipelines/ms.insights.activitylogalerts.yml | 2 +- .azuredevops/modulePipelines/ms.insights.components.yml | 2 +- .azuredevops/modulePipelines/ms.insights.diagnosticsettings.yml | 2 +- .azuredevops/modulePipelines/ms.insights.metricalerts.yml | 2 +- .azuredevops/modulePipelines/ms.insights.privatelinkscopes.yml | 2 +- .../modulePipelines/ms.insights.scheduledqueryrules.yml | 2 +- .azuredevops/modulePipelines/ms.keyvault.vaults.yml | 2 +- .../modulePipelines/ms.kubernetesconfiguration.extensions.yml | 2 +- .../ms.kubernetesconfiguration.fluxconfigurations.yml | 2 +- .azuredevops/modulePipelines/ms.logic.workflows.yml | 2 +- .../modulePipelines/ms.machinelearningservices.workspaces.yml | 2 +- .../ms.managedidentity.userassignedidentities.yml | 2 +- .../ms.managedservices.registrationdefinitions.yml | 2 +- .azuredevops/modulePipelines/ms.management.managementgroups.yml | 2 +- .azuredevops/modulePipelines/ms.netapp.netappaccounts.yml | 2 +- .azuredevops/modulePipelines/ms.network.applicationgateways.yml | 2 +- .azuredevops/modulePipelines/ms.network.azurefirewalls.yml | 2 +- .azuredevops/modulePipelines/ms.network.bastionhosts.yml | 2 +- .azuredevops/modulePipelines/ms.network.connections.yml | 2 +- .azuredevops/modulePipelines/ms.network.ddosprotectionplans.yml | 2 +- .../modulePipelines/ms.network.expressroutecircuits.yml | 2 +- .azuredevops/modulePipelines/ms.network.firewallpolicies.yml | 2 +- .azuredevops/modulePipelines/ms.network.frontdoors.yml | 2 +- .azuredevops/modulePipelines/ms.network.ipgroups.yml | 2 +- .azuredevops/modulePipelines/ms.network.loadbalancers.yml | 2 +- .../modulePipelines/ms.network.localnetworkgateways.yml | 2 +- .azuredevops/modulePipelines/ms.network.natgateways.yml | 2 +- .azuredevops/modulePipelines/ms.network.networkinterfaces.yml | 2 +- .../modulePipelines/ms.network.networksecuritygroups.yml | 2 +- .azuredevops/modulePipelines/ms.network.networkwatchers.yml | 2 +- .azuredevops/modulePipelines/ms.network.privatednszones.yml | 2 +- .azuredevops/modulePipelines/ms.network.privateendpoints.yml | 2 +- .azuredevops/modulePipelines/ms.network.publicipaddresses.yml | 2 +- .azuredevops/modulePipelines/ms.network.publicipprefixes.yml | 2 +- .azuredevops/modulePipelines/ms.network.routetables.yml | 2 +- .../modulePipelines/ms.network.trafficmanagerprofiles.yml | 2 +- .azuredevops/modulePipelines/ms.network.virtualhubs.yml | 2 +- .../modulePipelines/ms.network.virtualnetworkgateways.yml | 2 +- .azuredevops/modulePipelines/ms.network.virtualnetworks.yml | 2 +- .azuredevops/modulePipelines/ms.network.virtualwans.yml | 2 +- .azuredevops/modulePipelines/ms.network.vpngateways.yml | 2 +- .azuredevops/modulePipelines/ms.network.vpnsites.yml | 2 +- .../modulePipelines/ms.operationalinsights.workspaces.yml | 2 +- .../modulePipelines/ms.operationsmanagement.solutions.yml | 2 +- .azuredevops/modulePipelines/ms.recoveryservices.vaults.yml | 2 +- .azuredevops/modulePipelines/ms.resources.deploymentscripts.yml | 2 +- .azuredevops/modulePipelines/ms.resources.resourcegroups.yml | 2 +- .azuredevops/modulePipelines/ms.resources.tags.yml | 2 +- .../modulePipelines/ms.security.azuresecuritycenter.yml | 2 +- .azuredevops/modulePipelines/ms.servicebus.namespaces.yml | 2 +- .azuredevops/modulePipelines/ms.servicefabric.clusters.yml | 2 +- .azuredevops/modulePipelines/ms.signalrservice.webpubsub.yml | 2 +- .azuredevops/modulePipelines/ms.sql.managedinstances.yml | 2 +- .azuredevops/modulePipelines/ms.sql.servers.yml | 2 +- .azuredevops/modulePipelines/ms.storage.storageaccounts.yml | 2 +- .azuredevops/modulePipelines/ms.synapse.privatelinkhubs.yml | 2 +- .../modulePipelines/ms.virtualmachineimages.imagetemplates.yml | 2 +- .azuredevops/modulePipelines/ms.web.connections.yml | 2 +- .azuredevops/modulePipelines/ms.web.hostingenvironments.yml | 2 +- .azuredevops/modulePipelines/ms.web.serverfarms.yml | 2 +- .azuredevops/modulePipelines/ms.web.sites.yml | 2 +- .azuredevops/modulePipelines/ms.web.staticsites.yml | 2 +- 102 files changed, 102 insertions(+), 102 deletions(-) diff --git a/.azuredevops/modulePipelines/ms.aad.domainservices.yml b/.azuredevops/modulePipelines/ms.aad.domainservices.yml index dc4b333de0..8b9da56fee 100644 --- a/.azuredevops/modulePipelines/ms.aad.domainservices.yml +++ b/.azuredevops/modulePipelines/ms.aad.domainservices.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.AAD/DomainServices' diff --git a/.azuredevops/modulePipelines/ms.analysisservices.servers.yml b/.azuredevops/modulePipelines/ms.analysisservices.servers.yml index 7af50336a6..7e4bd21cb6 100644 --- a/.azuredevops/modulePipelines/ms.analysisservices.servers.yml +++ b/.azuredevops/modulePipelines/ms.analysisservices.servers.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.AnalysisServices/servers' diff --git a/.azuredevops/modulePipelines/ms.apimanagement.service.yml b/.azuredevops/modulePipelines/ms.apimanagement.service.yml index b1aba496be..1785848ea4 100644 --- a/.azuredevops/modulePipelines/ms.apimanagement.service.yml +++ b/.azuredevops/modulePipelines/ms.apimanagement.service.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.ApiManagement/service' diff --git a/.azuredevops/modulePipelines/ms.appconfiguration.configurationstores.yml b/.azuredevops/modulePipelines/ms.appconfiguration.configurationstores.yml index d7f129a897..98762e742a 100644 --- a/.azuredevops/modulePipelines/ms.appconfiguration.configurationstores.yml +++ b/.azuredevops/modulePipelines/ms.appconfiguration.configurationstores.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.AppConfiguration/configurationStores' diff --git a/.azuredevops/modulePipelines/ms.authorization.locks.yml b/.azuredevops/modulePipelines/ms.authorization.locks.yml index 1c6eca4189..84a1e6748d 100644 --- a/.azuredevops/modulePipelines/ms.authorization.locks.yml +++ b/.azuredevops/modulePipelines/ms.authorization.locks.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Authorization/locks' diff --git a/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml b/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml index d3da037b68..a0a8c46149 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Authorization/policyAssignments' diff --git a/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml b/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml index 7addbb0011..df72d621a9 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Authorization/policyDefinitions' diff --git a/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml b/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml index 40f367f9c2..9f194a12cb 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Authorization/policyExemptions' diff --git a/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml b/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml index f4171f025d..9193592d95 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Authorization/policySetDefinitions' diff --git a/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml b/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml index 4690fae893..84cc7ff807 100644 --- a/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml +++ b/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Authorization/roleAssignments' diff --git a/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml b/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml index 59bb77e6ea..58f0705679 100644 --- a/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Authorization/roleDefinitions' diff --git a/.azuredevops/modulePipelines/ms.automation.automationaccounts.yml b/.azuredevops/modulePipelines/ms.automation.automationaccounts.yml index 3ae7224e87..ababc3057b 100644 --- a/.azuredevops/modulePipelines/ms.automation.automationaccounts.yml +++ b/.azuredevops/modulePipelines/ms.automation.automationaccounts.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Automation/automationAccounts' diff --git a/.azuredevops/modulePipelines/ms.batch.batchaccounts.yml b/.azuredevops/modulePipelines/ms.batch.batchaccounts.yml index 3909a23932..4f3b733781 100644 --- a/.azuredevops/modulePipelines/ms.batch.batchaccounts.yml +++ b/.azuredevops/modulePipelines/ms.batch.batchaccounts.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Batch/batchAccounts' diff --git a/.azuredevops/modulePipelines/ms.cache.redis.yml b/.azuredevops/modulePipelines/ms.cache.redis.yml index fee3d729e8..c7f9190a59 100644 --- a/.azuredevops/modulePipelines/ms.cache.redis.yml +++ b/.azuredevops/modulePipelines/ms.cache.redis.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Cache/redis' diff --git a/.azuredevops/modulePipelines/ms.cognitiveservices.accounts.yml b/.azuredevops/modulePipelines/ms.cognitiveservices.accounts.yml index 525bbd0400..52581ad04a 100644 --- a/.azuredevops/modulePipelines/ms.cognitiveservices.accounts.yml +++ b/.azuredevops/modulePipelines/ms.cognitiveservices.accounts.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.CognitiveServices/accounts' diff --git a/.azuredevops/modulePipelines/ms.compute.availabilitysets.yml b/.azuredevops/modulePipelines/ms.compute.availabilitysets.yml index ebfe4ef6c5..9895080d4f 100644 --- a/.azuredevops/modulePipelines/ms.compute.availabilitysets.yml +++ b/.azuredevops/modulePipelines/ms.compute.availabilitysets.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Compute/availabilitySets' diff --git a/.azuredevops/modulePipelines/ms.compute.diskencryptionsets.yml b/.azuredevops/modulePipelines/ms.compute.diskencryptionsets.yml index 5c055c106e..15aa461112 100644 --- a/.azuredevops/modulePipelines/ms.compute.diskencryptionsets.yml +++ b/.azuredevops/modulePipelines/ms.compute.diskencryptionsets.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Compute/diskEncryptionSets' diff --git a/.azuredevops/modulePipelines/ms.compute.disks.yml b/.azuredevops/modulePipelines/ms.compute.disks.yml index ade67c4da1..ee0878b5a3 100644 --- a/.azuredevops/modulePipelines/ms.compute.disks.yml +++ b/.azuredevops/modulePipelines/ms.compute.disks.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Compute/disks' diff --git a/.azuredevops/modulePipelines/ms.compute.galleries.yml b/.azuredevops/modulePipelines/ms.compute.galleries.yml index 2c8b9e7315..b8488c96d4 100644 --- a/.azuredevops/modulePipelines/ms.compute.galleries.yml +++ b/.azuredevops/modulePipelines/ms.compute.galleries.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Compute/galleries' diff --git a/.azuredevops/modulePipelines/ms.compute.images.yml b/.azuredevops/modulePipelines/ms.compute.images.yml index c5eff00687..eb345be5b5 100644 --- a/.azuredevops/modulePipelines/ms.compute.images.yml +++ b/.azuredevops/modulePipelines/ms.compute.images.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Compute/images' diff --git a/.azuredevops/modulePipelines/ms.compute.proximityplacementgroups.yml b/.azuredevops/modulePipelines/ms.compute.proximityplacementgroups.yml index 6cf915f886..47748a6e41 100644 --- a/.azuredevops/modulePipelines/ms.compute.proximityplacementgroups.yml +++ b/.azuredevops/modulePipelines/ms.compute.proximityplacementgroups.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Compute/proximityPlacementGroups' diff --git a/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml b/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml index fbebfadefb..8d7d8c136e 100644 --- a/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml +++ b/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Compute/virtualMachines' diff --git a/.azuredevops/modulePipelines/ms.compute.virtualmachinescalesets.yml b/.azuredevops/modulePipelines/ms.compute.virtualmachinescalesets.yml index ee08364dd9..4d0acacbb5 100644 --- a/.azuredevops/modulePipelines/ms.compute.virtualmachinescalesets.yml +++ b/.azuredevops/modulePipelines/ms.compute.virtualmachinescalesets.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Compute/virtualMachineScaleSets' diff --git a/.azuredevops/modulePipelines/ms.consumption.budgets.yml b/.azuredevops/modulePipelines/ms.consumption.budgets.yml index ff092f68a9..3a236c269f 100644 --- a/.azuredevops/modulePipelines/ms.consumption.budgets.yml +++ b/.azuredevops/modulePipelines/ms.consumption.budgets.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Consumption/budgets' diff --git a/.azuredevops/modulePipelines/ms.containerinstance.containergroups.yml b/.azuredevops/modulePipelines/ms.containerinstance.containergroups.yml index fb77ed6087..e133c917b2 100644 --- a/.azuredevops/modulePipelines/ms.containerinstance.containergroups.yml +++ b/.azuredevops/modulePipelines/ms.containerinstance.containergroups.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.ContainerInstance/containerGroups' diff --git a/.azuredevops/modulePipelines/ms.containerregistry.registries.yml b/.azuredevops/modulePipelines/ms.containerregistry.registries.yml index 8470ed750e..14a1a29426 100644 --- a/.azuredevops/modulePipelines/ms.containerregistry.registries.yml +++ b/.azuredevops/modulePipelines/ms.containerregistry.registries.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.ContainerRegistry/registries' diff --git a/.azuredevops/modulePipelines/ms.containerservice.managedclusters.yml b/.azuredevops/modulePipelines/ms.containerservice.managedclusters.yml index 14bff15bc9..01a78c1582 100644 --- a/.azuredevops/modulePipelines/ms.containerservice.managedclusters.yml +++ b/.azuredevops/modulePipelines/ms.containerservice.managedclusters.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.ContainerService/managedClusters' diff --git a/.azuredevops/modulePipelines/ms.databricks.workspaces.yml b/.azuredevops/modulePipelines/ms.databricks.workspaces.yml index 2dcefb3089..e1eeda4d85 100644 --- a/.azuredevops/modulePipelines/ms.databricks.workspaces.yml +++ b/.azuredevops/modulePipelines/ms.databricks.workspaces.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Databricks/workspaces' diff --git a/.azuredevops/modulePipelines/ms.datafactory.factories.yml b/.azuredevops/modulePipelines/ms.datafactory.factories.yml index 47b45aba51..935be0a042 100644 --- a/.azuredevops/modulePipelines/ms.datafactory.factories.yml +++ b/.azuredevops/modulePipelines/ms.datafactory.factories.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.DataFactory/factories' diff --git a/.azuredevops/modulePipelines/ms.dataprotection.backupvaults.yml b/.azuredevops/modulePipelines/ms.dataprotection.backupvaults.yml index 5cdbaded33..45a642eb4e 100644 --- a/.azuredevops/modulePipelines/ms.dataprotection.backupvaults.yml +++ b/.azuredevops/modulePipelines/ms.dataprotection.backupvaults.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.DataProtection/backupVaults' diff --git a/.azuredevops/modulePipelines/ms.desktopvirtualization.applicationgroups.yml b/.azuredevops/modulePipelines/ms.desktopvirtualization.applicationgroups.yml index bbfe9a21d1..f454fd2b05 100644 --- a/.azuredevops/modulePipelines/ms.desktopvirtualization.applicationgroups.yml +++ b/.azuredevops/modulePipelines/ms.desktopvirtualization.applicationgroups.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.DesktopVirtualization/applicationgroups' diff --git a/.azuredevops/modulePipelines/ms.desktopvirtualization.hostpools.yml b/.azuredevops/modulePipelines/ms.desktopvirtualization.hostpools.yml index 3ba9e54ca9..6551f187fe 100644 --- a/.azuredevops/modulePipelines/ms.desktopvirtualization.hostpools.yml +++ b/.azuredevops/modulePipelines/ms.desktopvirtualization.hostpools.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.DesktopVirtualization/hostpools' diff --git a/.azuredevops/modulePipelines/ms.desktopvirtualization.scalingplans.yml b/.azuredevops/modulePipelines/ms.desktopvirtualization.scalingplans.yml index f73fd3513c..a1a88fce13 100644 --- a/.azuredevops/modulePipelines/ms.desktopvirtualization.scalingplans.yml +++ b/.azuredevops/modulePipelines/ms.desktopvirtualization.scalingplans.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.DesktopVirtualization/scalingplans' diff --git a/.azuredevops/modulePipelines/ms.desktopvirtualization.workspaces.yml b/.azuredevops/modulePipelines/ms.desktopvirtualization.workspaces.yml index d2ec25b4e1..1e1b254a4d 100644 --- a/.azuredevops/modulePipelines/ms.desktopvirtualization.workspaces.yml +++ b/.azuredevops/modulePipelines/ms.desktopvirtualization.workspaces.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.DesktopVirtualization/workspaces' diff --git a/.azuredevops/modulePipelines/ms.documentdb.databaseaccounts.yml b/.azuredevops/modulePipelines/ms.documentdb.databaseaccounts.yml index daa7d918c3..36f7071bba 100644 --- a/.azuredevops/modulePipelines/ms.documentdb.databaseaccounts.yml +++ b/.azuredevops/modulePipelines/ms.documentdb.databaseaccounts.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.DocumentDB/databaseAccounts' diff --git a/.azuredevops/modulePipelines/ms.eventgrid.systemtopics.yml b/.azuredevops/modulePipelines/ms.eventgrid.systemtopics.yml index c368416620..f3fa51141b 100644 --- a/.azuredevops/modulePipelines/ms.eventgrid.systemtopics.yml +++ b/.azuredevops/modulePipelines/ms.eventgrid.systemtopics.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.EventGrid/systemTopics' diff --git a/.azuredevops/modulePipelines/ms.eventgrid.topics.yml b/.azuredevops/modulePipelines/ms.eventgrid.topics.yml index 45e271e00e..432540a152 100644 --- a/.azuredevops/modulePipelines/ms.eventgrid.topics.yml +++ b/.azuredevops/modulePipelines/ms.eventgrid.topics.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.EventGrid/topics' diff --git a/.azuredevops/modulePipelines/ms.eventhub.namespaces.yml b/.azuredevops/modulePipelines/ms.eventhub.namespaces.yml index a507769455..d552b0a207 100644 --- a/.azuredevops/modulePipelines/ms.eventhub.namespaces.yml +++ b/.azuredevops/modulePipelines/ms.eventhub.namespaces.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.EventHub/namespaces' diff --git a/.azuredevops/modulePipelines/ms.healthbot.healthbots.yml b/.azuredevops/modulePipelines/ms.healthbot.healthbots.yml index 60cf3c4b9b..5e16580252 100644 --- a/.azuredevops/modulePipelines/ms.healthbot.healthbots.yml +++ b/.azuredevops/modulePipelines/ms.healthbot.healthbots.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.HealthBot/healthBots' diff --git a/.azuredevops/modulePipelines/ms.insights.actiongroups.yml b/.azuredevops/modulePipelines/ms.insights.actiongroups.yml index d065e7aa5a..966f64177f 100644 --- a/.azuredevops/modulePipelines/ms.insights.actiongroups.yml +++ b/.azuredevops/modulePipelines/ms.insights.actiongroups.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Insights/actionGroups' diff --git a/.azuredevops/modulePipelines/ms.insights.activitylogalerts.yml b/.azuredevops/modulePipelines/ms.insights.activitylogalerts.yml index 1fa1286161..4438614fd5 100644 --- a/.azuredevops/modulePipelines/ms.insights.activitylogalerts.yml +++ b/.azuredevops/modulePipelines/ms.insights.activitylogalerts.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Insights/activityLogAlerts' diff --git a/.azuredevops/modulePipelines/ms.insights.components.yml b/.azuredevops/modulePipelines/ms.insights.components.yml index 83868e2ce4..08785074f9 100644 --- a/.azuredevops/modulePipelines/ms.insights.components.yml +++ b/.azuredevops/modulePipelines/ms.insights.components.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Insights/components' diff --git a/.azuredevops/modulePipelines/ms.insights.diagnosticsettings.yml b/.azuredevops/modulePipelines/ms.insights.diagnosticsettings.yml index 42c67c039b..aa606bd42c 100644 --- a/.azuredevops/modulePipelines/ms.insights.diagnosticsettings.yml +++ b/.azuredevops/modulePipelines/ms.insights.diagnosticsettings.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Insights/diagnosticSettings' diff --git a/.azuredevops/modulePipelines/ms.insights.metricalerts.yml b/.azuredevops/modulePipelines/ms.insights.metricalerts.yml index f883c7754a..1de2866ba0 100644 --- a/.azuredevops/modulePipelines/ms.insights.metricalerts.yml +++ b/.azuredevops/modulePipelines/ms.insights.metricalerts.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Insights/metricAlerts' diff --git a/.azuredevops/modulePipelines/ms.insights.privatelinkscopes.yml b/.azuredevops/modulePipelines/ms.insights.privatelinkscopes.yml index ed1cd860b2..ec96a7c7dc 100644 --- a/.azuredevops/modulePipelines/ms.insights.privatelinkscopes.yml +++ b/.azuredevops/modulePipelines/ms.insights.privatelinkscopes.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Insights/privateLinkScopes' diff --git a/.azuredevops/modulePipelines/ms.insights.scheduledqueryrules.yml b/.azuredevops/modulePipelines/ms.insights.scheduledqueryrules.yml index 55048bd8dc..56a9d13744 100644 --- a/.azuredevops/modulePipelines/ms.insights.scheduledqueryrules.yml +++ b/.azuredevops/modulePipelines/ms.insights.scheduledqueryrules.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Insights/scheduledQueryRules' diff --git a/.azuredevops/modulePipelines/ms.keyvault.vaults.yml b/.azuredevops/modulePipelines/ms.keyvault.vaults.yml index 3fa4c1122f..e5f626c4e3 100644 --- a/.azuredevops/modulePipelines/ms.keyvault.vaults.yml +++ b/.azuredevops/modulePipelines/ms.keyvault.vaults.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.KeyVault/vaults' diff --git a/.azuredevops/modulePipelines/ms.kubernetesconfiguration.extensions.yml b/.azuredevops/modulePipelines/ms.kubernetesconfiguration.extensions.yml index fd176ad9ef..5d15ecde9a 100644 --- a/.azuredevops/modulePipelines/ms.kubernetesconfiguration.extensions.yml +++ b/.azuredevops/modulePipelines/ms.kubernetesconfiguration.extensions.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.KubernetesConfiguration/extensions' diff --git a/.azuredevops/modulePipelines/ms.kubernetesconfiguration.fluxconfigurations.yml b/.azuredevops/modulePipelines/ms.kubernetesconfiguration.fluxconfigurations.yml index f1b7bd74f4..8f5ab858ea 100644 --- a/.azuredevops/modulePipelines/ms.kubernetesconfiguration.fluxconfigurations.yml +++ b/.azuredevops/modulePipelines/ms.kubernetesconfiguration.fluxconfigurations.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.KubernetesConfiguration/fluxConfigurations' diff --git a/.azuredevops/modulePipelines/ms.logic.workflows.yml b/.azuredevops/modulePipelines/ms.logic.workflows.yml index 21f019db89..112f27122c 100644 --- a/.azuredevops/modulePipelines/ms.logic.workflows.yml +++ b/.azuredevops/modulePipelines/ms.logic.workflows.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Logic/workflows' diff --git a/.azuredevops/modulePipelines/ms.machinelearningservices.workspaces.yml b/.azuredevops/modulePipelines/ms.machinelearningservices.workspaces.yml index 125fd6c922..b0ab0c8628 100644 --- a/.azuredevops/modulePipelines/ms.machinelearningservices.workspaces.yml +++ b/.azuredevops/modulePipelines/ms.machinelearningservices.workspaces.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.MachineLearningServices/workspaces' diff --git a/.azuredevops/modulePipelines/ms.managedidentity.userassignedidentities.yml b/.azuredevops/modulePipelines/ms.managedidentity.userassignedidentities.yml index a9dcc9e358..c98b4e2dd7 100644 --- a/.azuredevops/modulePipelines/ms.managedidentity.userassignedidentities.yml +++ b/.azuredevops/modulePipelines/ms.managedidentity.userassignedidentities.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.ManagedIdentity/userAssignedIdentities' diff --git a/.azuredevops/modulePipelines/ms.managedservices.registrationdefinitions.yml b/.azuredevops/modulePipelines/ms.managedservices.registrationdefinitions.yml index 0489b42b0a..52dcfd012a 100644 --- a/.azuredevops/modulePipelines/ms.managedservices.registrationdefinitions.yml +++ b/.azuredevops/modulePipelines/ms.managedservices.registrationdefinitions.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.ManagedServices/registrationDefinitions' diff --git a/.azuredevops/modulePipelines/ms.management.managementgroups.yml b/.azuredevops/modulePipelines/ms.management.managementgroups.yml index ecd8f96634..b5ed3ae657 100644 --- a/.azuredevops/modulePipelines/ms.management.managementgroups.yml +++ b/.azuredevops/modulePipelines/ms.management.managementgroups.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Management/managementGroups' diff --git a/.azuredevops/modulePipelines/ms.netapp.netappaccounts.yml b/.azuredevops/modulePipelines/ms.netapp.netappaccounts.yml index 6eaada9780..4e73a2cfc1 100644 --- a/.azuredevops/modulePipelines/ms.netapp.netappaccounts.yml +++ b/.azuredevops/modulePipelines/ms.netapp.netappaccounts.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.NetApp/netAppAccounts' diff --git a/.azuredevops/modulePipelines/ms.network.applicationgateways.yml b/.azuredevops/modulePipelines/ms.network.applicationgateways.yml index 338e5833e4..16c1143091 100644 --- a/.azuredevops/modulePipelines/ms.network.applicationgateways.yml +++ b/.azuredevops/modulePipelines/ms.network.applicationgateways.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/applicationGateways' diff --git a/.azuredevops/modulePipelines/ms.network.azurefirewalls.yml b/.azuredevops/modulePipelines/ms.network.azurefirewalls.yml index e22f1a6d8e..209c5288f8 100644 --- a/.azuredevops/modulePipelines/ms.network.azurefirewalls.yml +++ b/.azuredevops/modulePipelines/ms.network.azurefirewalls.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/azureFirewalls' diff --git a/.azuredevops/modulePipelines/ms.network.bastionhosts.yml b/.azuredevops/modulePipelines/ms.network.bastionhosts.yml index cfdf6f3159..42813a469f 100644 --- a/.azuredevops/modulePipelines/ms.network.bastionhosts.yml +++ b/.azuredevops/modulePipelines/ms.network.bastionhosts.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/bastionHosts' diff --git a/.azuredevops/modulePipelines/ms.network.connections.yml b/.azuredevops/modulePipelines/ms.network.connections.yml index e5c7ba8cda..0ff83b2e87 100644 --- a/.azuredevops/modulePipelines/ms.network.connections.yml +++ b/.azuredevops/modulePipelines/ms.network.connections.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/connections' diff --git a/.azuredevops/modulePipelines/ms.network.ddosprotectionplans.yml b/.azuredevops/modulePipelines/ms.network.ddosprotectionplans.yml index a162d084b8..44287d83a9 100644 --- a/.azuredevops/modulePipelines/ms.network.ddosprotectionplans.yml +++ b/.azuredevops/modulePipelines/ms.network.ddosprotectionplans.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/ddosProtectionPlans' diff --git a/.azuredevops/modulePipelines/ms.network.expressroutecircuits.yml b/.azuredevops/modulePipelines/ms.network.expressroutecircuits.yml index 740994bd5e..4cec3ee7e0 100644 --- a/.azuredevops/modulePipelines/ms.network.expressroutecircuits.yml +++ b/.azuredevops/modulePipelines/ms.network.expressroutecircuits.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/expressRouteCircuits' diff --git a/.azuredevops/modulePipelines/ms.network.firewallpolicies.yml b/.azuredevops/modulePipelines/ms.network.firewallpolicies.yml index 589052e06e..156c0d9025 100644 --- a/.azuredevops/modulePipelines/ms.network.firewallpolicies.yml +++ b/.azuredevops/modulePipelines/ms.network.firewallpolicies.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/firewallPolicies' diff --git a/.azuredevops/modulePipelines/ms.network.frontdoors.yml b/.azuredevops/modulePipelines/ms.network.frontdoors.yml index 8aae51017a..5ce4fa4284 100644 --- a/.azuredevops/modulePipelines/ms.network.frontdoors.yml +++ b/.azuredevops/modulePipelines/ms.network.frontdoors.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/frontDoors' diff --git a/.azuredevops/modulePipelines/ms.network.ipgroups.yml b/.azuredevops/modulePipelines/ms.network.ipgroups.yml index 6ab23f1e6f..f8a4f2e136 100644 --- a/.azuredevops/modulePipelines/ms.network.ipgroups.yml +++ b/.azuredevops/modulePipelines/ms.network.ipgroups.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/ipGroups' diff --git a/.azuredevops/modulePipelines/ms.network.loadbalancers.yml b/.azuredevops/modulePipelines/ms.network.loadbalancers.yml index 49e4c668d4..7a051b378f 100644 --- a/.azuredevops/modulePipelines/ms.network.loadbalancers.yml +++ b/.azuredevops/modulePipelines/ms.network.loadbalancers.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/loadBalancers' diff --git a/.azuredevops/modulePipelines/ms.network.localnetworkgateways.yml b/.azuredevops/modulePipelines/ms.network.localnetworkgateways.yml index 560819deed..da8dc56b75 100644 --- a/.azuredevops/modulePipelines/ms.network.localnetworkgateways.yml +++ b/.azuredevops/modulePipelines/ms.network.localnetworkgateways.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/localNetworkGateways' diff --git a/.azuredevops/modulePipelines/ms.network.natgateways.yml b/.azuredevops/modulePipelines/ms.network.natgateways.yml index 98d389f40b..072b87fe4f 100644 --- a/.azuredevops/modulePipelines/ms.network.natgateways.yml +++ b/.azuredevops/modulePipelines/ms.network.natgateways.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/natGateways' diff --git a/.azuredevops/modulePipelines/ms.network.networkinterfaces.yml b/.azuredevops/modulePipelines/ms.network.networkinterfaces.yml index 38643e7ad5..7c84a8c269 100644 --- a/.azuredevops/modulePipelines/ms.network.networkinterfaces.yml +++ b/.azuredevops/modulePipelines/ms.network.networkinterfaces.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/networkInterfaces' diff --git a/.azuredevops/modulePipelines/ms.network.networksecuritygroups.yml b/.azuredevops/modulePipelines/ms.network.networksecuritygroups.yml index 12e86b36b9..b0dd5f0103 100644 --- a/.azuredevops/modulePipelines/ms.network.networksecuritygroups.yml +++ b/.azuredevops/modulePipelines/ms.network.networksecuritygroups.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/networkSecurityGroups' diff --git a/.azuredevops/modulePipelines/ms.network.networkwatchers.yml b/.azuredevops/modulePipelines/ms.network.networkwatchers.yml index b4da5891b4..e6af5df836 100644 --- a/.azuredevops/modulePipelines/ms.network.networkwatchers.yml +++ b/.azuredevops/modulePipelines/ms.network.networkwatchers.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/networkWatchers' diff --git a/.azuredevops/modulePipelines/ms.network.privatednszones.yml b/.azuredevops/modulePipelines/ms.network.privatednszones.yml index ac21a6dbd5..cdde8984a3 100644 --- a/.azuredevops/modulePipelines/ms.network.privatednszones.yml +++ b/.azuredevops/modulePipelines/ms.network.privatednszones.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/privateDnsZones' diff --git a/.azuredevops/modulePipelines/ms.network.privateendpoints.yml b/.azuredevops/modulePipelines/ms.network.privateendpoints.yml index 556a20d7d6..669bb27ee3 100644 --- a/.azuredevops/modulePipelines/ms.network.privateendpoints.yml +++ b/.azuredevops/modulePipelines/ms.network.privateendpoints.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/privateEndpoints' diff --git a/.azuredevops/modulePipelines/ms.network.publicipaddresses.yml b/.azuredevops/modulePipelines/ms.network.publicipaddresses.yml index 0800659ccd..39e064f30a 100644 --- a/.azuredevops/modulePipelines/ms.network.publicipaddresses.yml +++ b/.azuredevops/modulePipelines/ms.network.publicipaddresses.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/publicIPAddresses' diff --git a/.azuredevops/modulePipelines/ms.network.publicipprefixes.yml b/.azuredevops/modulePipelines/ms.network.publicipprefixes.yml index 6df6837c99..1af90c3eda 100644 --- a/.azuredevops/modulePipelines/ms.network.publicipprefixes.yml +++ b/.azuredevops/modulePipelines/ms.network.publicipprefixes.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/publicIPPrefixes' diff --git a/.azuredevops/modulePipelines/ms.network.routetables.yml b/.azuredevops/modulePipelines/ms.network.routetables.yml index 92f8fdf6d6..04cb4b1f75 100644 --- a/.azuredevops/modulePipelines/ms.network.routetables.yml +++ b/.azuredevops/modulePipelines/ms.network.routetables.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/routeTables' diff --git a/.azuredevops/modulePipelines/ms.network.trafficmanagerprofiles.yml b/.azuredevops/modulePipelines/ms.network.trafficmanagerprofiles.yml index 3196e7fc21..db7925af46 100644 --- a/.azuredevops/modulePipelines/ms.network.trafficmanagerprofiles.yml +++ b/.azuredevops/modulePipelines/ms.network.trafficmanagerprofiles.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/trafficmanagerprofiles' diff --git a/.azuredevops/modulePipelines/ms.network.virtualhubs.yml b/.azuredevops/modulePipelines/ms.network.virtualhubs.yml index 03e06fdcd3..a1f7496e39 100644 --- a/.azuredevops/modulePipelines/ms.network.virtualhubs.yml +++ b/.azuredevops/modulePipelines/ms.network.virtualhubs.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/virtualHubs' diff --git a/.azuredevops/modulePipelines/ms.network.virtualnetworkgateways.yml b/.azuredevops/modulePipelines/ms.network.virtualnetworkgateways.yml index d85d443bd4..00b67b0d51 100644 --- a/.azuredevops/modulePipelines/ms.network.virtualnetworkgateways.yml +++ b/.azuredevops/modulePipelines/ms.network.virtualnetworkgateways.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/virtualNetworkGateways' diff --git a/.azuredevops/modulePipelines/ms.network.virtualnetworks.yml b/.azuredevops/modulePipelines/ms.network.virtualnetworks.yml index 35e251fe64..081e042254 100644 --- a/.azuredevops/modulePipelines/ms.network.virtualnetworks.yml +++ b/.azuredevops/modulePipelines/ms.network.virtualnetworks.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/virtualNetworks' diff --git a/.azuredevops/modulePipelines/ms.network.virtualwans.yml b/.azuredevops/modulePipelines/ms.network.virtualwans.yml index b47a9be8a8..b9ac7a7d05 100644 --- a/.azuredevops/modulePipelines/ms.network.virtualwans.yml +++ b/.azuredevops/modulePipelines/ms.network.virtualwans.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/virtualWans' diff --git a/.azuredevops/modulePipelines/ms.network.vpngateways.yml b/.azuredevops/modulePipelines/ms.network.vpngateways.yml index c929f00e60..86b87275fc 100644 --- a/.azuredevops/modulePipelines/ms.network.vpngateways.yml +++ b/.azuredevops/modulePipelines/ms.network.vpngateways.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/vpnGateways' diff --git a/.azuredevops/modulePipelines/ms.network.vpnsites.yml b/.azuredevops/modulePipelines/ms.network.vpnsites.yml index 0ed4dcfb9e..9215bfd4cb 100644 --- a/.azuredevops/modulePipelines/ms.network.vpnsites.yml +++ b/.azuredevops/modulePipelines/ms.network.vpnsites.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Network/vpnSites' diff --git a/.azuredevops/modulePipelines/ms.operationalinsights.workspaces.yml b/.azuredevops/modulePipelines/ms.operationalinsights.workspaces.yml index 37d876556f..8f39baa3dd 100644 --- a/.azuredevops/modulePipelines/ms.operationalinsights.workspaces.yml +++ b/.azuredevops/modulePipelines/ms.operationalinsights.workspaces.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.OperationalInsights/workspaces' diff --git a/.azuredevops/modulePipelines/ms.operationsmanagement.solutions.yml b/.azuredevops/modulePipelines/ms.operationsmanagement.solutions.yml index 45e98f4c7b..b16b8e56f4 100644 --- a/.azuredevops/modulePipelines/ms.operationsmanagement.solutions.yml +++ b/.azuredevops/modulePipelines/ms.operationsmanagement.solutions.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.OperationsManagement/solutions' diff --git a/.azuredevops/modulePipelines/ms.recoveryservices.vaults.yml b/.azuredevops/modulePipelines/ms.recoveryservices.vaults.yml index 46c69e6db8..63cd056fc6 100644 --- a/.azuredevops/modulePipelines/ms.recoveryservices.vaults.yml +++ b/.azuredevops/modulePipelines/ms.recoveryservices.vaults.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.RecoveryServices/vaults' diff --git a/.azuredevops/modulePipelines/ms.resources.deploymentscripts.yml b/.azuredevops/modulePipelines/ms.resources.deploymentscripts.yml index 1208c3d4fe..bccbbaf7e0 100644 --- a/.azuredevops/modulePipelines/ms.resources.deploymentscripts.yml +++ b/.azuredevops/modulePipelines/ms.resources.deploymentscripts.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Resources/deploymentScripts' diff --git a/.azuredevops/modulePipelines/ms.resources.resourcegroups.yml b/.azuredevops/modulePipelines/ms.resources.resourcegroups.yml index 6095d13e82..3091b3409d 100644 --- a/.azuredevops/modulePipelines/ms.resources.resourcegroups.yml +++ b/.azuredevops/modulePipelines/ms.resources.resourcegroups.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Resources/resourceGroups' diff --git a/.azuredevops/modulePipelines/ms.resources.tags.yml b/.azuredevops/modulePipelines/ms.resources.tags.yml index 4d69e1fb73..b6c5a9c41d 100644 --- a/.azuredevops/modulePipelines/ms.resources.tags.yml +++ b/.azuredevops/modulePipelines/ms.resources.tags.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Resources/tags' diff --git a/.azuredevops/modulePipelines/ms.security.azuresecuritycenter.yml b/.azuredevops/modulePipelines/ms.security.azuresecuritycenter.yml index a3ff45c1d2..fc279cd14c 100644 --- a/.azuredevops/modulePipelines/ms.security.azuresecuritycenter.yml +++ b/.azuredevops/modulePipelines/ms.security.azuresecuritycenter.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Security/azureSecurityCenter' diff --git a/.azuredevops/modulePipelines/ms.servicebus.namespaces.yml b/.azuredevops/modulePipelines/ms.servicebus.namespaces.yml index df07ccfad7..bba0f740bd 100644 --- a/.azuredevops/modulePipelines/ms.servicebus.namespaces.yml +++ b/.azuredevops/modulePipelines/ms.servicebus.namespaces.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.ServiceBus/namespaces' diff --git a/.azuredevops/modulePipelines/ms.servicefabric.clusters.yml b/.azuredevops/modulePipelines/ms.servicefabric.clusters.yml index 210bcc8601..13aca64f92 100644 --- a/.azuredevops/modulePipelines/ms.servicefabric.clusters.yml +++ b/.azuredevops/modulePipelines/ms.servicefabric.clusters.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.ServiceFabric/clusters' diff --git a/.azuredevops/modulePipelines/ms.signalrservice.webpubsub.yml b/.azuredevops/modulePipelines/ms.signalrservice.webpubsub.yml index e55c8b4cf5..eb59fb19a8 100644 --- a/.azuredevops/modulePipelines/ms.signalrservice.webpubsub.yml +++ b/.azuredevops/modulePipelines/ms.signalrservice.webpubsub.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.SignalRService/webPubSub' diff --git a/.azuredevops/modulePipelines/ms.sql.managedinstances.yml b/.azuredevops/modulePipelines/ms.sql.managedinstances.yml index cd4f46e4ab..7732c7ca9a 100644 --- a/.azuredevops/modulePipelines/ms.sql.managedinstances.yml +++ b/.azuredevops/modulePipelines/ms.sql.managedinstances.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Sql/managedInstances' diff --git a/.azuredevops/modulePipelines/ms.sql.servers.yml b/.azuredevops/modulePipelines/ms.sql.servers.yml index b0ea5eef46..a5a878fbdc 100644 --- a/.azuredevops/modulePipelines/ms.sql.servers.yml +++ b/.azuredevops/modulePipelines/ms.sql.servers.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Sql/servers' diff --git a/.azuredevops/modulePipelines/ms.storage.storageaccounts.yml b/.azuredevops/modulePipelines/ms.storage.storageaccounts.yml index 89b2843a8d..dd27314461 100644 --- a/.azuredevops/modulePipelines/ms.storage.storageaccounts.yml +++ b/.azuredevops/modulePipelines/ms.storage.storageaccounts.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Storage/storageAccounts' diff --git a/.azuredevops/modulePipelines/ms.synapse.privatelinkhubs.yml b/.azuredevops/modulePipelines/ms.synapse.privatelinkhubs.yml index e68cd37d6b..133e1adfda 100644 --- a/.azuredevops/modulePipelines/ms.synapse.privatelinkhubs.yml +++ b/.azuredevops/modulePipelines/ms.synapse.privatelinkhubs.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Synapse/privateLinkHubs' diff --git a/.azuredevops/modulePipelines/ms.virtualmachineimages.imagetemplates.yml b/.azuredevops/modulePipelines/ms.virtualmachineimages.imagetemplates.yml index 37e0c7618c..651c2b7971 100644 --- a/.azuredevops/modulePipelines/ms.virtualmachineimages.imagetemplates.yml +++ b/.azuredevops/modulePipelines/ms.virtualmachineimages.imagetemplates.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.VirtualMachineImages/imageTemplates' diff --git a/.azuredevops/modulePipelines/ms.web.connections.yml b/.azuredevops/modulePipelines/ms.web.connections.yml index da283faca2..f21218eb44 100644 --- a/.azuredevops/modulePipelines/ms.web.connections.yml +++ b/.azuredevops/modulePipelines/ms.web.connections.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Web/connections' diff --git a/.azuredevops/modulePipelines/ms.web.hostingenvironments.yml b/.azuredevops/modulePipelines/ms.web.hostingenvironments.yml index efc1a4bd6f..0b7431431d 100644 --- a/.azuredevops/modulePipelines/ms.web.hostingenvironments.yml +++ b/.azuredevops/modulePipelines/ms.web.hostingenvironments.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Web/hostingEnvironments' diff --git a/.azuredevops/modulePipelines/ms.web.serverfarms.yml b/.azuredevops/modulePipelines/ms.web.serverfarms.yml index 195039baac..cd6c97acf2 100644 --- a/.azuredevops/modulePipelines/ms.web.serverfarms.yml +++ b/.azuredevops/modulePipelines/ms.web.serverfarms.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Web/serverfarms' diff --git a/.azuredevops/modulePipelines/ms.web.sites.yml b/.azuredevops/modulePipelines/ms.web.sites.yml index 83336e7671..529839ae45 100644 --- a/.azuredevops/modulePipelines/ms.web.sites.yml +++ b/.azuredevops/modulePipelines/ms.web.sites.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Web/sites' diff --git a/.azuredevops/modulePipelines/ms.web.staticsites.yml b/.azuredevops/modulePipelines/ms.web.staticsites.yml index 4cf0f4302b..2785f8d603 100644 --- a/.azuredevops/modulePipelines/ms.web.staticsites.yml +++ b/.azuredevops/modulePipelines/ms.web.staticsites.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Web/staticSites' From f49e8a44958fbedf661218017a0e30e80b678f7d Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Tue, 19 Jul 2022 17:55:46 +1000 Subject: [PATCH 49/88] changed github to use settings.yml and token prefix --- .github/workflows/ms.aad.domainservices.yml | 3 ++- .github/workflows/ms.analysisservices.servers.yml | 3 ++- .github/workflows/ms.apimanagement.service.yml | 3 ++- .github/workflows/ms.appconfiguration.configurationstores.yml | 3 ++- .github/workflows/ms.authorization.locks.yml | 3 ++- .github/workflows/ms.authorization.policyassignments.yml | 3 ++- .github/workflows/ms.authorization.policydefinitions.yml | 3 ++- .github/workflows/ms.authorization.policyexemptions.yml | 3 ++- .github/workflows/ms.authorization.policysetdefinitions.yml | 3 ++- .github/workflows/ms.authorization.roleassignments.yml | 3 ++- .github/workflows/ms.authorization.roledefinitions.yml | 3 ++- .github/workflows/ms.automation.automationaccounts.yml | 3 ++- .github/workflows/ms.batch.batchaccounts.yml | 3 ++- .github/workflows/ms.cache.redis.yml | 3 ++- .github/workflows/ms.cognitiveservices.accounts.yml | 3 ++- .github/workflows/ms.compute.availabilitysets.yml | 3 ++- .github/workflows/ms.compute.diskencryptionsets.yml | 3 ++- .github/workflows/ms.compute.disks.yml | 3 ++- .github/workflows/ms.compute.galleries.yml | 3 ++- .github/workflows/ms.compute.images.yml | 3 ++- .github/workflows/ms.compute.proximityplacementgroups.yml | 3 ++- .github/workflows/ms.compute.virtualmachines.yml | 3 ++- .github/workflows/ms.compute.virtualmachinescalesets.yml | 3 ++- .github/workflows/ms.consumption.budgets.yml | 3 ++- .github/workflows/ms.containerinstance.containergroups.yml | 3 ++- .github/workflows/ms.containerregistry.registries.yml | 3 ++- .github/workflows/ms.containerservice.managedclusters.yml | 3 ++- .github/workflows/ms.databricks.workspaces.yml | 3 ++- .github/workflows/ms.datafactory.factories.yml | 3 ++- .github/workflows/ms.dataprotection.backupvaults.yml | 3 ++- .../workflows/ms.desktopvirtualization.applicationgroups.yml | 3 ++- .github/workflows/ms.desktopvirtualization.hostpools.yml | 3 ++- .github/workflows/ms.desktopvirtualization.scalingplans.yml | 3 ++- .github/workflows/ms.desktopvirtualization.workspaces.yml | 3 ++- .github/workflows/ms.documentdb.databaseaccounts.yml | 3 ++- .github/workflows/ms.eventgrid.systemtopics.yml | 3 ++- .github/workflows/ms.eventgrid.topics.yml | 3 ++- .github/workflows/ms.eventhub.namespaces.yml | 3 ++- .github/workflows/ms.healthbot.healthbots.yml | 3 ++- .github/workflows/ms.insights.actiongroups.yml | 3 ++- .github/workflows/ms.insights.activitylogalerts.yml | 3 ++- .github/workflows/ms.insights.components.yml | 3 ++- .github/workflows/ms.insights.diagnosticsettings.yml | 3 ++- .github/workflows/ms.insights.metricalerts.yml | 3 ++- .github/workflows/ms.insights.privatelinkscopes.yml | 3 ++- .github/workflows/ms.insights.scheduledqueryrules.yml | 3 ++- .github/workflows/ms.keyvault.vaults.yml | 3 ++- .github/workflows/ms.kubernetesconfiguration.extensions.yml | 3 ++- .../ms.kubernetesconfiguration.fluxconfigurations.yml | 3 ++- .github/workflows/ms.logic.workflows.yml | 3 ++- .github/workflows/ms.machinelearningservices.workspaces.yml | 3 ++- .../workflows/ms.managedidentity.userassignedidentities.yml | 3 ++- .../workflows/ms.managedservices.registrationdefinitions.yml | 3 ++- .github/workflows/ms.management.managementgroups.yml | 3 ++- .github/workflows/ms.netapp.netappaccounts.yml | 3 ++- .github/workflows/ms.network.applicationgateways.yml | 3 ++- .github/workflows/ms.network.applicationsecuritygroups.yml | 1 + .github/workflows/ms.network.azurefirewalls.yml | 3 ++- .github/workflows/ms.network.bastionhosts.yml | 3 ++- .github/workflows/ms.network.connections.yml | 3 ++- .github/workflows/ms.network.ddosprotectionplans.yml | 3 ++- .github/workflows/ms.network.expressroutecircuits.yml | 3 ++- .github/workflows/ms.network.firewallpolicies.yml | 3 ++- .github/workflows/ms.network.frontdoors.yml | 3 ++- .github/workflows/ms.network.ipgroups.yml | 3 ++- .github/workflows/ms.network.loadbalancers.yml | 3 ++- .github/workflows/ms.network.localnetworkgateways.yml | 3 ++- .github/workflows/ms.network.natgateways.yml | 3 ++- .github/workflows/ms.network.networkinterfaces.yml | 3 ++- .github/workflows/ms.network.networksecuritygroups.yml | 3 ++- .github/workflows/ms.network.networkwatchers.yml | 3 ++- .github/workflows/ms.network.privatednszones.yml | 3 ++- .github/workflows/ms.network.privateendpoints.yml | 3 ++- .github/workflows/ms.network.publicipaddresses.yml | 3 ++- .github/workflows/ms.network.publicipprefixes.yml | 3 ++- .github/workflows/ms.network.routetables.yml | 3 ++- .github/workflows/ms.network.trafficmanagerprofiles.yml | 3 ++- .github/workflows/ms.network.virtualhubs.yml | 3 ++- .github/workflows/ms.network.virtualnetworkgateways.yml | 3 ++- .github/workflows/ms.network.virtualnetworks.yml | 3 ++- .github/workflows/ms.network.virtualwans.yml | 3 ++- .github/workflows/ms.network.vpngateways.yml | 3 ++- .github/workflows/ms.network.vpnsites.yml | 3 ++- .github/workflows/ms.operationalinsights.workspaces.yml | 3 ++- .github/workflows/ms.operationsmanagement.solutions.yml | 3 ++- .github/workflows/ms.recoveryservices.vaults.yml | 3 ++- .github/workflows/ms.resources.deploymentscripts.yml | 3 ++- .github/workflows/ms.resources.resourcegroups.yml | 3 ++- .github/workflows/ms.resources.tags.yml | 3 ++- .github/workflows/ms.security.azuresecuritycenter.yml | 3 ++- .github/workflows/ms.servicebus.namespaces.yml | 3 ++- .github/workflows/ms.servicefabric.clusters.yml | 3 ++- .github/workflows/ms.signalrservice.webpubsub.yml | 3 ++- .github/workflows/ms.sql.managedinstances.yml | 3 ++- .github/workflows/ms.sql.servers.yml | 3 ++- .github/workflows/ms.storage.storageaccounts.yml | 3 ++- .github/workflows/ms.synapse.privatelinkhubs.yml | 3 ++- .github/workflows/ms.virtualmachineimages.imagetemplates.yml | 3 ++- .github/workflows/ms.web.connections.yml | 3 ++- .github/workflows/ms.web.hostingenvironments.yml | 3 ++- .github/workflows/ms.web.serverfarms.yml | 3 ++- .github/workflows/ms.web.sites.yml | 3 ++- .github/workflows/ms.web.staticsites.yml | 3 ++- .github/workflows/platform.dependencies.yml | 1 + 104 files changed, 206 insertions(+), 102 deletions(-) diff --git a/.github/workflows/ms.aad.domainservices.yml b/.github/workflows/ms.aad.domainservices.yml index ab37fe054d..05de480bed 100644 --- a/.github/workflows/ms.aad.domainservices.yml +++ b/.github/workflows/ms.aad.domainservices.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.AAD/DomainServices' workflowPath: '.github/workflows/ms.aad.domainservices.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.analysisservices.servers.yml b/.github/workflows/ms.analysisservices.servers.yml index 1a89d807d0..35c44f6106 100644 --- a/.github/workflows/ms.analysisservices.servers.yml +++ b/.github/workflows/ms.analysisservices.servers.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.AnalysisServices/servers' workflowPath: '.github/workflows/ms.analysisservices.servers.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.apimanagement.service.yml b/.github/workflows/ms.apimanagement.service.yml index 3da2e51cdd..12ec0f1011 100644 --- a/.github/workflows/ms.apimanagement.service.yml +++ b/.github/workflows/ms.apimanagement.service.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.ApiManagement/service' workflowPath: '.github/workflows/ms.apimanagement.service.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.appconfiguration.configurationstores.yml b/.github/workflows/ms.appconfiguration.configurationstores.yml index a0f4638b34..b262b989a8 100644 --- a/.github/workflows/ms.appconfiguration.configurationstores.yml +++ b/.github/workflows/ms.appconfiguration.configurationstores.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.AppConfiguration/configurationStores' workflowPath: '.github/workflows/ms.appconfiguration.configurationstores.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.authorization.locks.yml b/.github/workflows/ms.authorization.locks.yml index 40f02515f8..faa80586dd 100644 --- a/.github/workflows/ms.authorization.locks.yml +++ b/.github/workflows/ms.authorization.locks.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Authorization/locks' workflowPath: '.github/workflows/ms.authorization.locks.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.authorization.policyassignments.yml b/.github/workflows/ms.authorization.policyassignments.yml index 1364c4daec..abbd837d77 100644 --- a/.github/workflows/ms.authorization.policyassignments.yml +++ b/.github/workflows/ms.authorization.policyassignments.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Authorization/policyAssignments' workflowPath: '.github/workflows/ms.authorization.policyassignments.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.authorization.policydefinitions.yml b/.github/workflows/ms.authorization.policydefinitions.yml index e7164ab991..4830851583 100644 --- a/.github/workflows/ms.authorization.policydefinitions.yml +++ b/.github/workflows/ms.authorization.policydefinitions.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Authorization/policyDefinitions' workflowPath: '.github/workflows/ms.authorization.policydefinitions.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.authorization.policyexemptions.yml b/.github/workflows/ms.authorization.policyexemptions.yml index 435d8db25d..8c6047f22f 100644 --- a/.github/workflows/ms.authorization.policyexemptions.yml +++ b/.github/workflows/ms.authorization.policyexemptions.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Authorization/policyExemptions' workflowPath: '.github/workflows/ms.authorization.policyexemptions.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.authorization.policysetdefinitions.yml b/.github/workflows/ms.authorization.policysetdefinitions.yml index 55e7eee6f2..a46793ad38 100644 --- a/.github/workflows/ms.authorization.policysetdefinitions.yml +++ b/.github/workflows/ms.authorization.policysetdefinitions.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Authorization/policySetDefinitions' workflowPath: '.github/workflows/ms.authorization.policysetdefinitions.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.authorization.roleassignments.yml b/.github/workflows/ms.authorization.roleassignments.yml index 25c8ffe6f6..a95ca68e0c 100644 --- a/.github/workflows/ms.authorization.roleassignments.yml +++ b/.github/workflows/ms.authorization.roleassignments.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Authorization/roleAssignments' workflowPath: '.github/workflows/ms.authorization.roleassignments.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.authorization.roledefinitions.yml b/.github/workflows/ms.authorization.roledefinitions.yml index 9e3a315263..6d4de297e1 100644 --- a/.github/workflows/ms.authorization.roledefinitions.yml +++ b/.github/workflows/ms.authorization.roledefinitions.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Authorization/roleDefinitions' workflowPath: '.github/workflows/ms.authorization.roledefinitions.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.automation.automationaccounts.yml b/.github/workflows/ms.automation.automationaccounts.yml index 057e636864..c18d196750 100644 --- a/.github/workflows/ms.automation.automationaccounts.yml +++ b/.github/workflows/ms.automation.automationaccounts.yml @@ -26,7 +26,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Automation/automationAccounts' workflowPath: '.github/workflows/ms.automation.automationaccounts.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -34,6 +34,7 @@ env: ARM_MGMTGROUP_ID: ${{ secrets.ARM_MGMTGROUP_ID }} ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.batch.batchaccounts.yml b/.github/workflows/ms.batch.batchaccounts.yml index 328553a5f4..af81398ce2 100644 --- a/.github/workflows/ms.batch.batchaccounts.yml +++ b/.github/workflows/ms.batch.batchaccounts.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Batch/batchAccounts' workflowPath: '.github/workflows/ms.batch.batchaccounts.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.cache.redis.yml b/.github/workflows/ms.cache.redis.yml index 70876b1d7e..f27c1efd1f 100644 --- a/.github/workflows/ms.cache.redis.yml +++ b/.github/workflows/ms.cache.redis.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Cache/redis' workflowPath: '.github/workflows/ms.cache.redis.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.cognitiveservices.accounts.yml b/.github/workflows/ms.cognitiveservices.accounts.yml index fcfbbdc383..1ad931f140 100644 --- a/.github/workflows/ms.cognitiveservices.accounts.yml +++ b/.github/workflows/ms.cognitiveservices.accounts.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.CognitiveServices/accounts' workflowPath: '.github/workflows/ms.cognitiveservices.accounts.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.compute.availabilitysets.yml b/.github/workflows/ms.compute.availabilitysets.yml index b4094d2940..0fdd9f8e78 100644 --- a/.github/workflows/ms.compute.availabilitysets.yml +++ b/.github/workflows/ms.compute.availabilitysets.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Compute/availabilitySets' workflowPath: '.github/workflows/ms.compute.availabilitysets.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.compute.diskencryptionsets.yml b/.github/workflows/ms.compute.diskencryptionsets.yml index 8c9151e925..5a867c14e5 100644 --- a/.github/workflows/ms.compute.diskencryptionsets.yml +++ b/.github/workflows/ms.compute.diskencryptionsets.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Compute/diskEncryptionSets' workflowPath: '.github/workflows/ms.compute.diskencryptionsets.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.compute.disks.yml b/.github/workflows/ms.compute.disks.yml index b99dd3655d..0e638bff36 100644 --- a/.github/workflows/ms.compute.disks.yml +++ b/.github/workflows/ms.compute.disks.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Compute/disks' workflowPath: '.github/workflows/ms.compute.disks.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.compute.galleries.yml b/.github/workflows/ms.compute.galleries.yml index e2cf9591ef..37e6c5460f 100644 --- a/.github/workflows/ms.compute.galleries.yml +++ b/.github/workflows/ms.compute.galleries.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Compute/galleries' workflowPath: '.github/workflows/ms.compute.galleries.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.compute.images.yml b/.github/workflows/ms.compute.images.yml index 403c02fcf9..d2eb1dd30b 100644 --- a/.github/workflows/ms.compute.images.yml +++ b/.github/workflows/ms.compute.images.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Compute/images' workflowPath: '.github/workflows/ms.compute.images.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.compute.proximityplacementgroups.yml b/.github/workflows/ms.compute.proximityplacementgroups.yml index abd48055d3..5c1ea4b2b3 100644 --- a/.github/workflows/ms.compute.proximityplacementgroups.yml +++ b/.github/workflows/ms.compute.proximityplacementgroups.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Compute/proximityPlacementGroups' workflowPath: '.github/workflows/ms.compute.proximityplacementgroups.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.compute.virtualmachines.yml b/.github/workflows/ms.compute.virtualmachines.yml index 988ded0c5f..a761879d55 100644 --- a/.github/workflows/ms.compute.virtualmachines.yml +++ b/.github/workflows/ms.compute.virtualmachines.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Compute/virtualMachines' workflowPath: '.github/workflows/ms.compute.virtualmachines.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.compute.virtualmachinescalesets.yml b/.github/workflows/ms.compute.virtualmachinescalesets.yml index 470c7e1b59..b9c71a53a7 100644 --- a/.github/workflows/ms.compute.virtualmachinescalesets.yml +++ b/.github/workflows/ms.compute.virtualmachinescalesets.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Compute/virtualMachineScaleSets' workflowPath: '.github/workflows/ms.compute.virtualmachinescalesets.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.consumption.budgets.yml b/.github/workflows/ms.consumption.budgets.yml index b4e7f9a6e2..f1f1e8741a 100644 --- a/.github/workflows/ms.consumption.budgets.yml +++ b/.github/workflows/ms.consumption.budgets.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Consumption/budgets' workflowPath: '.github/workflows/ms.consumption.budgets.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.containerinstance.containergroups.yml b/.github/workflows/ms.containerinstance.containergroups.yml index 4765cf31f0..8d9856ffbc 100644 --- a/.github/workflows/ms.containerinstance.containergroups.yml +++ b/.github/workflows/ms.containerinstance.containergroups.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.ContainerInstance/containerGroups' workflowPath: '.github/workflows/ms.containerinstance.containergroups.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.containerregistry.registries.yml b/.github/workflows/ms.containerregistry.registries.yml index 3bd86f54f2..4b2c6a13e8 100644 --- a/.github/workflows/ms.containerregistry.registries.yml +++ b/.github/workflows/ms.containerregistry.registries.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.ContainerRegistry/registries' workflowPath: '.github/workflows/ms.containerregistry.registries.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.containerservice.managedclusters.yml b/.github/workflows/ms.containerservice.managedclusters.yml index 6d6677f79d..48647df363 100644 --- a/.github/workflows/ms.containerservice.managedclusters.yml +++ b/.github/workflows/ms.containerservice.managedclusters.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.ContainerService/managedClusters' workflowPath: '.github/workflows/ms.containerservice.managedclusters.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.databricks.workspaces.yml b/.github/workflows/ms.databricks.workspaces.yml index 758f2e7685..2f0068edc2 100644 --- a/.github/workflows/ms.databricks.workspaces.yml +++ b/.github/workflows/ms.databricks.workspaces.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Databricks/workspaces' workflowPath: '.github/workflows/ms.databricks.workspaces.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.datafactory.factories.yml b/.github/workflows/ms.datafactory.factories.yml index 65f92d041b..f6817813dd 100644 --- a/.github/workflows/ms.datafactory.factories.yml +++ b/.github/workflows/ms.datafactory.factories.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.DataFactory/factories' workflowPath: '.github/workflows/ms.datafactory.factories.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.dataprotection.backupvaults.yml b/.github/workflows/ms.dataprotection.backupvaults.yml index 6ad676cfca..5d2a8010d4 100644 --- a/.github/workflows/ms.dataprotection.backupvaults.yml +++ b/.github/workflows/ms.dataprotection.backupvaults.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.DataProtection/backupVaults' workflowPath: '.github/workflows/ms.dataprotection.backupvaults.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.desktopvirtualization.applicationgroups.yml b/.github/workflows/ms.desktopvirtualization.applicationgroups.yml index 0f370287eb..2a6f31b3f1 100644 --- a/.github/workflows/ms.desktopvirtualization.applicationgroups.yml +++ b/.github/workflows/ms.desktopvirtualization.applicationgroups.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.DesktopVirtualization/applicationgroups' workflowPath: '.github/workflows/ms.desktopvirtualization.applicationgroups.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.desktopvirtualization.hostpools.yml b/.github/workflows/ms.desktopvirtualization.hostpools.yml index bd431b614f..8d08d311b4 100644 --- a/.github/workflows/ms.desktopvirtualization.hostpools.yml +++ b/.github/workflows/ms.desktopvirtualization.hostpools.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.DesktopVirtualization/hostpools' workflowPath: '.github/workflows/ms.desktopvirtualization.hostpools.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.desktopvirtualization.scalingplans.yml b/.github/workflows/ms.desktopvirtualization.scalingplans.yml index 829b3aa685..f4d1e8e1d7 100644 --- a/.github/workflows/ms.desktopvirtualization.scalingplans.yml +++ b/.github/workflows/ms.desktopvirtualization.scalingplans.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.DesktopVirtualization/scalingplans' workflowPath: '.github/workflows/ms.desktopvirtualization.scalingplans.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.desktopvirtualization.workspaces.yml b/.github/workflows/ms.desktopvirtualization.workspaces.yml index b13b73fdf9..6fc8ad7946 100644 --- a/.github/workflows/ms.desktopvirtualization.workspaces.yml +++ b/.github/workflows/ms.desktopvirtualization.workspaces.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.DesktopVirtualization/workspaces' workflowPath: '.github/workflows/ms.desktopvirtualization.workspaces.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.documentdb.databaseaccounts.yml b/.github/workflows/ms.documentdb.databaseaccounts.yml index 8d6bca51f7..b06cffc50a 100644 --- a/.github/workflows/ms.documentdb.databaseaccounts.yml +++ b/.github/workflows/ms.documentdb.databaseaccounts.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.DocumentDB/databaseAccounts' workflowPath: '.github/workflows/ms.documentdb.databaseaccounts.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.eventgrid.systemtopics.yml b/.github/workflows/ms.eventgrid.systemtopics.yml index e40e8612e5..b440be3369 100644 --- a/.github/workflows/ms.eventgrid.systemtopics.yml +++ b/.github/workflows/ms.eventgrid.systemtopics.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.EventGrid/systemTopics' workflowPath: '.github/workflows/ms.eventgrid.systemtopics.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.eventgrid.topics.yml b/.github/workflows/ms.eventgrid.topics.yml index 5f45ab7026..e69b945e02 100644 --- a/.github/workflows/ms.eventgrid.topics.yml +++ b/.github/workflows/ms.eventgrid.topics.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.EventGrid/topics' workflowPath: '.github/workflows/ms.eventgrid.topics.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.eventhub.namespaces.yml b/.github/workflows/ms.eventhub.namespaces.yml index 74bdf5dfe6..05138cc2c9 100644 --- a/.github/workflows/ms.eventhub.namespaces.yml +++ b/.github/workflows/ms.eventhub.namespaces.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.EventHub/namespaces' workflowPath: '.github/workflows/ms.eventhub.namespaces.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.healthbot.healthbots.yml b/.github/workflows/ms.healthbot.healthbots.yml index 7f9124d280..77dc95d925 100644 --- a/.github/workflows/ms.healthbot.healthbots.yml +++ b/.github/workflows/ms.healthbot.healthbots.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.HealthBot/healthBots' workflowPath: '.github/workflows/ms.healthbot.healthbots.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.insights.actiongroups.yml b/.github/workflows/ms.insights.actiongroups.yml index 62d66ad671..50605d99e9 100644 --- a/.github/workflows/ms.insights.actiongroups.yml +++ b/.github/workflows/ms.insights.actiongroups.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Insights/actionGroups' workflowPath: '.github/workflows/ms.insights.actiongroups.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.insights.activitylogalerts.yml b/.github/workflows/ms.insights.activitylogalerts.yml index 4780c624cb..a43cdd678a 100644 --- a/.github/workflows/ms.insights.activitylogalerts.yml +++ b/.github/workflows/ms.insights.activitylogalerts.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Insights/activityLogAlerts' workflowPath: '.github/workflows/ms.insights.activitylogalerts.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.insights.components.yml b/.github/workflows/ms.insights.components.yml index 4ce0d56069..7073b658b2 100644 --- a/.github/workflows/ms.insights.components.yml +++ b/.github/workflows/ms.insights.components.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Insights/components' workflowPath: '.github/workflows/ms.insights.components.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.insights.diagnosticsettings.yml b/.github/workflows/ms.insights.diagnosticsettings.yml index 4c7e2bc7a2..e382108d02 100644 --- a/.github/workflows/ms.insights.diagnosticsettings.yml +++ b/.github/workflows/ms.insights.diagnosticsettings.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Insights/diagnosticSettings' workflowPath: '.github/workflows/ms.insights.diagnosticsettings.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.insights.metricalerts.yml b/.github/workflows/ms.insights.metricalerts.yml index bccae4382b..850421a03d 100644 --- a/.github/workflows/ms.insights.metricalerts.yml +++ b/.github/workflows/ms.insights.metricalerts.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Insights/metricAlerts' workflowPath: '.github/workflows/ms.insights.metricalerts.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.insights.privatelinkscopes.yml b/.github/workflows/ms.insights.privatelinkscopes.yml index b4bf6f27c9..ccc99cdd61 100644 --- a/.github/workflows/ms.insights.privatelinkscopes.yml +++ b/.github/workflows/ms.insights.privatelinkscopes.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Insights/privateLinkScopes' workflowPath: '.github/workflows/ms.insights.privatelinkscopes.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.insights.scheduledqueryrules.yml b/.github/workflows/ms.insights.scheduledqueryrules.yml index 35dfabbf7a..1f057bd8b1 100644 --- a/.github/workflows/ms.insights.scheduledqueryrules.yml +++ b/.github/workflows/ms.insights.scheduledqueryrules.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Insights/scheduledQueryRules' workflowPath: '.github/workflows/ms.insights.scheduledqueryrules.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.keyvault.vaults.yml b/.github/workflows/ms.keyvault.vaults.yml index cfb9f3ced2..1ddace569d 100644 --- a/.github/workflows/ms.keyvault.vaults.yml +++ b/.github/workflows/ms.keyvault.vaults.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.KeyVault/vaults' workflowPath: '.github/workflows/ms.keyvault.vaults.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.kubernetesconfiguration.extensions.yml b/.github/workflows/ms.kubernetesconfiguration.extensions.yml index 07fc455d70..e6ddfc5003 100644 --- a/.github/workflows/ms.kubernetesconfiguration.extensions.yml +++ b/.github/workflows/ms.kubernetesconfiguration.extensions.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.KubernetesConfiguration/extensions' workflowPath: '.github/workflows/ms.kubernetesconfiguration.extensions.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.kubernetesconfiguration.fluxconfigurations.yml b/.github/workflows/ms.kubernetesconfiguration.fluxconfigurations.yml index f0165866e1..63031860d6 100644 --- a/.github/workflows/ms.kubernetesconfiguration.fluxconfigurations.yml +++ b/.github/workflows/ms.kubernetesconfiguration.fluxconfigurations.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.KubernetesConfiguration/fluxConfigurations' workflowPath: '.github/workflows/ms.kubernetesconfiguration.fluxconfigurations.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.logic.workflows.yml b/.github/workflows/ms.logic.workflows.yml index 6ac381a45e..65b0b08510 100644 --- a/.github/workflows/ms.logic.workflows.yml +++ b/.github/workflows/ms.logic.workflows.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Logic/workflows' workflowPath: '.github/workflows/ms.logic.workflows.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.machinelearningservices.workspaces.yml b/.github/workflows/ms.machinelearningservices.workspaces.yml index 28d18b0561..2b192123b2 100644 --- a/.github/workflows/ms.machinelearningservices.workspaces.yml +++ b/.github/workflows/ms.machinelearningservices.workspaces.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.MachineLearningServices/workspaces' workflowPath: '.github/workflows/ms.machinelearningservices.workspaces.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.managedidentity.userassignedidentities.yml b/.github/workflows/ms.managedidentity.userassignedidentities.yml index 4306e0772d..3b2f9b430a 100644 --- a/.github/workflows/ms.managedidentity.userassignedidentities.yml +++ b/.github/workflows/ms.managedidentity.userassignedidentities.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.ManagedIdentity/userAssignedIdentities' workflowPath: '.github/workflows/ms.managedidentity.userassignedidentities.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.managedservices.registrationdefinitions.yml b/.github/workflows/ms.managedservices.registrationdefinitions.yml index fc59f63b15..9fe6b3bf0f 100644 --- a/.github/workflows/ms.managedservices.registrationdefinitions.yml +++ b/.github/workflows/ms.managedservices.registrationdefinitions.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.ManagedServices/registrationDefinitions' workflowPath: '.github/workflows/ms.managedservices.registrationdefinitions.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.management.managementgroups.yml b/.github/workflows/ms.management.managementgroups.yml index 63937c35ec..c114df283b 100644 --- a/.github/workflows/ms.management.managementgroups.yml +++ b/.github/workflows/ms.management.managementgroups.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Management/managementGroups' workflowPath: '.github/workflows/ms.management.managementgroups.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.netapp.netappaccounts.yml b/.github/workflows/ms.netapp.netappaccounts.yml index 298c4acdc8..ae58aa11bd 100644 --- a/.github/workflows/ms.netapp.netappaccounts.yml +++ b/.github/workflows/ms.netapp.netappaccounts.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.NetApp/netAppAccounts' workflowPath: '.github/workflows/ms.netapp.netappaccounts.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.applicationgateways.yml b/.github/workflows/ms.network.applicationgateways.yml index 0317ef528c..92787f9427 100644 --- a/.github/workflows/ms.network.applicationgateways.yml +++ b/.github/workflows/ms.network.applicationgateways.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/applicationGateways' workflowPath: '.github/workflows/ms.network.applicationgateways.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.applicationsecuritygroups.yml b/.github/workflows/ms.network.applicationsecuritygroups.yml index e39f8f0e63..542b106947 100644 --- a/.github/workflows/ms.network.applicationsecuritygroups.yml +++ b/.github/workflows/ms.network.applicationsecuritygroups.yml @@ -34,6 +34,7 @@ env: ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.azurefirewalls.yml b/.github/workflows/ms.network.azurefirewalls.yml index 9c84e57b27..cfcba1cb27 100644 --- a/.github/workflows/ms.network.azurefirewalls.yml +++ b/.github/workflows/ms.network.azurefirewalls.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/azureFirewalls' workflowPath: '.github/workflows/ms.network.azurefirewalls.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.bastionhosts.yml b/.github/workflows/ms.network.bastionhosts.yml index 54e8c6b729..0df9dec9f9 100644 --- a/.github/workflows/ms.network.bastionhosts.yml +++ b/.github/workflows/ms.network.bastionhosts.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/bastionHosts' workflowPath: '.github/workflows/ms.network.bastionhosts.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.connections.yml b/.github/workflows/ms.network.connections.yml index 0fe644b183..946bc050cd 100644 --- a/.github/workflows/ms.network.connections.yml +++ b/.github/workflows/ms.network.connections.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/connections' workflowPath: '.github/workflows/ms.network.connections.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.ddosprotectionplans.yml b/.github/workflows/ms.network.ddosprotectionplans.yml index c0f2abf626..14455a2a5e 100644 --- a/.github/workflows/ms.network.ddosprotectionplans.yml +++ b/.github/workflows/ms.network.ddosprotectionplans.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/ddosProtectionPlans' workflowPath: '.github/workflows/ms.network.ddosprotectionplans.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.expressroutecircuits.yml b/.github/workflows/ms.network.expressroutecircuits.yml index a5f81307a7..75577a7a16 100644 --- a/.github/workflows/ms.network.expressroutecircuits.yml +++ b/.github/workflows/ms.network.expressroutecircuits.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/expressRouteCircuits' workflowPath: '.github/workflows/ms.network.expressroutecircuits.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.firewallpolicies.yml b/.github/workflows/ms.network.firewallpolicies.yml index bbb779f72b..16bbb1f4e9 100644 --- a/.github/workflows/ms.network.firewallpolicies.yml +++ b/.github/workflows/ms.network.firewallpolicies.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/firewallPolicies' workflowPath: '.github/workflows/ms.network.firewallpolicies.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.frontdoors.yml b/.github/workflows/ms.network.frontdoors.yml index 7d3aee03b3..af1b3c4ffa 100644 --- a/.github/workflows/ms.network.frontdoors.yml +++ b/.github/workflows/ms.network.frontdoors.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/frontDoors' workflowPath: '.github/workflows/ms.network.frontdoors.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.ipgroups.yml b/.github/workflows/ms.network.ipgroups.yml index 8e82d4e2ba..eb314e11cf 100644 --- a/.github/workflows/ms.network.ipgroups.yml +++ b/.github/workflows/ms.network.ipgroups.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/ipGroups' workflowPath: '.github/workflows/ms.network.ipgroups.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.loadbalancers.yml b/.github/workflows/ms.network.loadbalancers.yml index 05c3fdfa27..be8e2849b2 100644 --- a/.github/workflows/ms.network.loadbalancers.yml +++ b/.github/workflows/ms.network.loadbalancers.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/loadBalancers' workflowPath: '.github/workflows/ms.network.loadbalancers.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.localnetworkgateways.yml b/.github/workflows/ms.network.localnetworkgateways.yml index 2238c4d2be..deeb412e3c 100644 --- a/.github/workflows/ms.network.localnetworkgateways.yml +++ b/.github/workflows/ms.network.localnetworkgateways.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/localNetworkGateways' workflowPath: '.github/workflows/ms.network.localnetworkgateways.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.natgateways.yml b/.github/workflows/ms.network.natgateways.yml index ae5f1dc4d4..97240a8615 100644 --- a/.github/workflows/ms.network.natgateways.yml +++ b/.github/workflows/ms.network.natgateways.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/natGateways' workflowPath: '.github/workflows/ms.network.natgateways.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.networkinterfaces.yml b/.github/workflows/ms.network.networkinterfaces.yml index d7c384f00c..68543ee095 100644 --- a/.github/workflows/ms.network.networkinterfaces.yml +++ b/.github/workflows/ms.network.networkinterfaces.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/networkInterfaces' workflowPath: '.github/workflows/ms.network.networkinterfaces.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.networksecuritygroups.yml b/.github/workflows/ms.network.networksecuritygroups.yml index 389b5ccf31..031c591fdd 100644 --- a/.github/workflows/ms.network.networksecuritygroups.yml +++ b/.github/workflows/ms.network.networksecuritygroups.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/networkSecurityGroups' workflowPath: '.github/workflows/ms.network.networksecuritygroups.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.networkwatchers.yml b/.github/workflows/ms.network.networkwatchers.yml index 6499938d62..c478058109 100644 --- a/.github/workflows/ms.network.networkwatchers.yml +++ b/.github/workflows/ms.network.networkwatchers.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/networkWatchers' workflowPath: '.github/workflows/ms.network.networkwatchers.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.privatednszones.yml b/.github/workflows/ms.network.privatednszones.yml index e7cec51a01..f2ed6ad7bb 100644 --- a/.github/workflows/ms.network.privatednszones.yml +++ b/.github/workflows/ms.network.privatednszones.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/privateDnsZones' workflowPath: '.github/workflows/ms.network.privatednszones.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.privateendpoints.yml b/.github/workflows/ms.network.privateendpoints.yml index 8d7ae5b2a8..2e527fd454 100644 --- a/.github/workflows/ms.network.privateendpoints.yml +++ b/.github/workflows/ms.network.privateendpoints.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/privateEndpoints' workflowPath: '.github/workflows/ms.network.privateendpoints.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.publicipaddresses.yml b/.github/workflows/ms.network.publicipaddresses.yml index b132a34dc5..0decab5456 100644 --- a/.github/workflows/ms.network.publicipaddresses.yml +++ b/.github/workflows/ms.network.publicipaddresses.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/publicIPAddresses' workflowPath: '.github/workflows/ms.network.publicipaddresses.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.publicipprefixes.yml b/.github/workflows/ms.network.publicipprefixes.yml index f33d593df7..c4752088d6 100644 --- a/.github/workflows/ms.network.publicipprefixes.yml +++ b/.github/workflows/ms.network.publicipprefixes.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/publicIPPrefixes' workflowPath: '.github/workflows/ms.network.publicipprefixes.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.routetables.yml b/.github/workflows/ms.network.routetables.yml index b52120ffeb..e4b983ada8 100644 --- a/.github/workflows/ms.network.routetables.yml +++ b/.github/workflows/ms.network.routetables.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/routeTables' workflowPath: '.github/workflows/ms.network.routetables.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.trafficmanagerprofiles.yml b/.github/workflows/ms.network.trafficmanagerprofiles.yml index 232b7cecc3..2822587b51 100644 --- a/.github/workflows/ms.network.trafficmanagerprofiles.yml +++ b/.github/workflows/ms.network.trafficmanagerprofiles.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/trafficmanagerprofiles' workflowPath: '.github/workflows/ms.network.trafficmanagerprofiles.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.virtualhubs.yml b/.github/workflows/ms.network.virtualhubs.yml index 3ad7931db1..93084ace9f 100644 --- a/.github/workflows/ms.network.virtualhubs.yml +++ b/.github/workflows/ms.network.virtualhubs.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/virtualHubs' workflowPath: '.github/workflows/ms.network.virtualhubs.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.virtualnetworkgateways.yml b/.github/workflows/ms.network.virtualnetworkgateways.yml index 09a0e735de..3ef9a461f3 100644 --- a/.github/workflows/ms.network.virtualnetworkgateways.yml +++ b/.github/workflows/ms.network.virtualnetworkgateways.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/virtualNetworkGateways' workflowPath: '.github/workflows/ms.network.virtualnetworkgateways.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.virtualnetworks.yml b/.github/workflows/ms.network.virtualnetworks.yml index 328b19cc67..28cfa46881 100644 --- a/.github/workflows/ms.network.virtualnetworks.yml +++ b/.github/workflows/ms.network.virtualnetworks.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/virtualNetworks' workflowPath: '.github/workflows/ms.network.virtualnetworks.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.virtualwans.yml b/.github/workflows/ms.network.virtualwans.yml index dcc0936a6a..fdffd56b70 100644 --- a/.github/workflows/ms.network.virtualwans.yml +++ b/.github/workflows/ms.network.virtualwans.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/virtualWans' workflowPath: '.github/workflows/ms.network.virtualwans.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.vpngateways.yml b/.github/workflows/ms.network.vpngateways.yml index 7afeddefa3..9e854173fb 100644 --- a/.github/workflows/ms.network.vpngateways.yml +++ b/.github/workflows/ms.network.vpngateways.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/vpnGateways' workflowPath: '.github/workflows/ms.network.vpngateways.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.vpnsites.yml b/.github/workflows/ms.network.vpnsites.yml index 7da3f82a7a..1f8048bf4a 100644 --- a/.github/workflows/ms.network.vpnsites.yml +++ b/.github/workflows/ms.network.vpnsites.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Network/vpnSites' workflowPath: '.github/workflows/ms.network.vpnsites.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.operationalinsights.workspaces.yml b/.github/workflows/ms.operationalinsights.workspaces.yml index fcd7c82af2..1c5c0fbf7f 100644 --- a/.github/workflows/ms.operationalinsights.workspaces.yml +++ b/.github/workflows/ms.operationalinsights.workspaces.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.OperationalInsights/workspaces' workflowPath: '.github/workflows/ms.operationalinsights.workspaces.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.operationsmanagement.solutions.yml b/.github/workflows/ms.operationsmanagement.solutions.yml index fe613f8b8c..483bcc7938 100644 --- a/.github/workflows/ms.operationsmanagement.solutions.yml +++ b/.github/workflows/ms.operationsmanagement.solutions.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.OperationsManagement/solutions' workflowPath: '.github/workflows/ms.operationsmanagement.solutions.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.recoveryservices.vaults.yml b/.github/workflows/ms.recoveryservices.vaults.yml index 6558bcf646..b995789dec 100644 --- a/.github/workflows/ms.recoveryservices.vaults.yml +++ b/.github/workflows/ms.recoveryservices.vaults.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.RecoveryServices/vaults' workflowPath: '.github/workflows/ms.recoveryservices.vaults.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.resources.deploymentscripts.yml b/.github/workflows/ms.resources.deploymentscripts.yml index 096e35c577..4a0c92f3a7 100644 --- a/.github/workflows/ms.resources.deploymentscripts.yml +++ b/.github/workflows/ms.resources.deploymentscripts.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Resources/deploymentScripts' workflowPath: '.github/workflows/ms.resources.deploymentscripts.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.resources.resourcegroups.yml b/.github/workflows/ms.resources.resourcegroups.yml index 088301edfd..cd6c9cdffb 100644 --- a/.github/workflows/ms.resources.resourcegroups.yml +++ b/.github/workflows/ms.resources.resourcegroups.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Resources/resourceGroups' workflowPath: '.github/workflows/ms.resources.resourcegroups.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.resources.tags.yml b/.github/workflows/ms.resources.tags.yml index 5b3cfd1a3d..d9afd968ec 100644 --- a/.github/workflows/ms.resources.tags.yml +++ b/.github/workflows/ms.resources.tags.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Resources/tags' workflowPath: '.github/workflows/ms.resources.tags.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.security.azuresecuritycenter.yml b/.github/workflows/ms.security.azuresecuritycenter.yml index a8a66941b6..bf40463ec7 100644 --- a/.github/workflows/ms.security.azuresecuritycenter.yml +++ b/.github/workflows/ms.security.azuresecuritycenter.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Security/azureSecurityCenter' workflowPath: '.github/workflows/ms.security.azuresecuritycenter.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.servicebus.namespaces.yml b/.github/workflows/ms.servicebus.namespaces.yml index a9d58a13c0..457253b08a 100644 --- a/.github/workflows/ms.servicebus.namespaces.yml +++ b/.github/workflows/ms.servicebus.namespaces.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.ServiceBus/namespaces' workflowPath: '.github/workflows/ms.servicebus.namespaces.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.servicefabric.clusters.yml b/.github/workflows/ms.servicefabric.clusters.yml index d593c6bccd..4ff3f678d5 100644 --- a/.github/workflows/ms.servicefabric.clusters.yml +++ b/.github/workflows/ms.servicefabric.clusters.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.ServiceFabric/clusters' workflowPath: '.github/workflows/ms.servicefabric.clusters.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.signalrservice.webpubsub.yml b/.github/workflows/ms.signalrservice.webpubsub.yml index 050f20c344..2ef6468a6f 100644 --- a/.github/workflows/ms.signalrservice.webpubsub.yml +++ b/.github/workflows/ms.signalrservice.webpubsub.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.SignalRService/webPubSub' workflowPath: '.github/workflows/ms.signalrservice.webpubsub.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.sql.managedinstances.yml b/.github/workflows/ms.sql.managedinstances.yml index 90c044d510..3db1a64656 100644 --- a/.github/workflows/ms.sql.managedinstances.yml +++ b/.github/workflows/ms.sql.managedinstances.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Sql/managedInstances' workflowPath: '.github/workflows/ms.sql.managedinstances.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.sql.servers.yml b/.github/workflows/ms.sql.servers.yml index 62a73eafe5..a0f4823998 100644 --- a/.github/workflows/ms.sql.servers.yml +++ b/.github/workflows/ms.sql.servers.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Sql/servers' workflowPath: '.github/workflows/ms.sql.servers.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.storage.storageaccounts.yml b/.github/workflows/ms.storage.storageaccounts.yml index b99de66b34..68fdbacde8 100644 --- a/.github/workflows/ms.storage.storageaccounts.yml +++ b/.github/workflows/ms.storage.storageaccounts.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Storage/storageAccounts' workflowPath: '.github/workflows/ms.storage.storageaccounts.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.synapse.privatelinkhubs.yml b/.github/workflows/ms.synapse.privatelinkhubs.yml index f016c9daea..5d298b8ef9 100644 --- a/.github/workflows/ms.synapse.privatelinkhubs.yml +++ b/.github/workflows/ms.synapse.privatelinkhubs.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Synapse/privateLinkHubs' workflowPath: '.github/workflows/ms.synapse.privatelinkhubs.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.virtualmachineimages.imagetemplates.yml b/.github/workflows/ms.virtualmachineimages.imagetemplates.yml index 5c2eb4a2bd..132ebb97dd 100644 --- a/.github/workflows/ms.virtualmachineimages.imagetemplates.yml +++ b/.github/workflows/ms.virtualmachineimages.imagetemplates.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.VirtualMachineImages/imageTemplates' workflowPath: '.github/workflows/ms.virtualmachineimages.imagetemplates.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.web.connections.yml b/.github/workflows/ms.web.connections.yml index 8a699933be..a0145804b7 100644 --- a/.github/workflows/ms.web.connections.yml +++ b/.github/workflows/ms.web.connections.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Web/connections' workflowPath: '.github/workflows/ms.web.connections.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.web.hostingenvironments.yml b/.github/workflows/ms.web.hostingenvironments.yml index 257824fc29..d13ac505f5 100644 --- a/.github/workflows/ms.web.hostingenvironments.yml +++ b/.github/workflows/ms.web.hostingenvironments.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Web/hostingEnvironments' workflowPath: '.github/workflows/ms.web.hostingenvironments.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.web.serverfarms.yml b/.github/workflows/ms.web.serverfarms.yml index 1b5363948a..7fbb7a6729 100644 --- a/.github/workflows/ms.web.serverfarms.yml +++ b/.github/workflows/ms.web.serverfarms.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Web/serverfarms' workflowPath: '.github/workflows/ms.web.serverfarms.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.web.sites.yml b/.github/workflows/ms.web.sites.yml index c664d89611..e7a0a7fa52 100644 --- a/.github/workflows/ms.web.sites.yml +++ b/.github/workflows/ms.web.sites.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Web/sites' workflowPath: '.github/workflows/ms.web.sites.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.web.staticsites.yml b/.github/workflows/ms.web.staticsites.yml index 8dbaae5f4d..d1b3e7302c 100644 --- a/.github/workflows/ms.web.staticsites.yml +++ b/.github/workflows/ms.web.staticsites.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Web/staticSites' workflowPath: '.github/workflows/ms.web.staticsites.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -33,6 +33,7 @@ env: ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/platform.dependencies.yml b/.github/workflows/platform.dependencies.yml index 315edcbeb0..58130af163 100644 --- a/.github/workflows/platform.dependencies.yml +++ b/.github/workflows/platform.dependencies.yml @@ -35,6 +35,7 @@ env: ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: job_deploy_rg: From 384fea13039481b3055f0bd2ec6e9e0cdebf1fdc Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Wed, 20 Jul 2022 17:35:14 +1000 Subject: [PATCH 50/88] update generic doco --- ...ibution guide - Validate module locally.md | 2 +- ...started - Check NamePrefix availability.md | 2 +- ...board module library and CI environment.md | 30 +++++++----- docs/wiki/Solution creation.md | 2 +- .../The CI environment - Pipeline design.md | 2 +- .../The CI environment - Token replacement.md | 45 +++++++++--------- docs/wiki/The library - Module design.md | 2 +- .../media/CIEnvironment/tokenReplacement.png | Bin 418285 -> 417818 bytes .../tools/Test-NamePrefixAvailability.ps1 | 32 ++++++------- 9 files changed, 59 insertions(+), 58 deletions(-) diff --git a/docs/wiki/Contribution guide - Validate module locally.md b/docs/wiki/Contribution guide - Validate module locally.md index 73b70a9ed9..2d53990eff 100644 --- a/docs/wiki/Contribution guide - Validate module locally.md +++ b/docs/wiki/Contribution guide - Validate module locally.md @@ -23,7 +23,7 @@ If the switch for either the validation test (`-ValidationTest`) or deployment t 1. Create a dictionary to replace all tokens in these parameter files with actual values. This dictionary will consist - of the subscriptionID & managementGroupID of the provided `ValidateOrDeployParameters` object, - add all key-value pairs of the `-AdditionalTokens` object to it, - - and optionally also add all key-value pairs specified in the `settings.json`'s `parameterFileTokens` object + - and optionally also add all key-value pairs specified in the `settings.yml`, under the 'local tokens settings'. 1. If the `-ValidationTest` parameter was set, it runs a deployment validation using the `Test-TemplateDeployment` script. 1. If the `-DeploymentTest` parameter was set, it runs a deployment using the `New-TemplateDeployment` script (with no retries). 1. As a final step, it rolls the parameter files back to their original state if either the `-ValidationTest` or `-DeploymentTest` parameters were provided. diff --git a/docs/wiki/Getting started - Check NamePrefix availability.md b/docs/wiki/Getting started - Check NamePrefix availability.md index 03512cb6b9..98aca48592 100644 --- a/docs/wiki/Getting started - Check NamePrefix availability.md +++ b/docs/wiki/Getting started - Check NamePrefix availability.md @@ -1,4 +1,4 @@ -The `'Test-NamePrefixAvailability'` function provides you with the capability to test if the [`namePrefix`](./The%20CI%20environment%20-%20Token%20replacement#optional-local-custom-tokens), specified in the [`settings.json`](https://github.com/Azure/ResourceModules/blob/main/settings.json) file, conflicts with any existing resource. +The `'Test-NamePrefixAvailability'` function provides you with the capability to test if the [`namePrefix`](./The%20CI%20environment%20-%20Token%20replacement#optional-local-custom-tokens), specified in the [`settings.yml`](https://github.com/Azure/ResourceModules/blob/main/settings.yml) file, conflicts with any existing resource. --- diff --git a/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md b/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md index 6ab4b95586..4d55fc5233 100644 --- a/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md +++ b/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md @@ -90,26 +90,28 @@ To lower the barrier to entry and allow users to easily define their own naming > **Note:** This prefix is only used by the CI environment you validate your modules in, and doesn't affect the naming of any resources you deploy as part of any multi-module solutions (applications/workloads) based on the modules. -Each pipeline in CARML deploying resources uses a logic that automatically replaces "tokens" (i.e., placeholders) in any parameter file. Tokens are stored in only a few central locations to facilitate maintenance (e.g., local `settings.json`, repository secrets or variable groups). +Each pipeline in CARML deploying resources uses a logic that automatically replaces "tokens" (i.e., placeholders) in any parameter file. Tokens are stored in only a few central locations to facilitate maintenance (e.g., local `settings.yml`, repository secrets or variable groups). To update the `namePrefix`, perform the following steps: -1. Open the `settings.json` file in the repository's root directory. +1. Open the `settings.yml` file in the repository's root directory. -1. Replace the `"value": "<...>"` of token `namePrefix` with a different value: +1. Replace the value of the `localToken_namePrefix` with a different value: - ```json - { - "name": "namePrefix", - "value": "<...>" - } + ```yml + localToken_namePrefix: 'cntso' ``` + > **Note:** The value should be a 3-5 character long string like `cntso`. Longer strings are not recommended as they may conflict with Azure resource name length restrictions. + > **Note:** The CI pipelines automatically removes `localToken_` section from the name when processing the tokens replacement. + > **Note:** We highly encourage you to use the 'Check namePrefix availability' script ([see the documentation here](./Getting%20started%20-%20Check%20NamePrefix%20availability)) to check if the intended resource name will be available, based on the provided prefix. For further information on the token replacement logic, please refer to the corresponding [Token replacement](./The%20CI%20environment%20-%20Token%20replacement) section. + If you do not prefer to set the `namePrefix` locally for your CI environment. You can optionally set it as a GitHub Secret or add it to the ADO variable group as the key `TOKEN_NAMEPREFIX` with value `your name prefix value` and that will take precedence over the one specified in the `settings.yml`. + ## 3.2 Set up CI-environment-specific configuration While the concepts are the same, the configuration of the CI environment can differ drastically depending on the DevOps environment in which you want to register and run your pipelines. Following, you can find instructions on how to perform the remaining configuration in the corresponding DevOps environment: @@ -135,6 +137,7 @@ To use the environment's pipelines you should use the information you gathered d | `DEPLOYMENT_SP_ID` | `de33a0e7-64d9-4a94-8fe9-b018cedf1e05` | The service principal ID (Object ID) of the principal used as the Azure service connection. Also used for test Role Assignments when modules are being deployed into Azure. | | `AZURE_CREDENTIALS` | `{"clientId": "4ce8ce4c-cac0-48eb-b815-65e5763e2929", "clientSecret": "", "subscriptionId": "d0312b25-9160-4550-914f-8738d9b5caf5", "tenantId": "9734cec9-4384-445b-bbb6-767e7be6e5ec" }` | The login credentials of the deployment principal used to log into the target Azure environment to test in. The format is described [here](https://github.com/Azure/login#configure-deployment-credentials). | | `PLATFORM_REPO_UPDATE_PAT` | `` | A private access token (PAT) with enough permissions assigned to it to push into the main branch. This PAT is leveraged by pipelines that automatically generate ReadMe files to keep them up to date. | +| `TOKEN_NAMEPREFIX` | `` | Optional. If you specify the name prefix token here, this will take precedence over the `localToken_namePrefix` specified in the `settings.yml`. |

@@ -166,9 +169,9 @@ To use the environment's pipelines you should use the information you gathered d > > **Make sure you create this object as one continuous string as shown above** - using the information you collected during [Step 1](#1-configure-your-azure-environment). Failing to format the secret as above, causes GitHub to consider each line of the json object as a separate secret string. If you're interested, you can find more information about this object [here](https://github.com/Azure/login#configure-deployment-credentials). -### 3.2.2 Set up variables file +### 3.2.2 Set up settings file -The primary pipeline variable file ([`global.variables.yml`](https://github.com/Azure/ResourceModules/blob/main/global.variables.yml)) hosts the fundamental pipeline configuration. In the file you will find and can configure settings such as: +The primary pipeline settings file ([`settings.yml`](https://github.com/Azure/ResourceModules/blob/main/settings.yml)) hosts the fundamental pipeline configuration. In the file you will find and can configure settings such as:

General @@ -264,6 +267,7 @@ Based on the information you gathered in the [Azure setup](#1-configure-your-azu | `ARM_SUBSCRIPTION_ID` | `d0312b25-9160-4550-914f-8738d9b5caf5` | The ID of the subscription to test-deploy modules in. | | `ARM_TENANT_ID` | `9734cec9-4384-445b-bbb6-767e7be6e5ec` | The tenant ID of the Azure Active Directory tenant to test-deploy modules in. | | `DEPLOYMENT_SP_ID` | `de33a0e7-64d9-4a94-8fe9-b018cedf1e05` | The service principal ID (Object ID) of the principal used as the Azure service connection. Also used for test Role Assignments when modules are being deployed into Azure. | +| `TOKEN_NAMEPREFIX` | `` | Optional. If you specify the name prefix token here, this will take precedence over the `localToken_namePrefix` specified in the `settings.yml`. | Make sure its name matches the `group` reference used in the module pipelines. For example @@ -274,9 +278,9 @@ variables: > **Note:** If you need to use different name than `PLATFORM_VARIABLES`, make sure to search & replace all references with the new name. -### 3.2.3 Set up variables file +### 3.2.3 Set up settings file -The primary pipeline variable file ([`global.variables.yml`](https://github.com/Azure/ResourceModules/blob/main/global.variables.yml)) hosts the fundamental pipeline configuration. In the file, you will find and can configure information such as: +The primary pipeline settings file ([`settings.yml`](https://github.com/Azure/ResourceModules/blob/main/settings.yml)) hosts the fundamental pipeline configuration. In the file, you will find and can configure information such as:
General @@ -339,7 +343,7 @@ This section will explain what is required to publish the modules to [Azure Arti #### The dependent components are 1. An Azure DevOps organization and project 1. An Azure DevOps artifacts feed - > Note: The default feed name is `ResourceModules` as configured in the [`global.variables.yml`](https://github.com/Azure/ResourceModules/blob/main/global.variables.yml) file's variable `vstsFeedName`. Update the value here if you want to use a different name, but make sure it matches the name of the artifact feed created in Azure DevOps. + > Note: The default feed name is `ResourceModules` as configured in the [`settings.yml`](https://github.com/Azure/ResourceModules/blob/main/settings.yml) file's variable `vstsFeedName`. Update the value here if you want to use a different name, but make sure it matches the name of the artifact feed created in Azure DevOps. 1. An Azure DevOps project to host the artifact feed > Note: There are a couple options to consider when setting up an Azure Artifact feed. For example, organization-scoped feeds vs project-scoped feeds. Please see what option suits your needs by reviewing the [feeds](https://docs.microsoft.com/en-us/azure/devops/artifacts/concepts/feeds?view=azure-devops) document first. 1. If you chose the feed to be project-scoped, you will need the Project Build Service account to have `Contributor` access to publish to the Azure Artifacts feed. To set this, follow the [Pipeline permission](https://docs.microsoft.com/en-us/azure/devops/artifacts/feeds/feed-permissions?view=azure-devops#pipelines-permissions) steps. diff --git a/docs/wiki/Solution creation.md b/docs/wiki/Solution creation.md index d5c8221c23..93bdd1ab0a 100644 --- a/docs/wiki/Solution creation.md +++ b/docs/wiki/Solution creation.md @@ -408,7 +408,7 @@ on: env: AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} removeDeployment: false - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' jobs: job_deploy_multi_repo_solution: diff --git a/docs/wiki/The CI environment - Pipeline design.md b/docs/wiki/The CI environment - Pipeline design.md index d431aa45a6..fdfa77d87d 100644 --- a/docs/wiki/The CI environment - Pipeline design.md +++ b/docs/wiki/The CI environment - Pipeline design.md @@ -72,7 +72,7 @@ In addition, workflows leverage the following composite actions: | Composite Action | Description | | - | - | | **getWorkflowInput** | This action allows fetching workflow input values from the module's workflow file, even if the pipeline was not triggered via a `workflow_dispatch` action. Without it, we would not be able to process the contained information and would need to duplicate the configuration as workflow variables. Such input values are for example, the removal switch `removeDeployment`. | -| **setEnvironmentVariables** | This action parses the variables file ([`global.variables.yml`](https://github.com/Azure/ResourceModules/blob/main/global.variables.yml)) and sets the key-value pairs in the `variables` list as environment variables. | +| **setEnvironmentVariables** | This action parses the settings file ([`settings.yml`](https://github.com/Azure/ResourceModules/blob/main/settings.yml)) and sets the key-value pairs in the `variables` list as environment variables. | Technical documentation for each composite action, such as required input and output variables, is included in each `action.yml` file located in path `.github/actions/templates`. diff --git a/docs/wiki/The CI environment - Token replacement.md b/docs/wiki/The CI environment - Token replacement.md index 1874be559e..565d066166 100644 --- a/docs/wiki/The CI environment - Token replacement.md +++ b/docs/wiki/The CI environment - Token replacement.md @@ -39,37 +39,38 @@ These are tokens constructed from environment variables, which are defined in th ## (Optional) Local Custom Tokens -These are tokens defined in the Git Repository inside a [Settings.json](https://github.com/Azure/ResourceModules/blob/main/settings.json) file. This allows creating tokens that are local and updatable via Source Control mechanisms. Here is an example on where these tokens are stored. You can add key-value pairs as required: +These are tokens defined in the Git Repository inside a [settings.yml](https://github.com/Azure/ResourceModules/blob/main/settings.yml) file. This allows creating tokens that are local and updatable via Source Control mechanisms. Here is an example on where these tokens are stored. You can add key-value pairs as required: + +```yml +localToken_tokenA: 'foo' +localToken_tokenB: 'bar' -```json -"localTokens": { - "tokens": [ - { - "name": "tokenName", - "value": "tokenValue", - "metadata":{ - "description":"token description" - } - } - ] -} ``` +> **Note:** The CI pipelines automatically removes `localToken_` section from the name when processing the tokens replacement. This means that your actual token name is `tokenA` and NOT `localToken_tokenA`. + Let's say you'd want to use this token inside a Key Vault parameter file, to deploy the Key Vault with a name that contains this token: ```json "parameters": { "name": { - "value": "<>-keyVault" + "value": "<>-keyVault-<>" } } ``` -Once the Key Vault is deployed, you'll notice that the Key Vault name in Azure will be `tokenValue-keyVault` +Once the Key Vault is deployed, you'll notice that the Key Vault name in Azure will be `foo-keyVault-bar` + +The token prefix `'<<'` and suffix `'>>'` in the above example are also configurable in the [settings.yml](https://github.com/Azure/ResourceModules/blob/main/settings.yml) file. + +The solution comes with one predefined local token `namePrefix`. This token is leveraged in most of the parameter files for test deployments. It allows using a consistent naming prefix that is applied to all resources being tested. There are two ways this token can be set and one will take precedence over the other: + +1. By updating the value of `localToken_namePrefix` in the [settings.yml](https://github.com/Azure/ResourceModules/blob/main/settings.yml), which then becomes `namePrefix` when the pipelines run. + +1. Creating a GitHub Secret / ADO variable called `TOKEN_NAMEPREFIX`, which then becomes `namePrefix` when the pipelines run. If created as a secret or ADO variable, it will take precedence over the one defined in the [settings.yml](https://github.com/Azure/ResourceModules/blob/main/settings.yml). -The token prefix `'<<'` and suffix `'>>'` in the above example are also configurable in the [Settings.json](https://github.com/Azure/ResourceModules/blob/main/settings.json) file. -The solution comes with one predefined local token `namePrefix`. When validating modules through the CI environment, you must update it to a custom value as described in the [Update default nameprefix](./Getting%20started%20-%20Scenario%202%20Onboard%20module%20library%20and%20CI%20environment#31-update-default-nameprefix) paragraph. This is done to avoid conflicts with resources requiring a globally unique name, such as storage accounts or Key Vaults. +When validating modules through the CI environment, you must update it to a custom value as described in the [Update default nameprefix](./Getting%20started%20-%20Scenario%202%20Onboard%20module%20library%20and%20CI%20environment#31-update-default-nameprefix) paragraph. This is done to avoid conflicts with resources requiring a globally unique name, such as storage accounts or Key Vaults. > **Note**: Do not store sensitive information in this location as they will be present in your Git History. Follow best [practices and guidelines](https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/best-practices#security-recommendations-for-parameters) on how to handle secrets in template deployments. @@ -86,23 +87,23 @@ The below diagram illustrates the Token Replacement Functionality via the [valid tokenReplacement - **1A.** The user creates default tokens as [GitHub Secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository) or [Azure DevOps Pipeline Variables](https://docs.microsoft.com/en-us/azure/devops/pipelines/library/?view=azure-devops), that are injected as environment variables. -- **1B.** The user can also create local custom Parameter File Tokens in the [Settings.json](https://github.com/Azure/ResourceModules/blob/main/settings.json) under the `localTokens` - `tokens` property. -- **2.** The parameter files can now be tokenized as per required value. And the token format can look like `<>`. Example: +- **1B.** The user can also create local custom Parameter File Tokens in the [settings.yml](https://github.com/Azure/ResourceModules/blob/main/settings.yml). Tokens start with `localTokens_` and then followed by the actual token name (e.g. `tokenA`). This prefix gets removed by the CI leaving the original token name +- **2.** The parameter files can now be tokenized as per required value. And the token format can look like `<>`. Example: ```json "adminPassword": { "reference": { "keyVault": { - "id": "/subscriptions/<>/resourceGroups/validation-rg/providers/Microsoft.KeyVault/vaults/<>-keyVault" + "id": "/subscriptions/<>/resourceGroups/validation-rg/providers/Microsoft.KeyVault/vaults/<>-keyVault" }, - "secretName": "<>" + "secretName": "<>" } } ``` - **3A.** The Replace Tokens function gets the default tokens from the environment variables. > Default Tokens are harder to scale as they are explicitly defined in deploy/validate task, workflows and pipelines, and these components must be updated as you create more tokens. -- **3B.** The Replace Tokens function gets local custom tokens from the [Settings.json](https://github.com/Azure/ResourceModules/blob/main/settings.json). +- **3B.** The Replace Tokens function gets local custom tokens from the [settings.yml](https://github.com/Azure/ResourceModules/blob/main/settings.yml). > Local Tokens are easier to scale as you just need to define them in this file without adding new environment variables or modifying workflows or tasks. - **3C.** The Replace Tokens function gets the Module Parameter file (tokenized and not deployable) and then all tokens are processed for replacement. diff --git a/docs/wiki/The library - Module design.md b/docs/wiki/The library - Module design.md index 800e158f27..2c7729b3e5 100644 --- a/docs/wiki/The library - Module design.md +++ b/docs/wiki/The library - Module design.md @@ -542,7 +542,7 @@ Each module in CARML contains a `defaultTelemetry` deployment `'pid--${un This resource enables the CARML product team to query the number of deployments of a given template from Azure - and as such, get insights into its adoption. -When using CARML's CI environment you can enable/disable this deployment by switching the `enableDefaultTelemetry` setting in the `settings.json` file in the repository's root. This value is automatically injected into each individual deployment that is performed as part of the environment's pipeline. +When using CARML's CI environment you can enable/disable this deployment by switching the `enableDefaultTelemetry` setting in the `settings.yml` file in the repository's root. This value is automatically injected into each individual deployment that is performed as part of the environment's pipeline. When consuming the modules outside of CARML's pipelines you can either - Set the parameter to a default value of `'false'` diff --git a/docs/wiki/media/CIEnvironment/tokenReplacement.png b/docs/wiki/media/CIEnvironment/tokenReplacement.png index 87e36be95c529b6623a2ceadcaa878a800c31f19..caefce25d3d7e54a8e0702b30617f46e7487bf9f 100644 GIT binary patch literal 417818 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 z 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ΝQ)>Wy2Y#285z6 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≫0Sd#YKojTO~YyH^RJB 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≧DEa*=HSD9 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 diff --git a/utilities/tools/Test-NamePrefixAvailability.ps1 b/utilities/tools/Test-NamePrefixAvailability.ps1 index 87badcbfb3..c3e9bbff8f 100644 --- a/utilities/tools/Test-NamePrefixAvailability.ps1 +++ b/utilities/tools/Test-NamePrefixAvailability.ps1 @@ -65,28 +65,24 @@ function Test-NamePrefixAvailability { Tokens = $Tokens } - # Tokens in settings.json - $settingsFilePath = Join-Path $root 'settings.json' - if (Test-Path $settingsFilePath) { - $Settings = Get-Content -Path $settingsFilePath -Raw | ConvertFrom-Json -AsHashtable - $ConvertTokensInputs += @{ - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix - } + # Tokens in settings.yml + $GlobalVariablesObject = Get-Content -Path (Join-Path $PSScriptRoot '..\..\settings.yml') | ConvertFrom-Yaml -ErrorAction Stop | Select-Object -ExpandProperty variables + + # Construct Token Configuration Input + $tokenConfiguration = @{ + Tokens = @{} + TokenPrefix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenPrefix + TokenSuffix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenSuffix + } - if ($Settings.parameterFileTokens.localTokens) { - $tokenMap = @{} - foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{ $token.name = $token.value } - } - Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.Tokens += $tokenMap - } + # Add local (source control) tokens + foreach ($localToken in ($GlobalVariablesObject.Keys | ForEach-Object { if ($PSItem.contains('localToken_')) { $PSItem } })) { + $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '', 'OrdinalIgnoreCase')] = $GlobalVariablesObject.$localToken } try { # Invoke Token Replacement Functionality and Convert Tokens in Parameter Files - $parameterFiles | ForEach-Object { $null = Convert-TokensInFile @ConvertTokensInputs -FilePath $_ } + $parameterFiles | ForEach-Object { $null = Convert-TokensInFile @tokenConfiguration -FilePath $_ } # Extract Parameter Names @@ -178,7 +174,7 @@ function Test-NamePrefixAvailability { # Restore parameter files # ----------------------- Write-Verbose 'Restoring Tokens' - $parameterFiles | ForEach-Object { $null = Convert-TokensInFile @ConvertTokensInputs -FilePath $_ -SwapValueWithName $true } + $parameterFiles | ForEach-Object { $null = Convert-TokensInFile @tokenConfiguration -FilePath $_ -SwapValueWithName $true } } } From 1baf387e9e1f6b1634997f402d8f9d7156df3b98 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Wed, 20 Jul 2022 17:56:07 +1000 Subject: [PATCH 51/88] Updated documentation --- ... Scenario 2 Onboard module library and CI environment.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md b/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md index 4d55fc5233..816bc8842b 100644 --- a/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md +++ b/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md @@ -78,6 +78,12 @@ Alternatively, you can also do the same with a specific release by navigating to # 3. Configure the CI environment +CARML uses a single ([`settings.yml`](https://github.com/Azure/ResourceModules/blob/main/settings.yml)) file for configuring the CI environment. To replicate the CI environment locally on your machine, and perform local modules tests and validations, you must install the ([powershell-yaml](https://www.powershellgallery.com/packages/powershell-yaml/0.4.2)) module from the PowerShell gallery by executing the following on your PowerShell CLI: + +```powershell +Install-Module -Name powershell-yaml +``` + To configure the CI environment you have to perform several steps: - [3.1 Update default `namePrefix`](#31-update-default-nameprefix) - [3.2 Set up CI-environment-specific configuration](#32-set-up-ci-environment-specific-configuration) From 7e07d99cd797bf25233b0d02614ea489ed93ab94 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Wed, 20 Jul 2022 18:37:29 +1000 Subject: [PATCH 52/88] updated app security group duplicate --- .github/workflows/ms.network.applicationsecuritygroups.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ms.network.applicationsecuritygroups.yml b/.github/workflows/ms.network.applicationsecuritygroups.yml index 542b106947..e39f8f0e63 100644 --- a/.github/workflows/ms.network.applicationsecuritygroups.yml +++ b/.github/workflows/ms.network.applicationsecuritygroups.yml @@ -34,7 +34,6 @@ env: ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' - TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### From 6059adda34153effaca792e7757e568c762deca9 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Fri, 22 Jul 2022 14:49:33 +1000 Subject: [PATCH 53/88] updated from upstream/main --- settings.yml | 2 +- utilities/tools/Test-ModuleLocally.ps1 | 72 +++++++++++++------------- 2 files changed, 36 insertions(+), 38 deletions(-) diff --git a/settings.yml b/settings.yml index d4e5096f94..1e659892eb 100644 --- a/settings.yml +++ b/settings.yml @@ -13,7 +13,7 @@ variables: # the 'localToken_' prefix will be removed from the key name when the pipelines run. # e.g. if you have a token in your parameter file as <>, then the token defined in this file looks like "localToken_customKey": 'value' - localToken_namePrefix: 'zu3bx' # A 3-5 character length string, included in the resources names, is overridden if provided as GitHub Secret / ADO Variable + localToken_namePrefix: 'cntso' # A 3-5 character length string, included in the resources names, is overridden if provided as GitHub Secret / ADO Variable ###################################### # global tokens settings diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index 48e712f37f..0ca65c0e84 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -1,5 +1,4 @@ - -<# +<# .SYNOPSIS This function helps with testing a module locally @@ -204,9 +203,9 @@ function Test-ModuleLocally { Invoke-Pester -Configuration @{ Run = @{ Container = New-PesterContainer -Path (Join-Path $repoRootPath $moduleTestFilePath) -Data @{ - repoRootPath = $repoRootPath - moduleFolderPaths = Split-Path $TemplateFilePath -Parent - enforcedTokenList = $enforcedTokenList + repoRootPath = $repoRootPath + moduleFolderPaths = Split-Path $TemplateFilePath -Parent + tokenConfiguration = $PesterTokenConfiguration } } Output = @{ @@ -232,7 +231,7 @@ function Test-ModuleLocally { } # Invoke Token Replacement Functionality and Convert Tokens in Parameter Files - $moduleTestFiles | ForEach-Object { $null = Convert-TokensInFile @ConvertTokensInputs -FilePath $_ } + $moduleTestFiles | ForEach-Object { $null = Convert-TokensInFile @tokenConfiguration -FilePath $_ } # Deployment & Validation Testing # ------------------------------- @@ -242,41 +241,40 @@ function Test-ModuleLocally { resourceGroupName = $ValidateOrDeployParameters.ResourceGroupName subscriptionId = $ValidateOrDeployParameters.SubscriptionId managementGroupId = $ValidateOrDeployParameters.ManagementGroupId - Verbose = $trueration -FilePath $_ ration -FilePath $_ + Verbose = $true } - } - } - try { - # Validate template - # ----------------- - if ($ValidationTest) { - # Loop through test parameter files - foreach ($moduleTestFile in $moduleTestFiles) { - Write-Verbose ('Validating Module [{0}] with test file [{1}]' -f $ModuleName, (Split-Path $moduleTestFile -Leaf)) -Verbose - Test-TemplateDeployment @functionInput -ParameterFilePath $moduleTestFile - } - } + try { + # Validate template + # ----------------- + if ($ValidationTest) { + # Loop through test parameter files + foreach ($moduleTestFile in $moduleTestFiles) { + Write-Verbose ('Validating Module [{0}] with test file [{1}]' -f $ModuleName, (Split-Path $moduleTestFile -Leaf)) -Verbose + Test-TemplateDeployment @functionInput -ParameterFilePath $moduleTestFile + } + } - # Deploy template - # --------------- - if ($DeploymentTest) { - $functionInput['retryLimit'] = 1 # Overwrite default of 3 - # Loop through test parameter files - foreach ($moduleTestFile in $moduleTestFiles) { - Write-Verbose ('Deploy Module [{0}] with test file [{1}]' -f $ModuleName, (Split-Path $moduleTestFile -Leaf)) -Verbose - if ($PSCmdlet.ShouldProcess(('Module [{0}] with test file [{1}]' -f $ModuleName, (Split-Path $moduleTestFile -Leaf)), 'Deploy')) { - New-TemplateDeployment @functionInput -ParameterFilePath $moduleTestFile + # Deploy template + # --------------- + if ($DeploymentTest) { + $functionInput['retryLimit'] = 1 # Overwrite default of 3 + # Loop through test parameter files + foreach ($moduleTestFile in $moduleTestFiles) { + Write-Verbose ('Deploy Module [{0}] with test file [{1}]' -f $ModuleName, (Split-Path $moduleTestFile -Leaf)) -Verbose + if ($PSCmdlet.ShouldProcess(('Module [{0}] with test file [{1}]' -f $ModuleName, (Split-Path $moduleTestFile -Leaf)), 'Deploy')) { + New-TemplateDeployment @functionInput -ParameterFilePath $moduleTestFile + } + } } - } - } - } catch { - Write-Error $_ - } finally { - # Restore parameter files - # ----------------------- - if (($ValidationTest -or $DeploymentTest) -and $ValidateOrDeployParameters) { + } catch { + Write-Error $_ + } finally { + # Restore parameter files + # ----------------------- + if (($ValidationTest -or $DeploymentTest) -and $ValidateOrDeployParameters) { + # Replace Values with Tokens For Repo Updates Write-Verbose 'Restoring Tokens' - $moduleTestFiles | ForEach-Object { $null = Convert-TokensInFile @ConvertTokensInputs -FilePath $_ -SwapValueWithName $true } + $moduleTestFiles | ForEach-Object { $null = Convert-TokensInFile @tokenConfiguration -FilePath $_ -SwapValueWithName $true } } } } From bfaf75f3c29c8f2d31b5e68be2882bc1ca00e019 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Fri, 22 Jul 2022 14:58:23 +1000 Subject: [PATCH 54/88] added repo root path --- utilities/pipelines/staticValidation/module.tests.ps1 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/utilities/pipelines/staticValidation/module.tests.ps1 b/utilities/pipelines/staticValidation/module.tests.ps1 index 0b4f533534..584e9cff49 100644 --- a/utilities/pipelines/staticValidation/module.tests.ps1 +++ b/utilities/pipelines/staticValidation/module.tests.ps1 @@ -6,6 +6,9 @@ param ( (Get-ChildItem $_ -File -Depth 0 -Include @('deploy.json', 'deploy.bicep') -Force).Count -gt 0 }), + [Parameter(Mandatory = $false)] + [string] $repoRootPath = (Get-Item $PSScriptRoot).Parent.Parent.Parent.FullName, + # Dedicated Tokens configuration hashtable containing the tokens and token prefix and suffix. [Parameter(Mandatory = $false)] [hashtable] $tokenConfiguration = @{} From ac79def787c6e9b73a919a5abe599a089720a585 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sat, 23 Jul 2022 23:57:42 +1000 Subject: [PATCH 55/88] updated based on latest ADO pipeline changes --- .../jobs.validateModuleDeployment.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index 842717ad52..354f2b6af0 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -127,12 +127,12 @@ jobs: pwsh: true inline: | # Load used functions - . (Join-Path '$(moduleRepoRoot)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') + . (Join-Path '$(System.DefaultWorkingDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') # Construct Token Function Input $ConvertTokensInputs = @{ Tokens = @{} - FilePath = Join-Path '$(parametersRepoRoot)' '${{ deploymentBlock.path }}' + FilePath = $moduleTestFilePath TokenPrefix = '$(tokenPrefix)' TokenSuffix = '$(tokenSuffix)' } @@ -161,8 +161,8 @@ jobs: } # Add custom tokens (passed in via the pipeline) - if(-not [String]::IsNullOrEmpty('${{ deploymentBlock.customParameterFileTokens }}')) { - $customTokens = '${{ deploymentBlock.customParameterFileTokens }}' | ConvertFrom-Json -AsHashTable + if(-not [String]::IsNullOrEmpty('${{ parameters.customParameterFileTokens }}')) { + $customTokens = '${{ parameters.customParameterFileTokens }}' | ConvertFrom-Json -AsHashTable Write-Verbose ('Using custom parameter file tokens [{0}]' -f ($customTokens.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens += $customTokens } @@ -219,7 +219,7 @@ jobs: # Handle additional parameters # ---------------------------- - if (-not [System.Convert]::ToBoolean('$(enableDefaultTelemetry)') -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { + if (-not [System.Convert]::ToBoolean('$(enableDefaultTelemetry)') -and ($moduleTemplatePossibleParameters.Keys -contains 'enableDefaultTelemetry')) { $functionInput['additionalParameters'] += @{ enableDefaultTelemetry = [System.Convert]::ToBoolean('$(enableDefaultTelemetry)') } @@ -278,7 +278,7 @@ jobs: # Handle additional parameters # ---------------------------- - if (-not [System.Convert]::ToBoolean('$(enableDefaultTelemetry)') -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { + if (-not [System.Convert]::ToBoolean('$(enableDefaultTelemetry)') -and ($moduleTemplatePossibleParameters.Keys -contains 'enableDefaultTelemetry')) { $functionInput['additionalParameters'] += @{ enableDefaultTelemetry = [System.Convert]::ToBoolean('$(enableDefaultTelemetry)') } From 402cd64c54cf1ca8e1871f52398720cfcf2551da Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sun, 24 Jul 2022 00:06:49 +1000 Subject: [PATCH 56/88] Update docs/wiki/The CI environment - Token replacement.md Co-authored-by: Alexander Sehr --- docs/wiki/The CI environment - Token replacement.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/The CI environment - Token replacement.md b/docs/wiki/The CI environment - Token replacement.md index 565d066166..f8df260bdf 100644 --- a/docs/wiki/The CI environment - Token replacement.md +++ b/docs/wiki/The CI environment - Token replacement.md @@ -61,7 +61,7 @@ Let's say you'd want to use this token inside a Key Vault parameter file, to dep Once the Key Vault is deployed, you'll notice that the Key Vault name in Azure will be `foo-keyVault-bar` -The token prefix `'<<'` and suffix `'>>'` in the above example are also configurable in the [settings.yml](https://github.com/Azure/ResourceModules/blob/main/settings.yml) file. +The token prefix `'<<'` and suffix `'>>'` in the above example are also configurable in the [settings.yml](https://github.com/Azure/ResourceModules/blob/main/settings.yml) file and are used to identify the tokens in the files. The solution comes with one predefined local token `namePrefix`. This token is leveraged in most of the parameter files for test deployments. It allows using a consistent naming prefix that is applied to all resources being tested. There are two ways this token can be set and one will take precedence over the other: From 24717bf0e376513b50d4f601e093e1942e2b12f2 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sun, 24 Jul 2022 00:08:45 +1000 Subject: [PATCH 57/88] Update utilities/tools/Test-ModuleLocally.ps1 Co-authored-by: Alexander Sehr --- utilities/tools/Test-ModuleLocally.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index 0ca65c0e84..694581ca50 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -34,7 +34,7 @@ Optional. A hashtable parameter that contains custom tokens to be replaced in th $TestModuleLocallyInput = @{ TemplateFilePath = 'C:\Microsoft.Network\routeTables\deploy.bicep' - TestFilePath = 'C:\Microsoft.Network\routeTables\.test\parameters.json' + TestFilePath = 'C:\Microsoft.Network\routeTables\.test\parameters.json' PesterTest = $false DeploymentTest = $false ValidationTest = $true From e90c89436a369d2bb4735187f009c25907a02fe4 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sun, 24 Jul 2022 00:09:06 +1000 Subject: [PATCH 58/88] Update docs/wiki/The CI environment - Token replacement.md Co-authored-by: Alexander Sehr --- docs/wiki/The CI environment - Token replacement.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/The CI environment - Token replacement.md b/docs/wiki/The CI environment - Token replacement.md index f8df260bdf..6e4a259745 100644 --- a/docs/wiki/The CI environment - Token replacement.md +++ b/docs/wiki/The CI environment - Token replacement.md @@ -63,7 +63,7 @@ Once the Key Vault is deployed, you'll notice that the Key Vault name in Azure w The token prefix `'<<'` and suffix `'>>'` in the above example are also configurable in the [settings.yml](https://github.com/Azure/ResourceModules/blob/main/settings.yml) file and are used to identify the tokens in the files. -The solution comes with one predefined local token `namePrefix`. This token is leveraged in most of the parameter files for test deployments. It allows using a consistent naming prefix that is applied to all resources being tested. There are two ways this token can be set and one will take precedence over the other: +The solution comes with one predefined local token `namePrefix`. This token is leveraged in most of the parameter & test files for deployments. It allows using a consistent naming prefix that is applied to all resources being tested. There are two ways this token can be set and one will take precedence over the other: 1. By updating the value of `localToken_namePrefix` in the [settings.yml](https://github.com/Azure/ResourceModules/blob/main/settings.yml), which then becomes `namePrefix` when the pipelines run. From 348bc67c459908cbcc1ac265be0efa53114951bc Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sun, 24 Jul 2022 19:37:07 +1000 Subject: [PATCH 59/88] duplicate env. var --- .github/workflows/platform.dependencies.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/platform.dependencies.yml b/.github/workflows/platform.dependencies.yml index e69190150f..3a9e3860b9 100644 --- a/.github/workflows/platform.dependencies.yml +++ b/.github/workflows/platform.dependencies.yml @@ -35,7 +35,6 @@ env: ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' DEPLOYMENT_SP_ID: '${{ secrets.DEPLOYMENT_SP_ID }}' TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' - TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: job_deploy_rg: From 40ec8cd2510393a50bf8947c109d30c6acdb1681 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sun, 24 Jul 2022 20:21:15 +1000 Subject: [PATCH 60/88] updated new dependency job with token changes --- .../jobs.dependenciesModuleDeployment.yml | 45 ++++++++++--------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.dependenciesModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.dependenciesModuleDeployment.yml index e2455703dd..0caf586847 100644 --- a/.azuredevops/pipelineTemplates/jobs.dependenciesModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.dependenciesModuleDeployment.yml @@ -112,18 +112,15 @@ jobs: # Load used functions . (Join-Path '$(System.DefaultWorkingDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') - # Load Settings File - $Settings = Get-Content -Path (Join-Path '$(System.DefaultWorkingDirectory)' 'settings.json') | ConvertFrom-Json -AsHashTable - # Construct Token Function Input $ConvertTokensInputs = @{ Tokens = @{} - FilePath = Join-Path '$(System.DefaultWorkingDirectory)' '${{ parameters.modulePath }}' '${{ deploymentBlock.path }}' - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + FilePath = $moduleTestFilePath + TokenPrefix = '$(tokenPrefix)' + TokenSuffix = '$(tokenSuffix)' } - # Add defaults + # Add enforced tokens $ConvertTokensInputs.Tokens += @{ resourceGroupName = '${{ parameters.resourceGroupName }}' subscriptionId = '${{ parameters.subscriptionId }}' @@ -132,14 +129,18 @@ jobs: deploymentSpId = '$(DEPLOYMENT_SP_ID)' } - # Add local tokens - if ($Settings.parameterFileTokens.localTokens) { - $tokenMap = @{} - foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{ $token.name = $token.value } - } - Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.Tokens += $tokenMap + # Add local (source control) tokens + $tokenMap = @{} + foreach ($token in (Get-ChildItem env: | Where-Object -Property Name -Like "localToken_*")) { + $tokenMap += @{ $token.Name.Replace('localToken_','','OrdinalIgnoreCase') = $token.value } + } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.Tokens += $tokenMap + + # Swap 'namePrefix' token if provided as a Azure DevOps variable + if(-not [String]::IsNullOrEmpty("$env:TOKEN_NAMEPREFIX")){ + Write-Verbose 'Using [namePrefix] token from Azure DevOps Variable Groups' -Verbose + $ConvertTokensInputs.Tokens['namePrefix'] = "$env:TOKEN_NAMEPREFIX" } # Add custom tokens (passed in via the pipeline) @@ -179,10 +180,11 @@ jobs: additionalParameters = @{} } - $projectSettings = Get-Content -Path 'settings.json' | ConvertFrom-Json - if (-not [String]::IsNullOrEmpty($projectSettings.enableDefaultTelemetry) -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { + # Handle additional parameters + # ---------------------------- + if (-not [System.Convert]::ToBoolean('$(enableDefaultTelemetry)') -and ($moduleTemplatePossibleParameters.Keys -contains 'enableDefaultTelemetry')) { $functionInput['additionalParameters'] += @{ - enableDefaultTelemetry = $projectSettings.enableDefaultTelemetry + enableDefaultTelemetry = [System.Convert]::ToBoolean('$(enableDefaultTelemetry)') } } @@ -220,10 +222,11 @@ jobs: additionalParameters = @{} } - $projectSettings = Get-Content -Path 'settings.json' | ConvertFrom-Json - if (-not [String]::IsNullOrEmpty($projectSettings.enableDefaultTelemetry) -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { + # Handle additional parameters + # ---------------------------- + if (-not [System.Convert]::ToBoolean('$(enableDefaultTelemetry)') -and ($moduleTemplatePossibleParameters.Keys -contains 'enableDefaultTelemetry')) { $functionInput['additionalParameters'] += @{ - enableDefaultTelemetry = $projectSettings.enableDefaultTelemetry + enableDefaultTelemetry = [System.Convert]::ToBoolean('$(enableDefaultTelemetry)') } } From 210012241e01a6dae8ff1cb237512094e1084192 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sun, 24 Jul 2022 20:28:42 +1000 Subject: [PATCH 61/88] bug fixes --- .../pipelineTemplates/jobs.dependenciesModuleDeployment.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.dependenciesModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.dependenciesModuleDeployment.yml index 0caf586847..2622b7b145 100644 --- a/.azuredevops/pipelineTemplates/jobs.dependenciesModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.dependenciesModuleDeployment.yml @@ -115,7 +115,7 @@ jobs: # Construct Token Function Input $ConvertTokensInputs = @{ Tokens = @{} - FilePath = $moduleTestFilePath + FilePath = Join-Path '$(System.DefaultWorkingDirectory)' '${{ parameters.modulePath }}' '${{ deploymentBlock.path }}' TokenPrefix = '$(tokenPrefix)' TokenSuffix = '$(tokenSuffix)' } @@ -182,7 +182,7 @@ jobs: # Handle additional parameters # ---------------------------- - if (-not [System.Convert]::ToBoolean('$(enableDefaultTelemetry)') -and ($moduleTemplatePossibleParameters.Keys -contains 'enableDefaultTelemetry')) { + if (-not [System.Convert]::ToBoolean('$(enableDefaultTelemetry)') -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { $functionInput['additionalParameters'] += @{ enableDefaultTelemetry = [System.Convert]::ToBoolean('$(enableDefaultTelemetry)') } @@ -224,7 +224,7 @@ jobs: # Handle additional parameters # ---------------------------- - if (-not [System.Convert]::ToBoolean('$(enableDefaultTelemetry)') -and ($moduleTemplatePossibleParameters.Keys -contains 'enableDefaultTelemetry')) { + if (-not [System.Convert]::ToBoolean('$(enableDefaultTelemetry)') -and (Get-Content -Path $functionInput.templateFilePath -Raw) -like '*param enableDefaultTelemetry*') { $functionInput['additionalParameters'] += @{ enableDefaultTelemetry = [System.Convert]::ToBoolean('$(enableDefaultTelemetry)') } From 4d8e4a763ee3a4c59e251d77b77482d70fa975f0 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sun, 24 Jul 2022 20:34:50 +1000 Subject: [PATCH 62/88] added token message --- .../pipelineTemplates/jobs.dependenciesModuleDeployment.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.azuredevops/pipelineTemplates/jobs.dependenciesModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.dependenciesModuleDeployment.yml index 2622b7b145..0fef80941d 100644 --- a/.azuredevops/pipelineTemplates/jobs.dependenciesModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.dependenciesModuleDeployment.yml @@ -150,6 +150,8 @@ jobs: $ConvertTokensInputs.Tokens += $customTokens } + Write-Verbose "Convert Tokens Input:`n $($ConvertTokensInputs | ConvertTo-Json -Depth 10)" -Verbose + # Invoke Token Replacement Functionality $null = Convert-TokensInFile @ConvertTokensInputs From ac9ab2133188616a2051593ec13dc29177a72e6c Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Mon, 25 Jul 2022 14:26:18 +1000 Subject: [PATCH 63/88] enabling telemtry and setting local token --- settings.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/settings.yml b/settings.yml index 1e659892eb..3ea5dd378a 100644 --- a/settings.yml +++ b/settings.yml @@ -5,7 +5,7 @@ variables: # Enable or disable CARMLs CI telemetry tracking. Note: This tracks the number of deployments only. # See: https://github.com/Azure/ResourceModules/wiki/The%20library%20-%20Module%20design#telemetry - enableDefaultTelemetry: false + enableDefaultTelemetry: true ###################################### # Local tokens settings @@ -13,7 +13,7 @@ variables: # the 'localToken_' prefix will be removed from the key name when the pipelines run. # e.g. if you have a token in your parameter file as <>, then the token defined in this file looks like "localToken_customKey": 'value' - localToken_namePrefix: 'cntso' # A 3-5 character length string, included in the resources names, is overridden if provided as GitHub Secret / ADO Variable + localToken_namePrefix: 'leenz' # A 3-5 character length string, included in the resources names, is overridden if provided as GitHub Secret / ADO Variable ###################################### # global tokens settings From c3635171fd145d367f048f287f23cf1430cf8f75 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Mon, 25 Jul 2022 15:43:08 +1000 Subject: [PATCH 64/88] fix for ado deploy --- .../pipelineTemplates/jobs.validateModuleDeployment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index 354f2b6af0..677b64bd8d 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -132,7 +132,7 @@ jobs: # Construct Token Function Input $ConvertTokensInputs = @{ Tokens = @{} - FilePath = $moduleTestFilePath + FilePath = Join-Path '$(System.DefaultWorkingDirectory)' '$(modulePath)' '$(moduleTestFilePath)' TokenPrefix = '$(tokenPrefix)' TokenSuffix = '$(tokenSuffix)' } From 3c9bc1a05a57783aee8238230545b8bf9984510e Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Mon, 25 Jul 2022 16:12:26 +1000 Subject: [PATCH 65/88] requested powershell-yaml module --- .../pipelineTemplates/jobs.validateModuleDeployment.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index 677b64bd8d..26d4952438 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -97,7 +97,8 @@ jobs: # Define PS modules to install on the runner $Modules = @( @{ Name = 'Az.Accounts' }, - @{ Name = 'Az.Resources' } + @{ Name = 'Az.Resources' }, + @{ Name = 'powershell-yaml'; Version = '0.4.2'} ) # Additional PS modules need to be installed for the removal step in case it is enabled From e5f8e839d2be23bd7d3a0c0f3ac9502cb310c945 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Tue, 9 Aug 2022 17:07:57 +1000 Subject: [PATCH 66/88] updated test script --- utilities/tools/Test-ModuleLocally.ps1 | 141 +++++++++++++------------ 1 file changed, 76 insertions(+), 65 deletions(-) diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index 99c5f1c5da..f6900ca080 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -146,16 +146,22 @@ function Test-ModuleLocally { . (Join-Path $PSScriptRoot '../pipelines/resourceDeployment/Test-TemplateDeployment.ps1') } process { - ###################### - # TOKENS Replacement # - ###################### + + # Find Test Parameter Files + # ------------------------- + if ((Get-Item -Path $testFilePath) -is [System.IO.DirectoryInfo]) { + $moduleTestFiles = (Get-ChildItem -Path $testFilePath).FullName + } else { + $moduleTestFiles = @($testFilePath) + } # Construct Token Configuration Input $GlobalVariablesObject = Get-Content -Path (Join-Path $PSScriptRoot '..\..\settings.yml') | ConvertFrom-Yaml -ErrorAction Stop | Select-Object -ExpandProperty variables $tokenConfiguration = @{ - Tokens = @{} - TokenPrefix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenPrefix - TokenSuffix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenSuffix + FilePathList = $moduleTestFiles + Tokens = @{} + TokenPrefix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenPrefix + TokenSuffix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenSuffix } # Add Enforced Tokens @@ -185,6 +191,7 @@ function Test-ModuleLocally { $tokenConfiguration.Tokens[$PSItem] = $AdditionalTokens.$PSItem } } + ################ # PESTER Tests # ################ @@ -193,78 +200,82 @@ function Test-ModuleLocally { # Construct Pester Token Configuration Input $PesterTokenConfiguration = @{ - Tokens = $enforcedTokenList - TokenPrefix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenPrefix - TokenSuffix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenSuffix + FilePathList = $moduleTestFiles + Tokens = $enforcedTokenList + TokenPrefix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenPrefix + TokenSuffix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenSuffix } try { - # Validation & Deployment tests # - ################################# - if (($ValidationTest -or $DeploymentTest) -and $ValidateOrDeployParameters) { - - # Find Test Parameter Files - # ------------------------- - if ((Get-Item -Path $testFilePath) -is [System.IO.DirectoryInfo]) { - $moduleTestFiles = (Get-ChildItem -Path $testFilePath).FullName - } else { - $moduleTestFiles = @($testFilePath) - } - - # Invoke Token Replacement Functionality and Convert Tokens in Parameter Files - $null = Convert-TokensInFileList @tokenConfiguration - - # Deployment & Validation Testing - # ------------------------------- - $functionInput = @{ - TemplateFilePath = $TemplateFilePath - location = $ValidateOrDeployParameters.Location - resourceGroupName = $ValidateOrDeployParameters.ResourceGroupName - subscriptionId = $ValidateOrDeployParameters.SubscriptionId - managementGroupId = $ValidateOrDeployParameters.ManagementGroupId - Verbose = $true - } - try { - # Validate template - # ----------------- - if ($ValidationTest) { - # Loop through test parameter files - Test-TemplateDeployment @functionInput -ParameterFilePath $moduleTestFile - } - } - - # Deploy template - # --------------- - if ($DeploymentTest) { - $functionInput['retryLimit'] = 1 # Overwrite default of 3 - # Loop through test parameter files - foreach ($moduleTestFile in $moduleTestFiles) { - Write-Verbose ('Deploy Module [{0}] with test file [{1}]' -f $ModuleName, (Split-Path $moduleTestFile -Leaf)) -Verbose - if ($PSCmdlet.ShouldProcess(('Module [{0}] with test file [{1}]' -f $ModuleName, (Split-Path $moduleTestFile -Leaf)), 'Deploy')) { - New-TemplateDeployment @functionInput -ParameterFilePath $moduleTestFile - } + Invoke-Pester -Configuration @{ + Run = @{ + Container = New-PesterContainer -Path (Join-Path $repoRootPath $moduleTestFilePath) -Data @{ + repoRootPath = $repoRootPath + moduleFolderPaths = Split-Path $TemplateFilePath -Parent + tokenConfiguration = $PesterTokenConfiguration } } - } catch { - Write-Error $_ - } finally { - # Restore parameter files - # ----------------------- - if (($ValidationTest -or $DeploymentTest) -and $ValidateOrDeployParameters) { - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix - $null = Convert-TokensInFileList @tokenConfiguration -SwapValueWithName $true + Output = @{ + Verbosity = 'Detailed' } } + } catch { + $PSItem.Exception.Message } } - end { - } - } + + ################################# + # Validation & Deployment tests # + ################################# + + # Invoke Token Replacement Functionality and Convert Tokens in Parameter Files + $null = Convert-TokensInFileList @tokenConfiguration + + if (($ValidationTest -or $DeploymentTest) -and $ValidateOrDeployParameters) { + + # Find Test Parameter Files + # ------------------------- + if ((Get-Item -Path $testFilePath) -is [System.IO.DirectoryInfo]) { + $moduleTestFiles = (Get-ChildItem -Path $testFilePath).FullName + } else { + $moduleTestFiles = @($testFilePath) + } + + # Deployment & Validation Testing + # ------------------------------- + $functionInput = @{ + TemplateFilePath = $TemplateFilePath + location = $ValidateOrDeployParameters.Location + resourceGroupName = $ValidateOrDeployParameters.ResourceGroupName + subscriptionId = $ValidateOrDeployParameters.SubscriptionId + managementGroupId = $ValidateOrDeployParameters.ManagementGroupId + Verbose = $true + } + + try { + # Validate template + # ----------------- + if ($ValidationTest) { + # Loop through test parameter files + foreach ($moduleTestFile in $moduleTestFiles) { + Write-Verbose ('Validating Module [{0}] with test file [{1}]' -f $ModuleName, (Split-Path $moduleTestFile -Leaf)) -Verbose + Test-TemplateDeployment @functionInput -ParameterFilePath $moduleTestFile + } + } + + # Deploy template + # --------------- + if ($DeploymentTest) { + $functionInput['retryLimit'] = 1 # Overwrite default of 3 + # Loop through test parameter files + foreach ($moduleTestFile in $moduleTestFiles) { + Write-Verbose ('Deploy Module [{0}] with test file [{1}]' -f $ModuleName, (Split-Path $moduleTestFile -Leaf)) -Verbose + if ($PSCmdlet.ShouldProcess(('Module [{0}] with test file [{1}]' -f $ModuleName, (Split-Path $moduleTestFile -Leaf)), 'Deploy')) { New-TemplateDeployment @functionInput -ParameterFilePath $moduleTestFile } } } + } catch { Write-Error $_ } finally { From 93eca00db06153bdb4cfb9043d930e0c9b8d9da3 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Wed, 10 Aug 2022 16:56:53 +1000 Subject: [PATCH 67/88] fixed test name prefix and token converter --- .../Convert-TokensInFileList.ps1 | 4 ++-- utilities/tools/Test-NamePrefixAvailability.ps1 | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/utilities/pipelines/tokensReplacement/Convert-TokensInFileList.ps1 b/utilities/pipelines/tokensReplacement/Convert-TokensInFileList.ps1 index 84fc839615..6d6edf2a75 100644 --- a/utilities/pipelines/tokensReplacement/Convert-TokensInFileList.ps1 +++ b/utilities/pipelines/tokensReplacement/Convert-TokensInFileList.ps1 @@ -37,7 +37,7 @@ function Convert-TokensInFileList { [CmdletBinding()] param ( [parameter( - Mandatory = $true, + Mandatory = $true, ValueFromPipeline = $true )] [String[]] $FilePathList, @@ -86,7 +86,7 @@ function Convert-TokensInFileList { # Prepare Input to Token Converter Function $ConvertTokenListFunctionInput = @{ FilePath = $FilePath - TokenNameValueObject = $FilteredTokens + TokenNameValueObject = $FilteredTokens.Clone() SwapValueWithName = $SwapValueWithName } if ($OutputDirectory) { diff --git a/utilities/tools/Test-NamePrefixAvailability.ps1 b/utilities/tools/Test-NamePrefixAvailability.ps1 index 810cbf044b..0b5b36e5da 100644 --- a/utilities/tools/Test-NamePrefixAvailability.ps1 +++ b/utilities/tools/Test-NamePrefixAvailability.ps1 @@ -68,20 +68,20 @@ function Test-NamePrefixAvailability { # Construct Token Configuration Input $tokenConfiguration = @{ FilePathList = $parameterFiles - Tokens = @{} + Tokens = @{ + 'namePrefix' = $namePrefix + } TokenPrefix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenPrefix TokenSuffix = $GlobalVariablesObject | Select-Object -ExpandProperty tokenSuffix } - # Add local (source control) tokens - foreach ($localToken in ($GlobalVariablesObject.Keys | ForEach-Object { if ($PSItem.contains('localToken_')) { $PSItem } })) { - $tokenConfiguration.Tokens[$localToken.Replace('localToken_', '', 'OrdinalIgnoreCase')] = $GlobalVariablesObject.$localToken - } + # Add additional tokens provided by the user + $tokenConfiguration.Tokens += $Tokens - try { - # Invoke Token Replacement Functionality and Convert Tokens in Parameter Files - $null = Convert-TokensInFileList @tokenConfiguration + # Invoke Token Replacement Functionality and Convert Tokens in Parameter Files + $null = Convert-TokensInFileList @tokenConfiguration + try { # Extract Parameter Names # ----------------------- From ecbf7bffc13233a6ef61adca5a8a26e7644d8ed6 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Wed, 10 Aug 2022 17:05:19 +1000 Subject: [PATCH 68/88] updated github actions --- .github/workflows/ms.compute.availabilitysets.yml | 1 + .github/workflows/ms.compute.diskencryptionsets.yml | 1 + .github/workflows/ms.compute.disks.yml | 1 + .github/workflows/ms.compute.galleries.yml | 1 + .github/workflows/ms.compute.images.yml | 1 + .github/workflows/ms.compute.proximityplacementgroups.yml | 1 + .github/workflows/ms.compute.virtualmachines.yml | 1 + .github/workflows/ms.compute.virtualmachinescalesets.yml | 1 + .github/workflows/ms.consumption.budgets.yml | 1 + .github/workflows/ms.containerinstance.containergroups.yml | 1 + .github/workflows/ms.containerregistry.registries.yml | 1 + .github/workflows/ms.containerservice.managedclusters.yml | 1 + .github/workflows/ms.databricks.workspaces.yml | 1 + .github/workflows/ms.datafactory.factories.yml | 1 + .github/workflows/ms.dataprotection.backupvaults.yml | 1 + .github/workflows/ms.desktopvirtualization.applicationgroups.yml | 1 + .github/workflows/ms.desktopvirtualization.workspaces.yml | 1 + .github/workflows/ms.documentdb.databaseaccounts.yml | 1 + .github/workflows/ms.eventgrid.systemtopics.yml | 1 + .github/workflows/ms.eventgrid.topics.yml | 1 + .github/workflows/ms.eventhub.namespaces.yml | 1 + .github/workflows/ms.healthbot.healthbots.yml | 1 + .github/workflows/ms.insights.actiongroups.yml | 1 + .github/workflows/ms.insights.activitylogalerts.yml | 1 + .github/workflows/ms.insights.components.yml | 1 + .github/workflows/ms.insights.diagnosticsettings.yml | 1 + .github/workflows/ms.insights.metricalerts.yml | 1 + .github/workflows/ms.insights.privatelinkscopes.yml | 1 + .github/workflows/ms.insights.scheduledqueryrules.yml | 1 + .github/workflows/ms.keyvault.vaults.yml | 1 + .github/workflows/ms.kubernetesconfiguration.extensions.yml | 1 + .../workflows/ms.kubernetesconfiguration.fluxconfigurations.yml | 1 + .github/workflows/ms.logic.workflows.yml | 1 + .github/workflows/ms.machinelearningservices.workspaces.yml | 1 + .github/workflows/ms.managedidentity.userassignedidentities.yml | 1 + .github/workflows/ms.managedservices.registrationdefinitions.yml | 1 + .github/workflows/ms.management.managementgroups.yml | 1 + .github/workflows/ms.netapp.netappaccounts.yml | 1 + .github/workflows/ms.network.applicationsecuritygroups.yml | 1 + .github/workflows/ms.network.azurefirewalls.yml | 1 + .github/workflows/ms.network.bastionhosts.yml | 1 + .github/workflows/ms.network.connections.yml | 1 + .github/workflows/ms.network.ddosprotectionplans.yml | 1 + .github/workflows/ms.network.expressroutecircuits.yml | 1 + .github/workflows/ms.network.firewallpolicies.yml | 1 + .github/workflows/ms.network.frontdoors.yml | 1 + .github/workflows/ms.network.loadbalancers.yml | 1 + .github/workflows/ms.network.localnetworkgateways.yml | 1 + .github/workflows/ms.network.natgateways.yml | 1 + .github/workflows/ms.network.networkinterfaces.yml | 1 + .github/workflows/ms.network.networksecuritygroups.yml | 1 + .github/workflows/ms.network.networkwatchers.yml | 1 + .github/workflows/ms.network.privatednszones.yml | 1 + .github/workflows/ms.network.privateendpoints.yml | 1 + .github/workflows/ms.network.publicipaddresses.yml | 1 + .github/workflows/ms.network.publicipprefixes.yml | 1 + .github/workflows/ms.network.routetables.yml | 1 + .github/workflows/ms.network.trafficmanagerprofiles.yml | 1 + .github/workflows/ms.network.virtualhubs.yml | 1 + .github/workflows/ms.network.virtualnetworkgateways.yml | 1 + .github/workflows/ms.network.virtualnetworks.yml | 1 + .github/workflows/ms.network.virtualwans.yml | 1 + .github/workflows/ms.network.vpngateways.yml | 1 + .github/workflows/ms.network.vpnsites.yml | 1 + .github/workflows/ms.operationalinsights.workspaces.yml | 1 + .github/workflows/ms.operationsmanagement.solutions.yml | 1 + .github/workflows/ms.recoveryservices.vaults.yml | 1 + .github/workflows/ms.resources.deploymentscripts.yml | 1 + .github/workflows/ms.resources.resourcegroups.yml | 1 + .github/workflows/ms.resources.tags.yml | 1 + .github/workflows/ms.security.azuresecuritycenter.yml | 1 + .github/workflows/ms.servicebus.namespaces.yml | 1 + .github/workflows/ms.servicefabric.clusters.yml | 1 + .github/workflows/ms.signalrservice.webpubsub.yml | 1 + .github/workflows/ms.sql.managedinstances.yml | 1 + .github/workflows/ms.sql.servers.yml | 1 + .github/workflows/ms.storage.storageaccounts.yml | 1 + .github/workflows/ms.synapse.privatelinkhubs.yml | 1 + .github/workflows/ms.synapse.workspaces.yml | 1 + .github/workflows/ms.virtualmachineimages.imagetemplates.yml | 1 + .github/workflows/ms.web.connections.yml | 1 + .github/workflows/ms.web.hostingenvironments.yml | 1 + .github/workflows/ms.web.serverfarms.yml | 1 + .github/workflows/ms.web.sites.yml | 1 + .github/workflows/ms.web.staticsites.yml | 1 + 85 files changed, 85 insertions(+) diff --git a/.github/workflows/ms.compute.availabilitysets.yml b/.github/workflows/ms.compute.availabilitysets.yml index 023e733726..95c38275e8 100644 --- a/.github/workflows/ms.compute.availabilitysets.yml +++ b/.github/workflows/ms.compute.availabilitysets.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.compute.diskencryptionsets.yml b/.github/workflows/ms.compute.diskencryptionsets.yml index e4dd04a019..41f443ce2a 100644 --- a/.github/workflows/ms.compute.diskencryptionsets.yml +++ b/.github/workflows/ms.compute.diskencryptionsets.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.compute.disks.yml b/.github/workflows/ms.compute.disks.yml index 62cb1bce6c..389bd0f063 100644 --- a/.github/workflows/ms.compute.disks.yml +++ b/.github/workflows/ms.compute.disks.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.compute.galleries.yml b/.github/workflows/ms.compute.galleries.yml index 591f743cda..e45bf278bd 100644 --- a/.github/workflows/ms.compute.galleries.yml +++ b/.github/workflows/ms.compute.galleries.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.compute.images.yml b/.github/workflows/ms.compute.images.yml index af0fe8008e..93b6897198 100644 --- a/.github/workflows/ms.compute.images.yml +++ b/.github/workflows/ms.compute.images.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.compute.proximityplacementgroups.yml b/.github/workflows/ms.compute.proximityplacementgroups.yml index 651b6055d1..969a9b9180 100644 --- a/.github/workflows/ms.compute.proximityplacementgroups.yml +++ b/.github/workflows/ms.compute.proximityplacementgroups.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.compute.virtualmachines.yml b/.github/workflows/ms.compute.virtualmachines.yml index c6b9109e9e..bec15527fa 100644 --- a/.github/workflows/ms.compute.virtualmachines.yml +++ b/.github/workflows/ms.compute.virtualmachines.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.compute.virtualmachinescalesets.yml b/.github/workflows/ms.compute.virtualmachinescalesets.yml index e75fe715ac..eb511814bc 100644 --- a/.github/workflows/ms.compute.virtualmachinescalesets.yml +++ b/.github/workflows/ms.compute.virtualmachinescalesets.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.consumption.budgets.yml b/.github/workflows/ms.consumption.budgets.yml index a8c23b70f8..c892c5b374 100644 --- a/.github/workflows/ms.consumption.budgets.yml +++ b/.github/workflows/ms.consumption.budgets.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.containerinstance.containergroups.yml b/.github/workflows/ms.containerinstance.containergroups.yml index cde20d6750..5d96b96c02 100644 --- a/.github/workflows/ms.containerinstance.containergroups.yml +++ b/.github/workflows/ms.containerinstance.containergroups.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.containerregistry.registries.yml b/.github/workflows/ms.containerregistry.registries.yml index 150d9a2436..8d0ea9e6c5 100644 --- a/.github/workflows/ms.containerregistry.registries.yml +++ b/.github/workflows/ms.containerregistry.registries.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.containerservice.managedclusters.yml b/.github/workflows/ms.containerservice.managedclusters.yml index 5011f772a4..3773128665 100644 --- a/.github/workflows/ms.containerservice.managedclusters.yml +++ b/.github/workflows/ms.containerservice.managedclusters.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.databricks.workspaces.yml b/.github/workflows/ms.databricks.workspaces.yml index 10ef9d1487..58d06e2dac 100644 --- a/.github/workflows/ms.databricks.workspaces.yml +++ b/.github/workflows/ms.databricks.workspaces.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.datafactory.factories.yml b/.github/workflows/ms.datafactory.factories.yml index 83258b8bc0..162c0ed643 100644 --- a/.github/workflows/ms.datafactory.factories.yml +++ b/.github/workflows/ms.datafactory.factories.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.dataprotection.backupvaults.yml b/.github/workflows/ms.dataprotection.backupvaults.yml index a68bad79c5..759adf323e 100644 --- a/.github/workflows/ms.dataprotection.backupvaults.yml +++ b/.github/workflows/ms.dataprotection.backupvaults.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.desktopvirtualization.applicationgroups.yml b/.github/workflows/ms.desktopvirtualization.applicationgroups.yml index 527a9670dc..db44002f93 100644 --- a/.github/workflows/ms.desktopvirtualization.applicationgroups.yml +++ b/.github/workflows/ms.desktopvirtualization.applicationgroups.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.desktopvirtualization.workspaces.yml b/.github/workflows/ms.desktopvirtualization.workspaces.yml index ad518a3ef4..5b55277835 100644 --- a/.github/workflows/ms.desktopvirtualization.workspaces.yml +++ b/.github/workflows/ms.desktopvirtualization.workspaces.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.documentdb.databaseaccounts.yml b/.github/workflows/ms.documentdb.databaseaccounts.yml index baa847ba4b..1aa0a5d9d6 100644 --- a/.github/workflows/ms.documentdb.databaseaccounts.yml +++ b/.github/workflows/ms.documentdb.databaseaccounts.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.eventgrid.systemtopics.yml b/.github/workflows/ms.eventgrid.systemtopics.yml index e00698ff49..84a69e853b 100644 --- a/.github/workflows/ms.eventgrid.systemtopics.yml +++ b/.github/workflows/ms.eventgrid.systemtopics.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.eventgrid.topics.yml b/.github/workflows/ms.eventgrid.topics.yml index edc590b9f1..7e5cb39f33 100644 --- a/.github/workflows/ms.eventgrid.topics.yml +++ b/.github/workflows/ms.eventgrid.topics.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.eventhub.namespaces.yml b/.github/workflows/ms.eventhub.namespaces.yml index 63e1234a6f..b3fcba58b8 100644 --- a/.github/workflows/ms.eventhub.namespaces.yml +++ b/.github/workflows/ms.eventhub.namespaces.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.healthbot.healthbots.yml b/.github/workflows/ms.healthbot.healthbots.yml index b5e65d7225..85fe41f8a0 100644 --- a/.github/workflows/ms.healthbot.healthbots.yml +++ b/.github/workflows/ms.healthbot.healthbots.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.insights.actiongroups.yml b/.github/workflows/ms.insights.actiongroups.yml index 65cabe8e0b..34b2279df5 100644 --- a/.github/workflows/ms.insights.actiongroups.yml +++ b/.github/workflows/ms.insights.actiongroups.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.insights.activitylogalerts.yml b/.github/workflows/ms.insights.activitylogalerts.yml index bf7a50bec1..aa75aa0506 100644 --- a/.github/workflows/ms.insights.activitylogalerts.yml +++ b/.github/workflows/ms.insights.activitylogalerts.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.insights.components.yml b/.github/workflows/ms.insights.components.yml index 4a1b169e7c..032cae919c 100644 --- a/.github/workflows/ms.insights.components.yml +++ b/.github/workflows/ms.insights.components.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.insights.diagnosticsettings.yml b/.github/workflows/ms.insights.diagnosticsettings.yml index 37e2008265..edd2a96273 100644 --- a/.github/workflows/ms.insights.diagnosticsettings.yml +++ b/.github/workflows/ms.insights.diagnosticsettings.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.insights.metricalerts.yml b/.github/workflows/ms.insights.metricalerts.yml index 58adcd953c..878e26857a 100644 --- a/.github/workflows/ms.insights.metricalerts.yml +++ b/.github/workflows/ms.insights.metricalerts.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.insights.privatelinkscopes.yml b/.github/workflows/ms.insights.privatelinkscopes.yml index 01c8747856..5af19e9443 100644 --- a/.github/workflows/ms.insights.privatelinkscopes.yml +++ b/.github/workflows/ms.insights.privatelinkscopes.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.insights.scheduledqueryrules.yml b/.github/workflows/ms.insights.scheduledqueryrules.yml index f889e8ce03..f08f10e600 100644 --- a/.github/workflows/ms.insights.scheduledqueryrules.yml +++ b/.github/workflows/ms.insights.scheduledqueryrules.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.keyvault.vaults.yml b/.github/workflows/ms.keyvault.vaults.yml index 0fac8f7ebe..e040d8aafd 100644 --- a/.github/workflows/ms.keyvault.vaults.yml +++ b/.github/workflows/ms.keyvault.vaults.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.kubernetesconfiguration.extensions.yml b/.github/workflows/ms.kubernetesconfiguration.extensions.yml index d983e0277f..aa0f094765 100644 --- a/.github/workflows/ms.kubernetesconfiguration.extensions.yml +++ b/.github/workflows/ms.kubernetesconfiguration.extensions.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.kubernetesconfiguration.fluxconfigurations.yml b/.github/workflows/ms.kubernetesconfiguration.fluxconfigurations.yml index 34e9c6825c..a4f242ea2b 100644 --- a/.github/workflows/ms.kubernetesconfiguration.fluxconfigurations.yml +++ b/.github/workflows/ms.kubernetesconfiguration.fluxconfigurations.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.logic.workflows.yml b/.github/workflows/ms.logic.workflows.yml index 07a0e1f41d..97c7eac1cd 100644 --- a/.github/workflows/ms.logic.workflows.yml +++ b/.github/workflows/ms.logic.workflows.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.machinelearningservices.workspaces.yml b/.github/workflows/ms.machinelearningservices.workspaces.yml index af3bb8515c..b4760cc79c 100644 --- a/.github/workflows/ms.machinelearningservices.workspaces.yml +++ b/.github/workflows/ms.machinelearningservices.workspaces.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.managedidentity.userassignedidentities.yml b/.github/workflows/ms.managedidentity.userassignedidentities.yml index fca467e21d..42e2d6a764 100644 --- a/.github/workflows/ms.managedidentity.userassignedidentities.yml +++ b/.github/workflows/ms.managedidentity.userassignedidentities.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.managedservices.registrationdefinitions.yml b/.github/workflows/ms.managedservices.registrationdefinitions.yml index 8fcb4f251a..db7aea3412 100644 --- a/.github/workflows/ms.managedservices.registrationdefinitions.yml +++ b/.github/workflows/ms.managedservices.registrationdefinitions.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.management.managementgroups.yml b/.github/workflows/ms.management.managementgroups.yml index b0172f58ab..3f0258f95e 100644 --- a/.github/workflows/ms.management.managementgroups.yml +++ b/.github/workflows/ms.management.managementgroups.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.netapp.netappaccounts.yml b/.github/workflows/ms.netapp.netappaccounts.yml index c2d5dd89a1..78d240e171 100644 --- a/.github/workflows/ms.netapp.netappaccounts.yml +++ b/.github/workflows/ms.netapp.netappaccounts.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.applicationsecuritygroups.yml b/.github/workflows/ms.network.applicationsecuritygroups.yml index 7f528c41b2..f91fd36990 100644 --- a/.github/workflows/ms.network.applicationsecuritygroups.yml +++ b/.github/workflows/ms.network.applicationsecuritygroups.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.azurefirewalls.yml b/.github/workflows/ms.network.azurefirewalls.yml index 6d9c1869e6..22f7cceea8 100644 --- a/.github/workflows/ms.network.azurefirewalls.yml +++ b/.github/workflows/ms.network.azurefirewalls.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.bastionhosts.yml b/.github/workflows/ms.network.bastionhosts.yml index 4073f2efa8..afcedb67f4 100644 --- a/.github/workflows/ms.network.bastionhosts.yml +++ b/.github/workflows/ms.network.bastionhosts.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.connections.yml b/.github/workflows/ms.network.connections.yml index 042014da21..6c79aa5700 100644 --- a/.github/workflows/ms.network.connections.yml +++ b/.github/workflows/ms.network.connections.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.ddosprotectionplans.yml b/.github/workflows/ms.network.ddosprotectionplans.yml index 67d8367cdb..fae4890183 100644 --- a/.github/workflows/ms.network.ddosprotectionplans.yml +++ b/.github/workflows/ms.network.ddosprotectionplans.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.expressroutecircuits.yml b/.github/workflows/ms.network.expressroutecircuits.yml index 3148d8929a..ad03422d22 100644 --- a/.github/workflows/ms.network.expressroutecircuits.yml +++ b/.github/workflows/ms.network.expressroutecircuits.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.firewallpolicies.yml b/.github/workflows/ms.network.firewallpolicies.yml index 89009014fe..2450174926 100644 --- a/.github/workflows/ms.network.firewallpolicies.yml +++ b/.github/workflows/ms.network.firewallpolicies.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.frontdoors.yml b/.github/workflows/ms.network.frontdoors.yml index 5568777558..3f61f66412 100644 --- a/.github/workflows/ms.network.frontdoors.yml +++ b/.github/workflows/ms.network.frontdoors.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.loadbalancers.yml b/.github/workflows/ms.network.loadbalancers.yml index 8d86b10c7c..e490a3b069 100644 --- a/.github/workflows/ms.network.loadbalancers.yml +++ b/.github/workflows/ms.network.loadbalancers.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.localnetworkgateways.yml b/.github/workflows/ms.network.localnetworkgateways.yml index 490455756e..a1c63c107e 100644 --- a/.github/workflows/ms.network.localnetworkgateways.yml +++ b/.github/workflows/ms.network.localnetworkgateways.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.natgateways.yml b/.github/workflows/ms.network.natgateways.yml index 3e32378c28..32143fca94 100644 --- a/.github/workflows/ms.network.natgateways.yml +++ b/.github/workflows/ms.network.natgateways.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.networkinterfaces.yml b/.github/workflows/ms.network.networkinterfaces.yml index 450f0cf6c6..2a6533ecaf 100644 --- a/.github/workflows/ms.network.networkinterfaces.yml +++ b/.github/workflows/ms.network.networkinterfaces.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.networksecuritygroups.yml b/.github/workflows/ms.network.networksecuritygroups.yml index 2c60ae8216..9535e97e90 100644 --- a/.github/workflows/ms.network.networksecuritygroups.yml +++ b/.github/workflows/ms.network.networksecuritygroups.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.networkwatchers.yml b/.github/workflows/ms.network.networkwatchers.yml index 5170b311f1..bb11787987 100644 --- a/.github/workflows/ms.network.networkwatchers.yml +++ b/.github/workflows/ms.network.networkwatchers.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.privatednszones.yml b/.github/workflows/ms.network.privatednszones.yml index 3861c8fa1a..b7dc28d582 100644 --- a/.github/workflows/ms.network.privatednszones.yml +++ b/.github/workflows/ms.network.privatednszones.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.privateendpoints.yml b/.github/workflows/ms.network.privateendpoints.yml index e23467ea0e..b1840b91c2 100644 --- a/.github/workflows/ms.network.privateendpoints.yml +++ b/.github/workflows/ms.network.privateendpoints.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.publicipaddresses.yml b/.github/workflows/ms.network.publicipaddresses.yml index 94f05588a2..6c396214d1 100644 --- a/.github/workflows/ms.network.publicipaddresses.yml +++ b/.github/workflows/ms.network.publicipaddresses.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.publicipprefixes.yml b/.github/workflows/ms.network.publicipprefixes.yml index 448ccbe0e5..7dfc0f9c4c 100644 --- a/.github/workflows/ms.network.publicipprefixes.yml +++ b/.github/workflows/ms.network.publicipprefixes.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.routetables.yml b/.github/workflows/ms.network.routetables.yml index ed0317c9c2..b34acc99e1 100644 --- a/.github/workflows/ms.network.routetables.yml +++ b/.github/workflows/ms.network.routetables.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.trafficmanagerprofiles.yml b/.github/workflows/ms.network.trafficmanagerprofiles.yml index b45d4e6210..8df0887502 100644 --- a/.github/workflows/ms.network.trafficmanagerprofiles.yml +++ b/.github/workflows/ms.network.trafficmanagerprofiles.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.virtualhubs.yml b/.github/workflows/ms.network.virtualhubs.yml index 17ee3d9a0a..6f8804f622 100644 --- a/.github/workflows/ms.network.virtualhubs.yml +++ b/.github/workflows/ms.network.virtualhubs.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.virtualnetworkgateways.yml b/.github/workflows/ms.network.virtualnetworkgateways.yml index a8e2441c76..a426add415 100644 --- a/.github/workflows/ms.network.virtualnetworkgateways.yml +++ b/.github/workflows/ms.network.virtualnetworkgateways.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.virtualnetworks.yml b/.github/workflows/ms.network.virtualnetworks.yml index c2b0a22ca3..a5dd9d634a 100644 --- a/.github/workflows/ms.network.virtualnetworks.yml +++ b/.github/workflows/ms.network.virtualnetworks.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.virtualwans.yml b/.github/workflows/ms.network.virtualwans.yml index 63be983a0e..4183d5afcb 100644 --- a/.github/workflows/ms.network.virtualwans.yml +++ b/.github/workflows/ms.network.virtualwans.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.vpngateways.yml b/.github/workflows/ms.network.vpngateways.yml index 7b401e05d0..e2f13f404c 100644 --- a/.github/workflows/ms.network.vpngateways.yml +++ b/.github/workflows/ms.network.vpngateways.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.network.vpnsites.yml b/.github/workflows/ms.network.vpnsites.yml index 5e64ad41ca..8488bb8a44 100644 --- a/.github/workflows/ms.network.vpnsites.yml +++ b/.github/workflows/ms.network.vpnsites.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.operationalinsights.workspaces.yml b/.github/workflows/ms.operationalinsights.workspaces.yml index 9d78005412..385343f542 100644 --- a/.github/workflows/ms.operationalinsights.workspaces.yml +++ b/.github/workflows/ms.operationalinsights.workspaces.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.operationsmanagement.solutions.yml b/.github/workflows/ms.operationsmanagement.solutions.yml index 17bc10e015..d55292826d 100644 --- a/.github/workflows/ms.operationsmanagement.solutions.yml +++ b/.github/workflows/ms.operationsmanagement.solutions.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.recoveryservices.vaults.yml b/.github/workflows/ms.recoveryservices.vaults.yml index 7d361711bc..3334f45b6b 100644 --- a/.github/workflows/ms.recoveryservices.vaults.yml +++ b/.github/workflows/ms.recoveryservices.vaults.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.resources.deploymentscripts.yml b/.github/workflows/ms.resources.deploymentscripts.yml index b045df7fd3..c317b860ef 100644 --- a/.github/workflows/ms.resources.deploymentscripts.yml +++ b/.github/workflows/ms.resources.deploymentscripts.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.resources.resourcegroups.yml b/.github/workflows/ms.resources.resourcegroups.yml index 4ccda1b6bd..971887f25e 100644 --- a/.github/workflows/ms.resources.resourcegroups.yml +++ b/.github/workflows/ms.resources.resourcegroups.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.resources.tags.yml b/.github/workflows/ms.resources.tags.yml index 2c0a5400e2..5b4751ee48 100644 --- a/.github/workflows/ms.resources.tags.yml +++ b/.github/workflows/ms.resources.tags.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.security.azuresecuritycenter.yml b/.github/workflows/ms.security.azuresecuritycenter.yml index ef309528c3..91d5c201ce 100644 --- a/.github/workflows/ms.security.azuresecuritycenter.yml +++ b/.github/workflows/ms.security.azuresecuritycenter.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.servicebus.namespaces.yml b/.github/workflows/ms.servicebus.namespaces.yml index b4c84f542c..db2358ad0a 100644 --- a/.github/workflows/ms.servicebus.namespaces.yml +++ b/.github/workflows/ms.servicebus.namespaces.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.servicefabric.clusters.yml b/.github/workflows/ms.servicefabric.clusters.yml index 8764d91c4e..5c4866bb99 100644 --- a/.github/workflows/ms.servicefabric.clusters.yml +++ b/.github/workflows/ms.servicefabric.clusters.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.signalrservice.webpubsub.yml b/.github/workflows/ms.signalrservice.webpubsub.yml index 89a8073011..6fd784c1c6 100644 --- a/.github/workflows/ms.signalrservice.webpubsub.yml +++ b/.github/workflows/ms.signalrservice.webpubsub.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.sql.managedinstances.yml b/.github/workflows/ms.sql.managedinstances.yml index 76db468a21..63c8bd5db0 100644 --- a/.github/workflows/ms.sql.managedinstances.yml +++ b/.github/workflows/ms.sql.managedinstances.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.sql.servers.yml b/.github/workflows/ms.sql.servers.yml index 1d363054fd..972e422285 100644 --- a/.github/workflows/ms.sql.servers.yml +++ b/.github/workflows/ms.sql.servers.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.storage.storageaccounts.yml b/.github/workflows/ms.storage.storageaccounts.yml index 310bb5b343..5d2fa31d8d 100644 --- a/.github/workflows/ms.storage.storageaccounts.yml +++ b/.github/workflows/ms.storage.storageaccounts.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.synapse.privatelinkhubs.yml b/.github/workflows/ms.synapse.privatelinkhubs.yml index 3082d07aee..8d2413e7f3 100644 --- a/.github/workflows/ms.synapse.privatelinkhubs.yml +++ b/.github/workflows/ms.synapse.privatelinkhubs.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.synapse.workspaces.yml b/.github/workflows/ms.synapse.workspaces.yml index 7dcfd1fb9f..1b2767bd7b 100644 --- a/.github/workflows/ms.synapse.workspaces.yml +++ b/.github/workflows/ms.synapse.workspaces.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.virtualmachineimages.imagetemplates.yml b/.github/workflows/ms.virtualmachineimages.imagetemplates.yml index 352eff2f1a..3339da4bb2 100644 --- a/.github/workflows/ms.virtualmachineimages.imagetemplates.yml +++ b/.github/workflows/ms.virtualmachineimages.imagetemplates.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.web.connections.yml b/.github/workflows/ms.web.connections.yml index 9e0794d5b8..01f583a09d 100644 --- a/.github/workflows/ms.web.connections.yml +++ b/.github/workflows/ms.web.connections.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.web.hostingenvironments.yml b/.github/workflows/ms.web.hostingenvironments.yml index 7a9e0327e4..5b4e9cdb84 100644 --- a/.github/workflows/ms.web.hostingenvironments.yml +++ b/.github/workflows/ms.web.hostingenvironments.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.web.serverfarms.yml b/.github/workflows/ms.web.serverfarms.yml index 67953d4d14..ea4d98faf9 100644 --- a/.github/workflows/ms.web.serverfarms.yml +++ b/.github/workflows/ms.web.serverfarms.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.web.sites.yml b/.github/workflows/ms.web.sites.yml index 4f0719728e..172f6a7571 100644 --- a/.github/workflows/ms.web.sites.yml +++ b/.github/workflows/ms.web.sites.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### diff --git a/.github/workflows/ms.web.staticsites.yml b/.github/workflows/ms.web.staticsites.yml index b0caf6bc2e..6c02711084 100644 --- a/.github/workflows/ms.web.staticsites.yml +++ b/.github/workflows/ms.web.staticsites.yml @@ -32,6 +32,7 @@ env: ARM_SUBSCRIPTION_ID: '${{ secrets.ARM_SUBSCRIPTION_ID }}' ARM_MGMTGROUP_ID: '${{ secrets.ARM_MGMTGROUP_ID }}' ARM_TENANT_ID: '${{ secrets.ARM_TENANT_ID }}' + TOKEN_NAMEPREFIX: '${{ secrets.TOKEN_NAMEPREFIX }}' jobs: ########################### From f85a6ca0ef0dd1a62828379c9394d7f92e194a09 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Wed, 10 Aug 2022 17:23:45 +1000 Subject: [PATCH 69/88] fixes post merges --- .../pipelineTemplates/jobs.validateModuleDeployment.yml | 2 +- .github/actions/templates/validateModuleDeployment/action.yml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index 8e099b3b74..1cd2ee2d71 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -145,8 +145,8 @@ jobs: # Construct Token Function Input $ConvertTokensInputs = @{ - Tokens = @{} FilePathList = $targetFileList + Tokens = @{} TokenPrefix = '$(tokenPrefix)' TokenSuffix = '$(tokenSuffix)' } diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index 1395e02fb4..b77d0a0f4f 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -146,7 +146,6 @@ runs: $ConvertTokensInputs = @{ FilePathList = $targetFileList Tokens = @{} - FilePathList = $targetFileList TokenPrefix = '${{ env.tokenPrefix }}' TokenSuffix = '${{ env.tokenSuffix }}' } From 80f39c3122c96aea7d4485cca8eab1dcac018844 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Wed, 10 Aug 2022 17:57:38 +1000 Subject: [PATCH 70/88] updated pipeline jobs --- .../jobs.validateModuleDeployment.yml | 6 +++--- .../platform.dependencies.yml | 18 +++++++++--------- .github/workflows/platform.dependencies.yml | 4 +--- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index 1cd2ee2d71..64049c31c9 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -146,9 +146,9 @@ jobs: # Construct Token Function Input $ConvertTokensInputs = @{ FilePathList = $targetFileList - Tokens = @{} - TokenPrefix = '$(tokenPrefix)' - TokenSuffix = '$(tokenSuffix)' + Tokens = @{} + TokenPrefix = '$(tokenPrefix)' + TokenSuffix = '$(tokenSuffix)' } # Add enforced tokens diff --git a/.azuredevops/platformPipelines/platform.dependencies.yml b/.azuredevops/platformPipelines/platform.dependencies.yml index 502dfd179d..f6aa4e9865 100644 --- a/.azuredevops/platformPipelines/platform.dependencies.yml +++ b/.azuredevops/platformPipelines/platform.dependencies.yml @@ -277,10 +277,10 @@ stages: # Construct Token Function Input $ConvertTokensInputs = @{ - Tokens = @{} - FilePathList= $parameterFilePaths - TokenPrefix = '$(tokenPrefix)' - TokenSuffix = '$(tokenSuffix)' + FilePathList = $parameterFilePaths + Tokens = @{} + TokenPrefix = '$(tokenPrefix)' + TokenSuffix = '$(tokenSuffix)' } # Add local (source control) tokens @@ -596,10 +596,10 @@ stages: # Construct Token Function Input $ConvertTokensInputs = @{ - FilePathList = $parameterFilePaths - Tokens = @{} - TokenPrefix = '$(tokenPrefix)' - TokenSuffix = '$(tokenSuffix)' + FilePathList = $parameterFilePaths + Tokens = @{} + TokenPrefix = '$(tokenPrefix)' + TokenSuffix = '$(tokenSuffix)' } # Add local (source control) tokens @@ -734,7 +734,7 @@ stages: # Construct Token Function Input $ConvertTokensInputs = @{ - Tokens = @{} + Tokens = @{} FilePathList = $parameterFilePath TokenPrefix = '$(tokenPrefix)' TokenSuffix = '$(tokenSuffix)' diff --git a/.github/workflows/platform.dependencies.yml b/.github/workflows/platform.dependencies.yml index 64bc78c05a..9c5c0ab92a 100644 --- a/.github/workflows/platform.dependencies.yml +++ b/.github/workflows/platform.dependencies.yml @@ -418,8 +418,8 @@ jobs: # Construct Token Function Input $ConvertTokensInputs = @{ - Tokens = @{} FilePath = $parameterFilePaths + Tokens = @{} TokenPrefix = '${{ env.tokenPrefix }}' TokenSuffix = '${{ env.tokenSuffix }}' } @@ -1143,8 +1143,6 @@ jobs: TokenPrefix = '${{ env.tokenPrefix }}' TokenSuffix = '${{ env.tokenSuffix }}' } - Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.Tokens += $tokenMap # Add local (source control) tokens $tokenMap = @{} From 5a52419db23722c9320dd0ebd2afe6f55d70e7a4 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Wed, 10 Aug 2022 19:02:43 +1000 Subject: [PATCH 71/88] disabled the enableDefaultTelemetry --- settings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.yml b/settings.yml index 3ea5dd378a..df64e5c12e 100644 --- a/settings.yml +++ b/settings.yml @@ -5,7 +5,7 @@ variables: # Enable or disable CARMLs CI telemetry tracking. Note: This tracks the number of deployments only. # See: https://github.com/Azure/ResourceModules/wiki/The%20library%20-%20Module%20design#telemetry - enableDefaultTelemetry: true + enableDefaultTelemetry: false ###################################### # Local tokens settings From e4d9efa670f87dfc0fada8fecefef38ad5dfc3de Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Thu, 11 Aug 2022 08:27:21 +1000 Subject: [PATCH 72/88] updated token function in devops --- .../platform.dependencies.yml | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/.azuredevops/platformPipelines/platform.dependencies.yml b/.azuredevops/platformPipelines/platform.dependencies.yml index f6aa4e9865..92be01654a 100644 --- a/.azuredevops/platformPipelines/platform.dependencies.yml +++ b/.azuredevops/platformPipelines/platform.dependencies.yml @@ -632,10 +632,11 @@ stages: $vpnSharedKeyString = (New-Guid).Guid.SubString(0, 32) $vpnSharedKey = ConvertTo-SecureString -String $vpnSharedKeyString -AsPlainText -Force - $namePrefixToken = $Settings.parameterFileTokens.localTokens | Where-Object { $_.name -eq 'namePrefix' } + $namePrefixToken = $ConvertTokensInputs.Tokens['namePrefix'] + $certInputObject = @{ - Subject = 'CN=*.{0}.onmicrosoft.com' -f $namePrefixToken.value - DnsName = '*.{0}.onmicrosoft.com' -f $namePrefixToken.value + Subject = 'CN=*.{0}.onmicrosoft.com' -f $namePrefixToken + DnsName = '*.{0}.onmicrosoft.com' -f $namePrefixToken CertStoreLocation = 'cert:\LocalMachine\My' KeyExportPolicy = 'Exportable' Provider = 'Microsoft Enhanced RSA and AES Cryptographic Provider' @@ -734,19 +735,26 @@ stages: # Construct Token Function Input $ConvertTokensInputs = @{ - Tokens = @{} FilePathList = $parameterFilePath + Tokens = @{} TokenPrefix = '$(tokenPrefix)' TokenSuffix = '$(tokenSuffix)' } - if ($Settings.parameterFileTokens.localTokens) { - $tokenMap = @{} - foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{ $token.name = $token.value } - } - Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.Tokens = $tokenMap + + # Add local (source control) tokens + $tokenMap = @{} + foreach ($token in (Get-ChildItem env: | Where-Object -Property Name -Like "localToken_*")) { + $tokenMap += @{ $token.Name.Replace('localToken_','','OrdinalIgnoreCase') = $token.value } } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.Tokens += $tokenMap + + # Swap 'namePrefix' token if provided as a Azure DevOps variable + if(-not [String]::IsNullOrEmpty("$env:TOKEN_NAMEPREFIX")){ + Write-Verbose 'Using [namePrefix] token from Azure DevOps Variable Groups' -Verbose + $ConvertTokensInputs.Tokens['namePrefix'] = "$env:TOKEN_NAMEPREFIX" + } + $null = Convert-TokensInFileList @ConvertTokensInputs # Get key vault name From d4fadeec6f3cd540b2b2426e6626ef98463d50df Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Thu, 11 Aug 2022 12:53:35 +1000 Subject: [PATCH 73/88] updated settings yaml --- settings.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/settings.yml b/settings.yml index df64e5c12e..a7cefed591 100644 --- a/settings.yml +++ b/settings.yml @@ -13,7 +13,7 @@ variables: # the 'localToken_' prefix will be removed from the key name when the pipelines run. # e.g. if you have a token in your parameter file as <>, then the token defined in this file looks like "localToken_customKey": 'value' - localToken_namePrefix: 'leenz' # A 3-5 character length string, included in the resources names, is overridden if provided as GitHub Secret / ADO Variable + localToken_namePrefix: 'carml' # A 3-5 character length string, included in the resources names, is overridden if provided as GitHub Secret / ADO Variable ###################################### # global tokens settings @@ -50,7 +50,7 @@ variables: ###################################### bicepRegistryDoPublish: true # Set to true, if you would like to publish module templates to a bicep registry - bicepRegistryName: adpzu3bxazacrx001 # The name of the bicep registry (ACR) to publish to. If it does not exist, it will be created. + bicepRegistryName: adpsxxazacrx001 # The name of the bicep registry (ACR) to publish to. If it does not exist, it will be created. bicepRegistryRGName: 'artifacts-rg' # The resource group that hosts the private bicep registry (ACR) bicepRegistryRgLocation: 'West Europe' # The location of the resource group to publish to @@ -64,7 +64,7 @@ variables: vmImage: 'ubuntu-latest' # Use this for Microsoft-hosted agents poolName: '' # Use this for self-hosted agents - serviceConnection: 'AzureConnection' + serviceConnection: 'CARML-CSU-Tenant-Connection' ###################################### # Source From 530e5e1e7443d1f07d317de0a8f67c9e36ec4bf1 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Thu, 11 Aug 2022 12:55:28 +1000 Subject: [PATCH 74/88] enabled telemetry --- settings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.yml b/settings.yml index a7cefed591..6096aea10f 100644 --- a/settings.yml +++ b/settings.yml @@ -5,7 +5,7 @@ variables: # Enable or disable CARMLs CI telemetry tracking. Note: This tracks the number of deployments only. # See: https://github.com/Azure/ResourceModules/wiki/The%20library%20-%20Module%20design#telemetry - enableDefaultTelemetry: false + enableDefaultTelemetry: true ###################################### # Local tokens settings From e9041ffc888452973c682b2484b7c035e3afb890 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Thu, 11 Aug 2022 16:44:51 +1000 Subject: [PATCH 75/88] updated role assignment --- .../dependencies/constructs/StoreVhdToStorage/deploy.bicep | 1 - 1 file changed, 1 deletion(-) diff --git a/utilities/pipelines/dependencies/constructs/StoreVhdToStorage/deploy.bicep b/utilities/pipelines/dependencies/constructs/StoreVhdToStorage/deploy.bicep index e16ec3b4fe..237e583781 100644 --- a/utilities/pipelines/dependencies/constructs/StoreVhdToStorage/deploy.bicep +++ b/utilities/pipelines/dependencies/constructs/StoreVhdToStorage/deploy.bicep @@ -27,7 +27,6 @@ module roleAssignment '../../../../../modules/Microsoft.Authorization/roleAssign params: { roleDefinitionIdOrName: 'Contributor' principalId: userMsi.outputs.principalId - subscriptionId: subscription().id } } From a790f598c3aff134deb630ad1db51273ea17b3b5 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Thu, 11 Aug 2022 17:25:47 +1000 Subject: [PATCH 76/88] updated subscription id --- .../dependencies/constructs/StoreVhdToStorage/deploy.bicep | 1 + 1 file changed, 1 insertion(+) diff --git a/utilities/pipelines/dependencies/constructs/StoreVhdToStorage/deploy.bicep b/utilities/pipelines/dependencies/constructs/StoreVhdToStorage/deploy.bicep index 237e583781..4a11853977 100644 --- a/utilities/pipelines/dependencies/constructs/StoreVhdToStorage/deploy.bicep +++ b/utilities/pipelines/dependencies/constructs/StoreVhdToStorage/deploy.bicep @@ -27,6 +27,7 @@ module roleAssignment '../../../../../modules/Microsoft.Authorization/roleAssign params: { roleDefinitionIdOrName: 'Contributor' principalId: userMsi.outputs.principalId + subscriptionId: subscription().subscriptionId } } From a034c10c99208f035f8746e3759ce6326a32674f Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Thu, 11 Aug 2022 17:43:02 +1000 Subject: [PATCH 77/88] updated from carml branch --- .../pipelineTemplates/jobs.validateModuleDeployment.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index 64049c31c9..77685dd72d 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -130,9 +130,6 @@ jobs: # Load used functions . (Join-Path '$(System.DefaultWorkingDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFileList.ps1') - # Load Settings File - $Settings = Get-Content -Path (Join-Path '$(System.DefaultWorkingDirectory)' 'settings.json') | ConvertFrom-Json -AsHashTable - # Get Service Principal Object ID $context = Get-AzContext $servicePrincipalAppId = $context.Account.Id From c82bc9a2dc634f2c19d9e849f955f4701eeeedfa Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Fri, 12 Aug 2022 10:54:46 +1000 Subject: [PATCH 78/88] Update docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md Co-authored-by: Alexander Sehr --- ...ed - Scenario 2 Onboard module library and CI environment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md b/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md index dc71576a28..6edfed1b44 100644 --- a/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md +++ b/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md @@ -112,7 +112,7 @@ To update the `namePrefix`, perform the following steps: > **Note:** The value should be a 3-5 character long string like `cntso`. Longer strings are not recommended as they may conflict with Azure resource name length restrictions. - > **Note:** The CI pipelines automatically removes `localToken_` section from the name when processing the tokens replacement. + > **Note:** The CI pipelines automatically removes the `localToken_` prefix from the name when processing the tokens replacement. > **Note:** We highly encourage you to use the 'Check namePrefix availability' script ([see the documentation here](./Getting%20started%20-%20Check%20NamePrefix%20availability)) to check if the intended resource name will be available, based on the provided prefix. From d7b1cefbd1b03c4c4738154dece888a8c66a9435 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Fri, 12 Aug 2022 10:55:07 +1000 Subject: [PATCH 79/88] Update docs/wiki/The CI environment - Token replacement.md Co-authored-by: Alexander Sehr --- docs/wiki/The CI environment - Token replacement.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/The CI environment - Token replacement.md b/docs/wiki/The CI environment - Token replacement.md index 6e4a259745..9ae97f7291 100644 --- a/docs/wiki/The CI environment - Token replacement.md +++ b/docs/wiki/The CI environment - Token replacement.md @@ -47,7 +47,7 @@ localToken_tokenB: 'bar' ``` -> **Note:** The CI pipelines automatically removes `localToken_` section from the name when processing the tokens replacement. This means that your actual token name is `tokenA` and NOT `localToken_tokenA`. +> **Note:** The CI pipelines automatically removes the `localToken_` prefix from the name when processing the tokens replacement. This means that your actual token name is `tokenA` and NOT `localToken_tokenA`. Let's say you'd want to use this token inside a Key Vault parameter file, to deploy the Key Vault with a name that contains this token: From 9b9783961243cbf67e5f9af8e8b55c343906f85e Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Fri, 12 Aug 2022 12:01:00 +1000 Subject: [PATCH 80/88] updated scripts based on feedback --- .../staticValidation/module.tests.ps1 | 32 +++++++++---------- utilities/tools/Test-ModuleLocally.ps1 | 10 +++--- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/utilities/pipelines/staticValidation/module.tests.ps1 b/utilities/pipelines/staticValidation/module.tests.ps1 index d4f2e598fc..9ba3a2b5dc 100644 --- a/utilities/pipelines/staticValidation/module.tests.ps1 +++ b/utilities/pipelines/staticValidation/module.tests.ps1 @@ -1028,24 +1028,22 @@ Describe 'Deployment template tests' -Tag Template { } } - foreach ($parameterFileTokenTestCase in $parameterFileTokenTestCases) { - It '[] [Tokens] Parameter file [] should not contain the plain value for token []' -TestCases $parameterFileTokenTestCase { - param ( - [string] $parameterFilePath, - [string] $parameterFileName, - [string] $tokenPrefix, - [string] $tokenSuffix, - [string] $tokenName, - [string] $tokenValue, - [string] $moduleFolderName - ) - $ParameterFileTokenName = -join ($tokenPrefix, $tokenName, $tokenSuffix) - $ParameterFileContent = Get-Content -Path $parameterFilePath + It '[] [Tokens] Parameter file [] should not contain the plain value for token []' -TestCases $parameterFileTokenTestCases { + param ( + [string] $parameterFilePath, + [string] $parameterFileName, + [string] $tokenPrefix, + [string] $tokenSuffix, + [string] $tokenName, + [string] $tokenValue, + [string] $moduleFolderName + ) + $ParameterFileTokenName = -join ($tokenPrefix, $tokenName, $tokenSuffix) + $ParameterFileContent = Get-Content -Path $parameterFilePath - $incorrectReferencesFound = $ParameterFileContent | Select-String -Pattern $tokenValue -AllMatches - if ($incorrectReferencesFound.Matches) { - $incorrectReferencesFound.Matches.Count | Should -Be 0 -Because ('Parameter file should not contain the [{0}] value, instead should reference the token value [{1}]. Please check the {2} lines: [{3}]' -f $tokenName, $ParameterFileTokenName, $incorrectReferencesFound.Matches.Count, ($incorrectReferencesFound.Line.Trim() -join ",`n")) - } + $incorrectReferencesFound = $ParameterFileContent | Select-String -Pattern $tokenValue -AllMatches + if ($incorrectReferencesFound.Matches) { + $incorrectReferencesFound.Matches.Count | Should -Be 0 -Because ('Parameter file should not contain the [{0}] value, instead should reference the token value [{1}]. Please check the {2} lines: [{3}]' -f $tokenName, $ParameterFileTokenName, $incorrectReferencesFound.Matches.Count, ($incorrectReferencesFound.Line.Trim() -join ",`n")) } } } diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index f6900ca080..ac75964ea0 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -138,7 +138,7 @@ function Test-ModuleLocally { begin { $repoRootPath = (Get-Item $PSScriptRoot).Parent.Parent $ModuleName = Split-Path (Split-Path $TemplateFilePath -Parent) -Leaf - Write-Verbose "Running Local Tests for $($ModuleName)" + Write-Verbose "Running local tests for [$ModuleName]" # Load Tokens Converter Scripts . (Join-Path $PSScriptRoot '../pipelines/tokensReplacement/Convert-TokensInFileList.ps1') # Load Modules Validation / Deployment Scripts @@ -228,11 +228,11 @@ function Test-ModuleLocally { # Validation & Deployment tests # ################################# - # Invoke Token Replacement Functionality and Convert Tokens in Parameter Files - $null = Convert-TokensInFileList @tokenConfiguration - if (($ValidationTest -or $DeploymentTest) -and $ValidateOrDeployParameters) { + # Invoke Token Replacement Functionality and Convert Tokens in Parameter Files + $null = Convert-TokensInFileList @tokenConfiguration + # Find Test Parameter Files # ------------------------- if ((Get-Item -Path $testFilePath) -is [System.IO.DirectoryInfo]) { @@ -258,7 +258,7 @@ function Test-ModuleLocally { if ($ValidationTest) { # Loop through test parameter files foreach ($moduleTestFile in $moduleTestFiles) { - Write-Verbose ('Validating Module [{0}] with test file [{1}]' -f $ModuleName, (Split-Path $moduleTestFile -Leaf)) -Verbose + Write-Verbose ('Validating module [{0}] with test file [{1}]' -f $ModuleName, (Split-Path $moduleTestFile -Leaf)) -Verbose Test-TemplateDeployment @functionInput -ParameterFilePath $moduleTestFile } } From f98b02b4dae64f5584e5733b31e7459067dca94f Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Fri, 12 Aug 2022 12:35:52 +1000 Subject: [PATCH 81/88] removed reference to global.variables.yml --- .azuredevops/modulePipelines/ms.synapse.workspaces.yml | 2 +- .github/workflows/ms.synapse.workspaces.yml | 2 +- ...st changes - Scenario 2 Module library and CI environment.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.azuredevops/modulePipelines/ms.synapse.workspaces.yml b/.azuredevops/modulePipelines/ms.synapse.workspaces.yml index 0f54cd80f7..2868ab338a 100644 --- a/.azuredevops/modulePipelines/ms.synapse.workspaces.yml +++ b/.azuredevops/modulePipelines/ms.synapse.workspaces.yml @@ -28,7 +28,7 @@ trigger: - '/**/*.md' variables: - - template: '../../global.variables.yml' + - template: '../../settings.yml' - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/modules/Microsoft.Synapse/workspaces' diff --git a/.github/workflows/ms.synapse.workspaces.yml b/.github/workflows/ms.synapse.workspaces.yml index 1b2767bd7b..4a41f79748 100644 --- a/.github/workflows/ms.synapse.workspaces.yml +++ b/.github/workflows/ms.synapse.workspaces.yml @@ -25,7 +25,7 @@ on: - '!*/**/readme.md' env: - variablesPath: 'global.variables.yml' + variablesPath: 'settings.yml' modulePath: 'modules/Microsoft.Synapse/workspaces' workflowPath: '.github/workflows/ms.synapse.workspaces.yml' AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} diff --git a/docs/wiki/Fetching latest changes - Scenario 2 Module library and CI environment.md b/docs/wiki/Fetching latest changes - Scenario 2 Module library and CI environment.md index 2a0eee2942..17e2969c21 100644 --- a/docs/wiki/Fetching latest changes - Scenario 2 Module library and CI environment.md +++ b/docs/wiki/Fetching latest changes - Scenario 2 Module library and CI environment.md @@ -52,7 +52,7 @@ Clone/download CARML repository to create a local copy of it, as explained in Az Personalize files with your specific settings: 1. [Update default name prefix](./Getting%20started%20-%20Scenario%202%20Onboard%20module%20library%20and%20CI%20environment#31-update-default-nameprefix) -1. Update variables file ([`global.variables.yml`](https://github.com/Azure/ResourceModules/blob/main/global.variables.yml)) as explained in [Set up variables file](./Getting%20started%20-%20Scenario%202%20Onboard%20module%20library%20and%20CI%20environment#322-set-up-variables-file) +1. Update settings file ([`settings.yml`](https://github.com/Azure/ResourceModules/blob/main/settings.yml)) as explained in [Set up variables file](./Getting%20started%20-%20Scenario%202%20Onboard%20module%20library%20and%20CI%20environment#322-set-up-variables-file) # 3. (Optional) Re-apply your customizations From 95305bbebec8b0816b2e78fb590c7556d3b00341 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sat, 13 Aug 2022 09:55:49 +1000 Subject: [PATCH 82/88] Token comments updates (#23) --- .../jobs.dependenciesModuleDeployment.yml | 4 ++-- .../jobs.validateModuleDeployment.yml | 4 ++-- .../platformPipelines/platform.dependencies.yml | 12 ++++++------ .../templates/validateModuleDeployment/action.yml | 6 +++--- .github/workflows/platform.dependencies.yml | 12 ++++++------ ...io 2 Onboard module library and CI environment.md | 4 ++-- docs/wiki/The CI environment - Token replacement.md | 2 +- settings.yml | 2 +- 8 files changed, 23 insertions(+), 23 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.dependenciesModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.dependenciesModuleDeployment.yml index 5dd478d7a0..b5485ebb49 100644 --- a/.azuredevops/pipelineTemplates/jobs.dependenciesModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.dependenciesModuleDeployment.yml @@ -149,8 +149,8 @@ jobs: Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens += $tokenMap - # Swap 'namePrefix' token if provided as a Azure DevOps variable - if(-not [String]::IsNullOrEmpty("$env:TOKEN_NAMEPREFIX")){ + # Swap 'namePrefix' token if empty and provided as a Azure DevOps variable + if([String]::IsNullOrEmpty($ConvertTokensInputs.Tokens['namePrefix'])){ Write-Verbose 'Using [namePrefix] token from Azure DevOps Variable Groups' -Verbose $ConvertTokensInputs.Tokens['namePrefix'] = "$env:TOKEN_NAMEPREFIX" } diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index 77685dd72d..7a4aba1694 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -165,8 +165,8 @@ jobs: Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens += $tokenMap - # Swap 'namePrefix' token if provided as a Azure DevOps variable - if(-not [String]::IsNullOrEmpty("$env:TOKEN_NAMEPREFIX")){ + # Swap 'namePrefix' token if empty and provided as a Azure DevOps variable + if([String]::IsNullOrEmpty($ConvertTokensInputs.Tokens['namePrefix'])){ Write-Verbose 'Using [namePrefix] token from Azure DevOps Variable Groups' -Verbose $ConvertTokensInputs.Tokens['namePrefix'] = "$env:TOKEN_NAMEPREFIX" } diff --git a/.azuredevops/platformPipelines/platform.dependencies.yml b/.azuredevops/platformPipelines/platform.dependencies.yml index 92be01654a..221583d432 100644 --- a/.azuredevops/platformPipelines/platform.dependencies.yml +++ b/.azuredevops/platformPipelines/platform.dependencies.yml @@ -291,8 +291,8 @@ stages: Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens += $tokenMap - # Swap 'namePrefix' token if provided as a Azure DevOps variable - if(-not [String]::IsNullOrEmpty("$env:TOKEN_NAMEPREFIX")){ + # Swap 'namePrefix' token if empty and provided as a Azure DevOps variable + if([String]::IsNullOrEmpty($ConvertTokensInputs.Tokens['namePrefix'])){ Write-Verbose 'Using [namePrefix] token from Azure DevOps Variable Groups' -Verbose $ConvertTokensInputs.Tokens['namePrefix'] = "$env:TOKEN_NAMEPREFIX" } @@ -610,8 +610,8 @@ stages: Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens += $tokenMap - # Swap 'namePrefix' token if provided as a Azure DevOps variable - if(-not [String]::IsNullOrEmpty("$env:TOKEN_NAMEPREFIX")){ + # Swap 'namePrefix' token if empty and provided as a Azure DevOps variable + if([String]::IsNullOrEmpty($ConvertTokensInputs.Tokens['namePrefix'])){ Write-Verbose 'Using [namePrefix] token from Azure DevOps Variable Groups' -Verbose $ConvertTokensInputs.Tokens['namePrefix'] = "$env:TOKEN_NAMEPREFIX" } @@ -749,8 +749,8 @@ stages: Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens += $tokenMap - # Swap 'namePrefix' token if provided as a Azure DevOps variable - if(-not [String]::IsNullOrEmpty("$env:TOKEN_NAMEPREFIX")){ + # Swap 'namePrefix' token if empty and provided as a Azure DevOps variable + if([String]::IsNullOrEmpty($ConvertTokensInputs.Tokens['namePrefix'])){ Write-Verbose 'Using [namePrefix] token from Azure DevOps Variable Groups' -Verbose $ConvertTokensInputs.Tokens['namePrefix'] = "$env:TOKEN_NAMEPREFIX" } diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index b77d0a0f4f..715c98cfcc 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -167,10 +167,10 @@ runs: Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens += $tokenMap - # Swap 'namePrefix' token if provided as a GitHub secret - if(-not [String]::IsNullOrEmpty('${{ env.TOKEN_NAMEPREFIX }}')){ + # Swap 'namePrefix' token if empty and provided as a GitHub secret + if([String]::IsNullOrEmpty($ConvertTokensInputs.Tokens['namePrefix'])){ Write-Verbose 'Using [namePrefix] token from GitHub' -Verbose - $ConvertTokensInputs.Tokens['namePrefix'] = '${{ env.TOKEN_NAMEPREFIX }}' + $ConvertTokensInputs.Tokens['namePrefix'] = '${{ env.TOKEN_NAMEPREFIX }}' } # Add custom tokens (passed in via the pipeline) diff --git a/.github/workflows/platform.dependencies.yml b/.github/workflows/platform.dependencies.yml index 9c5c0ab92a..fc6bb13c49 100644 --- a/.github/workflows/platform.dependencies.yml +++ b/.github/workflows/platform.dependencies.yml @@ -432,8 +432,8 @@ jobs: Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens += $tokenMap - # Swap 'namePrefix' token if provided as a GitHub secret - if(-not [String]::IsNullOrEmpty('${{ env.TOKEN_NAMEPREFIX }}')){ + # Swap 'namePrefix' token if empty and provided as a GitHub secret + if([String]::IsNullOrEmpty($ConvertTokensInputs.Tokens['namePrefix'])){ Write-Verbose 'Using [namePrefix] token from GitHub' -Verbose $ConvertTokensInputs.Tokens['namePrefix'] = '${{ env.TOKEN_NAMEPREFIX }}' } @@ -966,8 +966,8 @@ jobs: Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens += $tokenMap - # Swap 'namePrefix' token if provided as a GitHub secret - if(-not [String]::IsNullOrEmpty('${{ env.TOKEN_NAMEPREFIX }}')){ + # Swap 'namePrefix' token if empty and provided as a GitHub secret + if([String]::IsNullOrEmpty($ConvertTokensInputs.Tokens['namePrefix'])){ Write-Verbose 'Using [namePrefix] token from GitHub' -Verbose $ConvertTokensInputs.Tokens['namePrefix'] = '${{ env.TOKEN_NAMEPREFIX }}' } @@ -1152,8 +1152,8 @@ jobs: Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens += $tokenMap - # Swap 'namePrefix' token if provided as a GitHub secret - if(-not [String]::IsNullOrEmpty('${{ env.TOKEN_NAMEPREFIX }}')){ + # Swap 'namePrefix' token if empty and provided as a GitHub secret + if([String]::IsNullOrEmpty($ConvertTokensInputs.Tokens['namePrefix'])){ Write-Verbose 'Using [namePrefix] token from GitHub' -Verbose $ConvertTokensInputs.Tokens['namePrefix'] = '${{ env.TOKEN_NAMEPREFIX }}' } diff --git a/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md b/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md index 6edfed1b44..908cebf97f 100644 --- a/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md +++ b/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md @@ -118,7 +118,7 @@ To update the `namePrefix`, perform the following steps: For further information on the token replacement logic, please refer to the corresponding [Token replacement](./The%20CI%20environment%20-%20Token%20replacement) section. - If you do not prefer to set the `namePrefix` locally for your CI environment. You can optionally set it as a GitHub Secret or add it to the ADO variable group as the key `TOKEN_NAMEPREFIX` with value `your name prefix value` and that will take precedence over the one specified in the `settings.yml`. + If you do not prefer to set the `namePrefix` locally for your CI environment. You can optionally set it as a GitHub Secret or add it to the ADO variable group as the key `TOKEN_NAMEPREFIX` with value `your name prefix value` and that will only take precedence if the `localToken_namePrefix` is left empty in the `settings.yml`. ## 3.2 Set up CI-environment-specific configuration @@ -144,7 +144,7 @@ To use the environment's pipelines you should use the information you gathered d | `ARM_TENANT_ID` | `9734cec9-4384-445b-bbb6-767e7be6e5ec` | The tenant ID of the Azure Active Directory tenant to test-deploy modules in. | | `AZURE_CREDENTIALS` | `{"clientId": "4ce8ce4c-cac0-48eb-b815-65e5763e2929", "clientSecret": "", "subscriptionId": "d0312b25-9160-4550-914f-8738d9b5caf5", "tenantId": "9734cec9-4384-445b-bbb6-767e7be6e5ec" }` | The login credentials of the deployment principal used to log into the target Azure environment to test in. The format is described [here](https://github.com/Azure/login#configure-deployment-credentials). | | `PLATFORM_REPO_UPDATE_PAT` | `` | A private access token (PAT) with enough permissions assigned to it to push into the main branch. This PAT is leveraged by pipelines that automatically generate ReadMe files to keep them up to date. | -| `TOKEN_NAMEPREFIX` | `` | Optional. If you specify the name prefix token here, this will take precedence over the `localToken_namePrefix` specified in the `settings.yml`. | +| `TOKEN_NAMEPREFIX` | `cntso` | Optional. If you specify the name prefix token here, this will only take precedence when the `localToken_namePrefix` specified in the `settings.yml` is left empty. |

diff --git a/docs/wiki/The CI environment - Token replacement.md b/docs/wiki/The CI environment - Token replacement.md index 9ae97f7291..c30e222671 100644 --- a/docs/wiki/The CI environment - Token replacement.md +++ b/docs/wiki/The CI environment - Token replacement.md @@ -67,7 +67,7 @@ The solution comes with one predefined local token `namePrefix`. This token is l 1. By updating the value of `localToken_namePrefix` in the [settings.yml](https://github.com/Azure/ResourceModules/blob/main/settings.yml), which then becomes `namePrefix` when the pipelines run. -1. Creating a GitHub Secret / ADO variable called `TOKEN_NAMEPREFIX`, which then becomes `namePrefix` when the pipelines run. If created as a secret or ADO variable, it will take precedence over the one defined in the [settings.yml](https://github.com/Azure/ResourceModules/blob/main/settings.yml). +1. Creating a GitHub Secret / ADO variable called `TOKEN_NAMEPREFIX`, which then becomes `namePrefix` when the pipelines run. If created as a secret or ADO variable, it will only take precedence when the `localToken_namePrefix` in the [settings.yml](https://github.com/Azure/ResourceModules/blob/main/settings.yml) is left empty. When validating modules through the CI environment, you must update it to a custom value as described in the [Update default nameprefix](./Getting%20started%20-%20Scenario%202%20Onboard%20module%20library%20and%20CI%20environment#31-update-default-nameprefix) paragraph. This is done to avoid conflicts with resources requiring a globally unique name, such as storage accounts or Key Vaults. diff --git a/settings.yml b/settings.yml index 6096aea10f..ab84c78065 100644 --- a/settings.yml +++ b/settings.yml @@ -13,7 +13,7 @@ variables: # the 'localToken_' prefix will be removed from the key name when the pipelines run. # e.g. if you have a token in your parameter file as <>, then the token defined in this file looks like "localToken_customKey": 'value' - localToken_namePrefix: 'carml' # A 3-5 character length string, included in the resources names, is overridden if provided as GitHub Secret / ADO Variable + localToken_namePrefix: '' # A 3-5 character length unique string, included in the resources names (e.g. 'cntso'). Used for local module testing and pipelines. ###################################### # global tokens settings From 5c70ad7407067ddf7324653d68c9e5eacd9e7225 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sat, 13 Aug 2022 10:12:33 +1000 Subject: [PATCH 83/88] updated test local script based on feedback --- utilities/tools/Test-ModuleLocally.ps1 | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index ac75964ea0..6f4ad2cced 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -9,7 +9,7 @@ subscription Id, principal Id, tenant ID and other parameters that need to be to .PARAMETER TemplateFilePath Mandatory. Path to the Bicep/ARM module that is being tested -.PARAMETER TestFilePath +.PARAMETER ParameterFilePath Optional. Path to the template file/folder that is to be tested with the template file. Defaults to the module's default '.parameter' folder. Will be used if the DeploymentTest/ValidationTest switches are set. .PARAMETER PesterTest @@ -34,7 +34,7 @@ Optional. A hashtable parameter that contains custom tokens to be replaced in th $TestModuleLocallyInput = @{ TemplateFilePath = 'C:\Microsoft.Network\routeTables\deploy.bicep' - TestFilePath = 'C:\Microsoft.Network\routeTables\.test\parameters.json' + ParameterFilePath = 'C:\Microsoft.Network\routeTables\.test\parameters.json' PesterTest = $false DeploymentTest = $false ValidationTest = $true @@ -114,7 +114,7 @@ function Test-ModuleLocally { [string] $TemplateFilePath, [Parameter(Mandatory = $false)] - [string] $TestFilePath = (Join-Path (Split-Path $TemplateFilePath -Parent) '.test'), + [string] $ParameterFilePath = (Join-Path (Split-Path $TemplateFilePath -Parent) '.test'), [Parameter(Mandatory = $false)] [string] $moduleTestFilePath = 'utilities/pipelines/staticValidation/module.tests.ps1', @@ -149,10 +149,10 @@ function Test-ModuleLocally { # Find Test Parameter Files # ------------------------- - if ((Get-Item -Path $testFilePath) -is [System.IO.DirectoryInfo]) { - $moduleTestFiles = (Get-ChildItem -Path $testFilePath).FullName + if ((Get-Item -Path $ParameterFilePath) -is [System.IO.DirectoryInfo]) { + $moduleTestFiles = (Get-ChildItem -Path $ParameterFilePath).FullName } else { - $moduleTestFiles = @($testFilePath) + $moduleTestFiles = @($ParameterFilePath) } # Construct Token Configuration Input @@ -235,10 +235,10 @@ function Test-ModuleLocally { # Find Test Parameter Files # ------------------------- - if ((Get-Item -Path $testFilePath) -is [System.IO.DirectoryInfo]) { - $moduleTestFiles = (Get-ChildItem -Path $testFilePath).FullName + if ((Get-Item -Path $ParameterFilePath) -is [System.IO.DirectoryInfo]) { + $moduleTestFiles = (Get-ChildItem -Path $ParameterFilePath).FullName } else { - $moduleTestFiles = @($testFilePath) + $moduleTestFiles = @($ParameterFilePath) } # Deployment & Validation Testing From 792d80afcbbba747e642e8d1916e8c5140323071 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sat, 13 Aug 2022 15:00:19 +1000 Subject: [PATCH 84/88] Update docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md Co-authored-by: Alexander Sehr --- ...ed - Scenario 2 Onboard module library and CI environment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md b/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md index 908cebf97f..7b6675066d 100644 --- a/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md +++ b/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md @@ -144,7 +144,7 @@ To use the environment's pipelines you should use the information you gathered d | `ARM_TENANT_ID` | `9734cec9-4384-445b-bbb6-767e7be6e5ec` | The tenant ID of the Azure Active Directory tenant to test-deploy modules in. | | `AZURE_CREDENTIALS` | `{"clientId": "4ce8ce4c-cac0-48eb-b815-65e5763e2929", "clientSecret": "", "subscriptionId": "d0312b25-9160-4550-914f-8738d9b5caf5", "tenantId": "9734cec9-4384-445b-bbb6-767e7be6e5ec" }` | The login credentials of the deployment principal used to log into the target Azure environment to test in. The format is described [here](https://github.com/Azure/login#configure-deployment-credentials). | | `PLATFORM_REPO_UPDATE_PAT` | `` | A private access token (PAT) with enough permissions assigned to it to push into the main branch. This PAT is leveraged by pipelines that automatically generate ReadMe files to keep them up to date. | -| `TOKEN_NAMEPREFIX` | `cntso` | Optional. If you specify the name prefix token here, this will only take precedence when the `localToken_namePrefix` specified in the `settings.yml` is left empty. | +| `TOKEN_NAMEPREFIX` | `cntso` | Optional. If you specify the name prefix token here, it is only applied if the `localToken_namePrefix` specified in the [settings.yml](https://github.com/Azure/ResourceModules/blob/main/settings.yml) is left empty. |

From 891e7e9c7ed83089aa07c3cdd2e51a5b668de2b9 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sat, 13 Aug 2022 15:00:35 +1000 Subject: [PATCH 85/88] Update utilities/tools/Test-ModuleLocally.ps1 Co-authored-by: Alexander Sehr --- utilities/tools/Test-ModuleLocally.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index 6f4ad2cced..c6d459410e 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -34,7 +34,7 @@ Optional. A hashtable parameter that contains custom tokens to be replaced in th $TestModuleLocallyInput = @{ TemplateFilePath = 'C:\Microsoft.Network\routeTables\deploy.bicep' - ParameterFilePath = 'C:\Microsoft.Network\routeTables\.test\parameters.json' + ParameterFilePath = 'C:\Microsoft.Network\routeTables\.test\parameters.json' PesterTest = $false DeploymentTest = $false ValidationTest = $true From 0871459ea3449e08f94bd51f6eff71a4c78c718f Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sat, 13 Aug 2022 15:00:58 +1000 Subject: [PATCH 86/88] Update docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md Co-authored-by: Alexander Sehr --- ...ed - Scenario 2 Onboard module library and CI environment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md b/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md index 7b6675066d..8695648178 100644 --- a/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md +++ b/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md @@ -275,7 +275,7 @@ Based on the information you gathered in the [Azure setup](#1-configure-your-azu | `ARM_MGMTGROUP_ID` | `de33a0e7-64d9-4a94-8fe9-b018cedf1e05` | The group ID of the management group to test-deploy modules in. | | `ARM_SUBSCRIPTION_ID` | `d0312b25-9160-4550-914f-8738d9b5caf5` | The ID of the subscription to test-deploy modules in. | | `ARM_TENANT_ID` | `9734cec9-4384-445b-bbb6-767e7be6e5ec` | The tenant ID of the Azure Active Directory tenant to test-deploy modules in. | -| `TOKEN_NAMEPREFIX` | `` | Optional. If you specify the name prefix token here, this will take precedence over the `localToken_namePrefix` specified in the `settings.yml`. | +| `TOKEN_NAMEPREFIX` | `` | Optional. If you specify the name prefix token here, it is only applied if the `localToken_namePrefix` specified in the [settings.yml](https://github.com/Azure/ResourceModules/blob/main/settings.yml) is left empty. | Make sure its name matches the `group` reference used in the module pipelines. For example From f940c91b958bb44a8a859965adebe3eb008b878e Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sat, 13 Aug 2022 15:01:26 +1000 Subject: [PATCH 87/88] Update docs/wiki/The CI environment - Token replacement.md Co-authored-by: Alexander Sehr --- docs/wiki/The CI environment - Token replacement.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/The CI environment - Token replacement.md b/docs/wiki/The CI environment - Token replacement.md index c30e222671..115e46ee96 100644 --- a/docs/wiki/The CI environment - Token replacement.md +++ b/docs/wiki/The CI environment - Token replacement.md @@ -67,7 +67,7 @@ The solution comes with one predefined local token `namePrefix`. This token is l 1. By updating the value of `localToken_namePrefix` in the [settings.yml](https://github.com/Azure/ResourceModules/blob/main/settings.yml), which then becomes `namePrefix` when the pipelines run. -1. Creating a GitHub Secret / ADO variable called `TOKEN_NAMEPREFIX`, which then becomes `namePrefix` when the pipelines run. If created as a secret or ADO variable, it will only take precedence when the `localToken_namePrefix` in the [settings.yml](https://github.com/Azure/ResourceModules/blob/main/settings.yml) is left empty. +1. Creating a GitHub Secret / ADO variable called `TOKEN_NAMEPREFIX`, which then becomes `namePrefix` when the pipelines run. If created as a secret or ADO variable, it is only applied if the `localToken_namePrefix` in the [settings.yml](https://github.com/Azure/ResourceModules/blob/main/settings.yml) is left empty. When validating modules through the CI environment, you must update it to a custom value as described in the [Update default nameprefix](./Getting%20started%20-%20Scenario%202%20Onboard%20module%20library%20and%20CI%20environment#31-update-default-nameprefix) paragraph. This is done to avoid conflicts with resources requiring a globally unique name, such as storage accounts or Key Vaults. From 790c223cd2e6b534bb7de8f33c6602300a56dc89 Mon Sep 17 00:00:00 2001 From: Ahmad Abdalla <28486158+ahmadabdalla@users.noreply.github.com> Date: Sat, 13 Aug 2022 16:28:28 +1000 Subject: [PATCH 88/88] updated based on feedback --- .../pipelineTemplates/jobs.dependenciesModuleDeployment.yml | 2 +- .../pipelineTemplates/jobs.validateModuleDeployment.yml | 2 +- .azuredevops/platformPipelines/platform.dependencies.yml | 6 +++--- ... Scenario 2 Onboard module library and CI environment.md | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.dependenciesModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.dependenciesModuleDeployment.yml index b5485ebb49..bb7ad964d5 100644 --- a/.azuredevops/pipelineTemplates/jobs.dependenciesModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.dependenciesModuleDeployment.yml @@ -152,7 +152,7 @@ jobs: # Swap 'namePrefix' token if empty and provided as a Azure DevOps variable if([String]::IsNullOrEmpty($ConvertTokensInputs.Tokens['namePrefix'])){ Write-Verbose 'Using [namePrefix] token from Azure DevOps Variable Groups' -Verbose - $ConvertTokensInputs.Tokens['namePrefix'] = "$env:TOKEN_NAMEPREFIX" + $ConvertTokensInputs.Tokens['namePrefix'] = "$(TOKEN_NAMEPREFIX)" } # Add custom tokens (passed in via the pipeline) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index 7a4aba1694..76a918a220 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -168,7 +168,7 @@ jobs: # Swap 'namePrefix' token if empty and provided as a Azure DevOps variable if([String]::IsNullOrEmpty($ConvertTokensInputs.Tokens['namePrefix'])){ Write-Verbose 'Using [namePrefix] token from Azure DevOps Variable Groups' -Verbose - $ConvertTokensInputs.Tokens['namePrefix'] = "$env:TOKEN_NAMEPREFIX" + $ConvertTokensInputs.Tokens['namePrefix'] = "$(TOKEN_NAMEPREFIX)" } # Add custom tokens (passed in via the pipeline) diff --git a/.azuredevops/platformPipelines/platform.dependencies.yml b/.azuredevops/platformPipelines/platform.dependencies.yml index 221583d432..73d24d6e9a 100644 --- a/.azuredevops/platformPipelines/platform.dependencies.yml +++ b/.azuredevops/platformPipelines/platform.dependencies.yml @@ -294,7 +294,7 @@ stages: # Swap 'namePrefix' token if empty and provided as a Azure DevOps variable if([String]::IsNullOrEmpty($ConvertTokensInputs.Tokens['namePrefix'])){ Write-Verbose 'Using [namePrefix] token from Azure DevOps Variable Groups' -Verbose - $ConvertTokensInputs.Tokens['namePrefix'] = "$env:TOKEN_NAMEPREFIX" + $ConvertTokensInputs.Tokens['namePrefix'] = "$(TOKEN_NAMEPREFIX)" } $null = Convert-TokensInFileList @ConvertTokensInputs @@ -613,7 +613,7 @@ stages: # Swap 'namePrefix' token if empty and provided as a Azure DevOps variable if([String]::IsNullOrEmpty($ConvertTokensInputs.Tokens['namePrefix'])){ Write-Verbose 'Using [namePrefix] token from Azure DevOps Variable Groups' -Verbose - $ConvertTokensInputs.Tokens['namePrefix'] = "$env:TOKEN_NAMEPREFIX" + $ConvertTokensInputs.Tokens['namePrefix'] = "$(TOKEN_NAMEPREFIX)" } $null = Convert-TokensInFileList @ConvertTokensInputs @@ -752,7 +752,7 @@ stages: # Swap 'namePrefix' token if empty and provided as a Azure DevOps variable if([String]::IsNullOrEmpty($ConvertTokensInputs.Tokens['namePrefix'])){ Write-Verbose 'Using [namePrefix] token from Azure DevOps Variable Groups' -Verbose - $ConvertTokensInputs.Tokens['namePrefix'] = "$env:TOKEN_NAMEPREFIX" + $ConvertTokensInputs.Tokens['namePrefix'] = "$(TOKEN_NAMEPREFIX)" } $null = Convert-TokensInFileList @ConvertTokensInputs diff --git a/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md b/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md index 8695648178..96e98f3bed 100644 --- a/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md +++ b/docs/wiki/Getting started - Scenario 2 Onboard module library and CI environment.md @@ -118,7 +118,7 @@ To update the `namePrefix`, perform the following steps: For further information on the token replacement logic, please refer to the corresponding [Token replacement](./The%20CI%20environment%20-%20Token%20replacement) section. - If you do not prefer to set the `namePrefix` locally for your CI environment. You can optionally set it as a GitHub Secret or add it to the ADO variable group as the key `TOKEN_NAMEPREFIX` with value `your name prefix value` and that will only take precedence if the `localToken_namePrefix` is left empty in the `settings.yml`. + If you do not prefer to set the `namePrefix` locally for your CI environment. You can optionally set it as a GitHub Secret or add it to the ADO variable group as the key `TOKEN_NAMEPREFIX` and its value `your name prefix value`, and this is only applied if the `localToken_namePrefix` in the [settings.yml](https://github.com/Azure/ResourceModules/blob/main/settings.yml) is left empty. ## 3.2 Set up CI-environment-specific configuration