From 58d6506839634559c47d7152c2356252ee4b9f51 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Mon, 15 Nov 2021 15:57:34 +0100 Subject: [PATCH 001/112] Recovered original state + moved token replacement --- {.pipelines => .azuredevops}/linter.yml | 0 .../ms.analysisservices.servers.yml | 72 +++ .../ms.compute.virtualmachines.yml | 72 +++ .../ms.network.virtualwans.yml | 72 +++ .../pipelineTemplates/module.jobs.deploy.yml | 217 ++++++++ .../pipelineTemplates/module.jobs.publish.yml | 295 ++++++++++ .../pipelineTemplates/module.jobs.remove.yml | 91 +++ .../module.jobs.validate.yml | 386 +++++++++++++ .../pipelineVariables/global.variables.yml | 84 +++ .../actions/templates/deployModule/action.yml | 12 +- .../templates/publishModule/action.yml | 11 +- .../actions/templates/removeModule/action.yml | 7 +- .../templates/validateModuleApis/action.yml | 8 +- .../templates/validateModuleDeploy/action.yml | 11 +- .../validateModuleGeneral/action.yml | 7 +- .../workflows/ms.analysisservices.servers.yml | 6 +- .../ms.apimanagement.service.apis.yml | 2 +- ...anagement.service.authorizationservers.yml | 2 +- .../ms.apimanagement.service.backends.yml | 2 +- .../ms.apimanagement.service.caches.yml | 2 +- .../ms.apimanagement.service.namedvalues.yml | 2 +- .../ms.apimanagement.service.products.yml | 2 +- ...ms.apimanagement.service.subscriptions.yml | 2 +- .../workflows/ms.apimanagement.service.yml | 2 +- .../ms.authorization.policyassignments.yml | 2 +- .../ms.authorization.policydefinitions.yml | 2 +- .../ms.authorization.policyexemptions.yml | 2 +- .../ms.authorization.policysetdefinitions.yml | 2 +- .../ms.authorization.roleassignments.yml | 2 +- .../ms.authorization.roledefinitions.yml | 2 +- .github/workflows/ms.automanage.accounts.yml | 2 +- ...naccounts.softwareupdateconfigurations.yml | 2 +- .../ms.automation.automationaccounts.yml | 2 +- .github/workflows/ms.batch.batchaccounts.yml | 2 +- .../ms.cognitiveservices.accounts.yml | 2 +- .../workflows/ms.compute.availabilitysets.yml | 2 +- .../ms.compute.diskencryptionsets.yml | 2 +- .../workflows/ms.compute.galleries.images.yml | 2 +- .github/workflows/ms.compute.galleries.yml | 2 +- .github/workflows/ms.compute.images.yml | 2 +- .../ms.compute.proximityplacementgroups.yml | 2 +- .../workflows/ms.compute.virtualmachines.yml | 2 +- .../ms.compute.virtualmachinescalesets.yml | 2 +- .github/workflows/ms.consumption.budgets.yml | 2 +- .../ms.containerinstance.containergroups.yml | 2 +- .../ms.containerregistry.registries.yml | 2 +- .../ms.containerservice.managedclusters.yml | 2 +- .../workflows/ms.databricks.workspaces.yml | 2 +- .../workflows/ms.datafactory.factories.yml | 2 +- ...esktopvirtualization.applicationgroups.yml | 2 +- .../ms.desktopvirtualization.hostpools.yml | 2 +- .../ms.desktopvirtualization.workspaces.yml | 2 +- .../ms.documentdb.databaseaccounts.yml | 2 +- .github/workflows/ms.eventgrid.topics.yml | 2 +- .github/workflows/ms.eventhub.namespaces.yml | 2 +- .github/workflows/ms.healthbot.healthbots.yml | 2 +- .../workflows/ms.insights.actiongroups.yml | 2 +- .../ms.insights.activitylogalerts.yml | 2 +- .github/workflows/ms.insights.components.yml | 2 +- .../ms.insights.diagnosticsettings.yml | 2 +- .../workflows/ms.insights.metricalerts.yml | 2 +- .../ms.insights.privatelinkscopes.yml | 2 +- .../ms.insights.scheduledqueryrules.yml | 2 +- .github/workflows/ms.keyvault.vaults.yml | 2 +- .github/workflows/ms.logic.workflows.yml | 2 +- .../ms.machinelearningservices.workspaces.yml | 2 +- ...managedidentity.userassignedidentities.yml | 2 +- ...anagedservices.registrationdefinitions.yml | 2 +- .../ms.management.managementgroups.yml | 2 +- .../workflows/ms.netapp.netappaccounts.yml | 4 +- .../ms.network.applicationgateways.yml | 2 +- .../ms.network.applicationsecuritygroups.yml | 2 +- .../workflows/ms.network.azurefirewalls.yml | 2 +- .github/workflows/ms.network.bastionhosts.yml | 2 +- .github/workflows/ms.network.connections.yml | 2 +- .../ms.network.ddosprotectionplans.yml | 2 +- .../ms.network.expressroutecircuits.yml | 2 +- .github/workflows/ms.network.ipgroups.yml | 2 +- .../workflows/ms.network.loadbalancers.yml | 2 +- .../ms.network.localnetworkgateways.yml | 2 +- .github/workflows/ms.network.natgateways.yml | 2 +- .../ms.network.networksecuritygroups.yml | 2 +- .../workflows/ms.network.networkwatchers.yml | 2 +- .../workflows/ms.network.privatednszones.yml | 2 +- .../workflows/ms.network.privateendpoints.yml | 2 +- .../ms.network.publicipaddresses.yml | 2 +- .../workflows/ms.network.publicipprefixes.yml | 2 +- .github/workflows/ms.network.routetables.yml | 2 +- .../ms.network.trafficmanagerprofiles.yml | 2 +- .../ms.network.virtualnetworkgateways.yml | 2 +- .../workflows/ms.network.virtualnetworks.yml | 2 +- .github/workflows/ms.network.virtualwans.yml | 4 +- .../ms.operationalinsights.workspaces.yml | 2 +- .../workflows/ms.recoveryservices.vaults.yml | 2 +- .../ms.resources.deploymentscripts.yml | 2 +- .../workflows/ms.resources.resourcegroups.yml | 2 +- .../ms.security.azuresecuritycenter.yml | 2 +- .../workflows/ms.servicebus.namespaces.yml | 2 +- .../ms.sql.managedinstances.databases.yml | 2 +- .github/workflows/ms.sql.managedinstances.yml | 2 +- .github/workflows/ms.sql.servers.yml | 2 +- .../workflows/ms.storage.storageaccounts.yml | 2 +- ...ms.virtualmachineimages.imagetemplates.yml | 2 +- .github/workflows/ms.web.connections.yml | 2 +- .../workflows/ms.web.hostingenvironments.yml | 2 +- .github/workflows/ms.web.serverfarms.yml | 2 +- .github/workflows/ms.web.sites.yml | 2 +- .github/workflows/platform.dependencies.yml | 52 +- arm/.global/global.module.tests.ps1 | 40 +- .../servers/.parameters/min.parameters.json | 9 + .../.parameters/min.parameters.json | 53 ++ .../virtualMachines/deploy.bicep | 4 +- .../virtualMachines/readme.md | 2 +- arm/README.md | 184 +++--- .../service/parameters/parameters.json | 0 .../parameters/parameters.json | 0 .../galleries/parameters/parameters.json | 0 .../images/parameters/parameters.json | 0 .../parameters/parameters.json | 0 .../registries/parameters/parameters.json | 0 .../parameters/parameters.json | 0 .../hostpools/parameters/parameters.json | 0 .../namespaces/parameters/parameters.json | 0 .../eventhubs/parameters/parameters.json | 0 .../actionGroups/parameters/parameters.json | 0 .../components/parameters/parameters.json | 0 .../vaults/parameters/parameters.json | 0 .../parameters/platform.parameters.json | 0 .../parameters/parameters.json | 0 .../parameters/parameters.json | 0 .../parameters/apgw.parameters.json | 0 .../parameters/ase.parameters.json | 0 .../parameters/bastion.parameters.json | 0 .../parameters/parameters.json | 0 .../parameters/sqlmi.parameters.json | 0 .../parameters/parameters.json | 0 .../parameters/parameters.json | 0 .../parameters/apgw.parameters.json | 0 .../parameters/bas.parameters.json | 0 .../parameters/lb.parameters.json | 0 .../routeTables/parameters/parameters.json | 0 .../parameters/2.vnetpeer01.parameters.json | 0 .../parameters/3.vnetpeer02.parameters.json | 0 .../parameters/4.azfw.parameters.json | 0 .../parameters/5.aks.parameters.json | 0 .../parameters/6.sqlmi.parameters.json | 0 .../parameters/parameters.json | 0 .../workspaces/parameters/parameters.json | 0 .../vaults/parameters/parameters.json | 0 .../parameters/artifacts.parameters.json | 0 .../parameters/platform-core.parameters.json | 0 .../parameters/validation.parameters.json | 0 .../parameters/fa.parameters.json | 0 .../parameters/parameters.json | 0 .../serverfarms/parameters/parameters.json | 0 .../New-ModuleDeployment.ps1 | 0 .../Initialize-UniversalArtifactPublish.ps1 | 144 +++++ .../resourcePublish/Publish-ModuleToNuget.ps1 | 524 ++++++++++++++++++ .../Publish-ModuleToPrivateBicepRegistry.ps1 | 0 .../Publish-ModuleToTemplateSpec.ps1 | 2 +- .../resourceRemoval/Remove-DeployedModule.ps1 | 0 .../resourceRemoval/Remove-NetAppAccount.ps1 | 0 .../resourceRemoval/Remove-vWan.ps1 | 0 .../helper/Remove-Resource.ps1 | 0 .../Test-TemplateWithParameterFile.ps1 | 0 .../sharedScripts/Set-EnvironmentOnAgent.ps1 | 7 +- .../Convert-TokensInParameterFile.ps1 | 0 ...calCustomParameterFileTokensInKeyVault.ps1 | 0 .../helper/Convert-TokensInFileList.ps1 | 0 .../Get-RemoteCustomParameterFileTokens.ps1 | 0 utilities/tools/Test-ModuleLocally.ps1 | 4 +- 171 files changed, 2293 insertions(+), 269 deletions(-) rename {.pipelines => .azuredevops}/linter.yml (100%) create mode 100644 .azuredevops/modulePipelines/ms.analysisservices.servers.yml create mode 100644 .azuredevops/modulePipelines/ms.compute.virtualmachines.yml create mode 100644 .azuredevops/modulePipelines/ms.network.virtualwans.yml create mode 100644 .azuredevops/pipelineTemplates/module.jobs.deploy.yml create mode 100644 .azuredevops/pipelineTemplates/module.jobs.publish.yml create mode 100644 .azuredevops/pipelineTemplates/module.jobs.remove.yml create mode 100644 .azuredevops/pipelineTemplates/module.jobs.validate.yml create mode 100644 .azuredevops/pipelineVariables/global.variables.yml create mode 100644 arm/Microsoft.AnalysisServices/servers/.parameters/min.parameters.json create mode 100644 arm/Microsoft.Compute/virtualMachines/.parameters/min.parameters.json rename utilities/{ => pipelines}/dependencies/Microsoft.ApiManagement/service/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Authorization/roleAssignments/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Compute/galleries/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Compute/galleriesResources/images/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Compute/virtualMachines/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.ContainerRegistry/registries/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.DesktopVirtualization/applicationgroups/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.DesktopVirtualization/hostpools/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.EventHub/namespaces/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.EventHub/namespacesResources/eventhubs/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Insights/actionGroups/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Insights/components/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.KeyVault/vaults/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.KeyVault/vaults/parameters/platform.parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.ManagedIdentity/userAssignedIdentities/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Network/applicationSecurityGroups/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Network/networkSecurityGroups/parameters/apgw.parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Network/networkSecurityGroups/parameters/ase.parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Network/networkSecurityGroups/parameters/bastion.parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Network/networkSecurityGroups/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Network/networkSecurityGroups/parameters/sqlmi.parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Network/networkWatchers/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Network/privateDnsZones/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Network/publicIPAddresses/parameters/apgw.parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Network/publicIPAddresses/parameters/bas.parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Network/publicIPAddresses/parameters/lb.parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Network/routeTables/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Network/virtualNetworks/parameters/2.vnetpeer01.parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Network/virtualNetworks/parameters/3.vnetpeer02.parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Network/virtualNetworks/parameters/4.azfw.parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Network/virtualNetworks/parameters/5.aks.parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Network/virtualNetworks/parameters/6.sqlmi.parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Network/virtualNetworks/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.OperationalInsights/workspaces/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.RecoveryServices/vaults/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Resources/resourceGroups/parameters/artifacts.parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Resources/resourceGroups/parameters/platform-core.parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Resources/resourceGroups/parameters/validation.parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Storage/storageAccounts/parameters/fa.parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Storage/storageAccounts/parameters/parameters.json (100%) rename utilities/{ => pipelines}/dependencies/Microsoft.Web/serverfarms/parameters/parameters.json (100%) rename {.github/actions/templates/deployModule/scripts => utilities/pipelines/resourceDeployment}/New-ModuleDeployment.ps1 (100%) create mode 100644 utilities/pipelines/resourcePublish/Initialize-UniversalArtifactPublish.ps1 create mode 100644 utilities/pipelines/resourcePublish/Publish-ModuleToNuget.ps1 rename {.github/actions/templates/publishModule/scripts => utilities/pipelines/resourcePublish}/Publish-ModuleToPrivateBicepRegistry.ps1 (100%) rename {.github/actions/templates/publishModule/scripts => utilities/pipelines/resourcePublish}/Publish-ModuleToTemplateSpec.ps1 (99%) rename utilities/{ => pipelines}/resourceRemoval/Remove-DeployedModule.ps1 (100%) rename utilities/{ => pipelines}/resourceRemoval/Remove-NetAppAccount.ps1 (100%) rename utilities/{ => pipelines}/resourceRemoval/Remove-vWan.ps1 (100%) rename utilities/{ => pipelines}/resourceRemoval/helper/Remove-Resource.ps1 (100%) rename {.github/actions/templates/validateModuleDeploy/scripts => utilities/pipelines/resourceValidation}/Test-TemplateWithParameterFile.ps1 (100%) rename {.github/actions => utilities/pipelines}/sharedScripts/Set-EnvironmentOnAgent.ps1 (96%) rename utilities/{ => pipelines}/tokensReplacement/Convert-TokensInParameterFile.ps1 (100%) rename utilities/{ => pipelines}/tokensReplacement/Set-LocalCustomParameterFileTokensInKeyVault.ps1 (100%) rename utilities/{ => pipelines}/tokensReplacement/helper/Convert-TokensInFileList.ps1 (100%) rename utilities/{ => pipelines}/tokensReplacement/helper/Get-RemoteCustomParameterFileTokens.ps1 (100%) diff --git a/.pipelines/linter.yml b/.azuredevops/linter.yml similarity index 100% rename from .pipelines/linter.yml rename to .azuredevops/linter.yml diff --git a/.azuredevops/modulePipelines/ms.analysisservices.servers.yml b/.azuredevops/modulePipelines/ms.analysisservices.servers.yml new file mode 100644 index 0000000000..bb631f00b7 --- /dev/null +++ b/.azuredevops/modulePipelines/ms.analysisservices.servers.yml @@ -0,0 +1,72 @@ +name: 'AnalysisServices - Servers' + +parameters: + - name: removeDeployment + displayName: Remove deployed module + type: boolean + default: true + - name: versioningOption + displayName: The mode to handle the version increments [major|minor|patch] + type: string + default: patch + values: + - patch + - minor + - major + - name: customVersion + displayName: Custom version to apply. Used only if higher than latest + type: string + default: '0.0.1' + +trigger: + batch: true + branches: + include: + - main + paths: + include: + - /.azuredevops/modulePipelines/ms.analysisservices.servers.yml + - /.azuredevops/pipelineTemplates/module.*.yml + - /arm/Microsoft.AnalysisServices/servers/* + exclude: + - /**/*.md + +variables: + - template: '/.azuredevops/pipelineVariables/global.variables.yml' + - group: 'Platform-Tokens' + - name: moduleName + value: AnalysisServices + - name: modulePath + value: '/arm/Microsoft.AnalysisServices/servers' + +stages: + - stage: Validation + jobs: + - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml + parameters: + deploymentBlocks: + - path: $(modulePath)/.parameters/parameters.json + - path: $(modulePath)/.parameters/min.parameters.json + + - stage: Deployment + jobs: + - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml + parameters: + removeDeployment: '${{ parameters.removeDeployment }}' + deploymentBlocks: + - path: $(modulePath)/.parameters/parameters.json + - path: $(modulePath)/.parameters/min.parameters.json + + - stage: Publishing + condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) + jobs: + - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml + parameters: + versioningOption: '${{ parameters.versioningOption }}' + customVersion: '${{ parameters.customVersion }}' + + - stage: Removal + dependsOn: Deployment + condition: and(in(dependencies.Deployment.result, 'Succeeded', 'Failed'), eq( '${{ parameters.removeDeployment }}', 'true')) + jobs: + - template: /.azuredevops/pipelineTemplates/module.jobs.remove.yml diff --git a/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml b/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml new file mode 100644 index 0000000000..8985acf8d2 --- /dev/null +++ b/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml @@ -0,0 +1,72 @@ +name: 'Compute - Virtualmachines' + +parameters: + - name: removeDeployment + displayName: Remove deployed module + type: boolean + default: true + - name: versioningOption + displayName: The mode to handle the version increments [major|minor|patch] + type: string + default: patch + values: + - patch + - minor + - major + - name: customVersion + displayName: Custom version to apply. Used only if higher than latest + type: string + default: '0.0.1' + +trigger: + batch: true + branches: + include: + - main + paths: + include: + - '/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml' + - '/.azuredevops/pipelineTemplates/module.*.yml' + - '/arm/Microsoft.Compute/virtualMachines/*' + exclude: + - '/arm/Microsoft.Compute/virtualMachines/*readme.md' + +variables: + - template: '/.azuredevops/pipelineVariables/global.variables.yml' + - group: 'Platform-Tokens' + - name: moduleName + value: virtualMachines + - name: modulePath + value: '/arm/Microsoft.Compute/virtualMachines' + +stages: + - stage: Validation + jobs: + - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml + parameters: + deploymentBlocks: + - path: $(modulePath)/.parameters/parameters.json + - path: $(modulePath)/.parameters/min.parameters.json + + - stage: Deployment + jobs: + - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml + parameters: + removeDeployment: '${{ parameters.removeDeployment }}' + deploymentBlocks: + - path: $(modulePath)/.parameters/parameters.json + - path: $(modulePath)/.parameters/min.parameters.json + + - stage: Publishing + condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) + jobs: + - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml + parameters: + versioningOption: '${{ parameters.versioningOption }}' + customVersion: '${{ parameters.customVersion }}' + + - stage: Removal + dependsOn: Deployment + condition: and(in(dependencies.Deployment.result, 'Succeeded', 'Failed'), eq( '${{ parameters.removeDeployment }}', 'true')) + jobs: + - template: /.azuredevops/pipelineTemplates/module.jobs.remove.yml diff --git a/.azuredevops/modulePipelines/ms.network.virtualwans.yml b/.azuredevops/modulePipelines/ms.network.virtualwans.yml new file mode 100644 index 0000000000..cf1381d10e --- /dev/null +++ b/.azuredevops/modulePipelines/ms.network.virtualwans.yml @@ -0,0 +1,72 @@ +name: 'Network - Virtualwans' + +parameters: + - name: removeDeployment + displayName: Remove deployed module + type: boolean + default: true + - name: versioningOption + displayName: The mode to handle the version increments [major|minor|patch] + type: string + default: patch + values: + - patch + - minor + - major + - name: customVersion + displayName: Custom version to apply. Used only if higher than latest + type: string + default: '0.0.1' + +trigger: + batch: true + branches: + include: + - main + paths: + include: + - '/.azuredevops/modulePipelines/ms.network.virtualwans.yml' + - '/.azuredevops/pipelineTemplates/module.*.yml' + - '/arm/Microsoft.Network/virtualwans/*' + exclude: + - '/arm/Microsoft.Network/virtualwans/*readme.md' + +variables: + - template: '/.azuredevops/pipelineVariables/global.variables.yml' + - group: 'Platform-Tokens' + - name: moduleName + value: virtualWans + - name: modulePath + value: '/arm/Microsoft.Network/virtualWans' + +stages: + - stage: Validation + jobs: + - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml + parameters: + deploymentBlocks: + - path: $(modulePath)/.parameters/parameters.json + + - stage: Deployment + jobs: + - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml + parameters: + removeDeployment: '${{ parameters.removeDeployment }}' + deploymentBlocks: + - path: $(modulePath)/.parameters/parameters.json + + - stage: Publishing + condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) + jobs: + - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml + parameters: + versioningOption: '${{ parameters.versioningOption }}' + customVersion: '${{ parameters.customVersion }}' + + - stage: Removal + dependsOn: Deployment + condition: and(in(dependencies.Deployment.result, 'Succeeded', 'Failed'), eq( '${{ parameters.removeDeployment }}', 'true')) + jobs: + - template: /.azuredevops/pipelineTemplates/module.jobs.remove.yml + parameters: + relativePathOfRemovalScript: 'utilities/pipelines/resourceRemoval/Remove-vWan.ps1' diff --git a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml new file mode 100644 index 0000000000..aadb33da93 --- /dev/null +++ b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml @@ -0,0 +1,217 @@ +######################################################### +## DEPLOYMENT PIPELINE ## +######################################################### +## +## This pipeline template contains the logic to deploy a given module's ARM template using the provided parameter file(s) +## +## Enabled levels of deployment +## - Resource-Group-Level +## - Subscription-Level +## - Management-Group-Level +## - Tenant-Level +## +######################################################## +## +##---------------------------------------------## +## TEMPLATE PARAMETERS ## +##---------------------------------------------## +## +## By default it uses the variables specified in the below [parameters] section. However, you can overwrite these variables in the +## referencing pipeline by providing the parameter explicitly. +## +## NOTE: If you don't need to overwrite a shared value, you can IGNORE this section +## +## |=================================================================================================================================================================================================================================| +## | Parameter | Default Value | Description | Example | +## |---------------------------------|--------------------------------------|-----------------------------------------------------------------------------------------------------------|--------------------------------------------| +## | serviceConnection | '$(serviceConnection)' | The service connection that connects to Azure | 'demo-internal' | +## | removeDeployment | '$(removeDeployment)' | Set to [true] to flag resource for removal. If not provided, defaults to false. | 'true' | +## | poolName | '$(poolName)' | You can provide either a [poolname] or [vmImage] to run the job on | 'Custom Deployment Pool' | +## | vmImage | '$(vmImage)' | You can provide either a [poolname] or [vmImage] to run the job on | 'ubuntu20.04' | +## | defaultJobTimeoutInMinutes | 120 | The timeout for the job in this pipeline | 120 | +## | checkoutRepositories | '' | An optional list of repositories to check out at the beginning of this job in addition to the source | 'Components' | +## | moduleName | '$(moduleName)' | The name of the module to deploy | 'KeyVault' | +## | modulePath | '$(modulePath)' | The path to the module to deploy. E.g. [c:/$(moduleName)] | 'c:/$(moduleName)' | +## | deploymentBlocks | | The parameter file(s) to deploy with. Must be provided | path: 'C:/parameters.json' | +## | location | '$(defaultLocation)' | The location to deploy with | 'EastUs2' | +## | resourceGroupName | '$(defaultResourceGroupName)' | The resourcegroup to deploy into. Required only for Resource-Group-Level deployments | 'validation-rg' | +## | subscriptionId | '$(ARM_SUBSCRIPTION_ID)' | The id of the subscription to deploy into when using a Management group service connection | 'aed7c000-6387-412e-bed0-24dfddf4bbc6' | +## | managementGroupId | '$(ARM_MGMTGROUP_ID)' | The id of the management group to deploy into. Required only for Management-Group-Level deployments | '6ycc9620-cb01-454f-9ebc-fc6b1df48d64' | +## | parametersRepository | '$(Build.Repository.Name)' | The respository with the parameter files. Defaults to the triggering repository | 'Solutions' | +## | modulesRepository | '$(modulesRepository)' | The respository with the modules. | 'Components' | +## | azurePowerShellVersion | '$(azurePowerShellVersion)' | Used for configuring the Azure PowerShellModules Version, one of the example values. | 'latestVersion' or 'OtherVersion' | +## | preferredAzurePowerShellVersion | '$(preferredAzurePowerShellVersion)' | Used for configuring the Azure PowerShellModules Version, either an empty string or the specific version. | '4.4.0' | +## |=================================================================================================================================================================================================================================| +## +##---------------------------------------------## + +parameters: + # Pipeline-related parameters + serviceConnection: '$(serviceConnection)' + poolName: '$(poolName)' + vmImage: '$(vmImage)' + defaultJobTimeoutInMinutes: 120 + checkoutRepositories: '' + dependsOn: [] + # Logic-related parameters + removeDeployment: false + moduleName: '$(moduleName)' + modulePath: '$(modulePath)' + deploymentBlocks: '' + location: '$(defaultLocation)' + resourceGroupName: '$(defaultResourceGroupName)' + subscriptionId: '$(ARM_SUBSCRIPTION_ID)' + managementGroupId: '$(ARM_MGMTGROUP_ID)' + parametersRepository: '$(Build.Repository.Name)' + modulesRepository: '$(modulesRepository)' + # Azure PowerShell Version parameters + azurePowerShellVersion: '$(azurePowerShellVersion)' + preferredAzurePowerShellVersion: '$(preferredAzurePowerShellVersion)' + +##---------------------------------------------## +## TEMPLATE LOGIC ## +##---------------------------------------------## + +jobs: + - ${{ each deploymentBlock in parameters.deploymentBlocks }}: + - job: ${{ deploymentBlock.jobName }} + + ${{ if ne( deploymentBlock.displayName, '') }}: + displayName: ${{ deploymentBlock.displayName }} + ${{ if eq( deploymentBlock.displayName, '') }}: + displayName: Deploy with [${{ replace( deploymentBlock.path, '$(modulePath)', '') }}] + timeoutInMinutes: ${{ parameters.defaultJobTimeoutInMinutes }} + ${{ if ne( parameters.dependsOn, '') }}: + dependsOn: ${{ parameters.dependsOn }} + pool: + ${{ if ne(parameters.vmImage, '') }}: + vmImage: ${{ parameters.vmImage }} + ${{ if ne(parameters.poolName, '') }}: + name: ${{ parameters.poolName }} + + steps: + # [Checkout Repositories] task(s) + #-------------------------------- + - checkout: self + - ${{ if ne(parameters.checkoutRepositories, '') }}: + - ? ${{ 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 }}' + + # [Agent] Prepare environment + #---------------------------- + - task: PowerShell@2 + displayName: 'Setup agent' + inputs: + targetType: inline + pwsh: true + script: | + # Load used functions + . (Join-Path '$(System.DefaultWorkingDirectory)' 'utilities' 'pipelines' 'sharedScripts' 'Set-EnvironmentOnAgent.ps1') + + # Set agent up + Set-EnvironmentOnAgent + + # [Multi Repo] Support task + #-------------------------- + - task: PowerShell@2 + displayName: Handle Multi-Repo Invocation + inputs: + targetType: inline + pwsh: true + script: | + # Handle multiple-repositories + if( "${{ join(';',parameters.checkoutRepositories) }}".length -gt 0) { + Write-Verbose "Multi-Repo Checkout" -Verbose + $moduleRepoRoot = Join-Path '$(System.DefaultWorkingDirectory)' '$(modulesRepository)' + $parametersRepoRoot = Join-Path '$(System.DefaultWorkingDirectory)' '${{ parameters.parametersRepository }}' + } else { + Write-Verbose "No Multi-Repo Checkout" -Verbose + $moduleRepoRoot = '$(System.DefaultWorkingDirectory)' + $parametersRepoRoot = '$(System.DefaultWorkingDirectory)' + } + Write-Host "##vso[task.setvariable variable=ModuleRepoRoot]$moduleRepoRoot" + Write-Host "##vso[task.setvariable variable=parametersRepoRoot]$parametersRepoRoot" + + # [Agent] Replace tokens + #----------------------- + - task: PowerShell@2 + displayName: 'Replace Tokens [${{ deploymentBlock.path }}]' + inputs: + targetType: inline + pwsh: true + script: | + # Load used functions + . (Join-Path '$(System.DefaultWorkingDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') + + # Load Settings File + $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json + + # Initialize Default Parameter File Tokens + $DefaultParameterFileTokens = @( + @{ Name = 'resourceGroupName'; Value = '${{ parameters.resourceGroupName }}' } + @{ Name = 'subscriptionId'; Value = '${{ parameters.subscriptionId }}' } + @{ Name = 'managementGroupId'; Value = '${{ parameters.managementGroupId }}' } + @{ Name = "tenantId"; Value = '${{ variables.ARM_TENANT_ID }}' } + @{ Name = "deploymentSpId"; Value = '${{ variables.DEPLOYMENT_SP_ID }}' } + @{ Name = "platformKeyVault"; Value = '${{ variables.PLATFORM_KEYVAULT }}' } + ) | ForEach-Object { [PSCustomObject]$PSItem } + + # Construct Token Function Input + $ConvertTokensInputs = @{ + ParameterFilePath = '${{ deploymentBlock.path }}' + DefaultParameterFileTokens = $DefaultParameterFileTokens + LocalCustomParameterFileTokens = $Settings.parameterFileTokens.localTokens.tokens + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + verbose = $true + } + # Add Remote Custom Parameter File Tokens + if ('${{ env.PLATFORM_KEYVAULT }}' -and '${{ inputs.subscriptionId }}') { + $ConvertTokensInputs += @{ + TokensKeyVaultName = '${{ variables.PLATFORM_KEYVAULT }}' + TokensKeyVaultSubscriptionId = '${{ parameters.subscriptionId }}' + TokensKeyVaultSecretNamePrefix = $Settings.parameterFileTokens.remoteTokens.keyVaultSecretNamePrefix + } + } + + Write-Verbose "Invoke task with" -Verbose + Write-Verbose ($ConvertTokensInputs | ConvertTo-Json | Out-String) -Verbose + + # Invoke Token Replacement Functionality + Convert-TokensInParameterFile @ConvertTokensInputs -Verbose + + # [Deployment] task(s) + #--------------------- + - task: AzurePowerShell@5 + displayName: 'Deploy [${{ parameters.moduleName }}] via connection [${{ parameters.serviceConnection }}]' + inputs: + azureSubscription: ${{ parameters.serviceConnection }} + azurePowerShellVersion: ${{ parameters.azurePowerShellVersion }} + preferredAzurePowerShellVersion: ${{ parameters.preferredAzurePowerShellVersion }} + pwsh: true + ScriptType: InlineScript + inline: | + # Load used functions + . (Join-Path '$(System.DefaultWorkingDirectory)' '$(pipelineFunctionsPath)' 'resourceDeployment' 'New-ModuleDeployment.ps1') + + # ----------------- # + # INVOKE DEPLOYMENT # + # ----------------- # + $functionInput = @{ + moduleName = '${{ parameters.moduleName }}' + templateFilePath = Join-Path '$(ModuleRepoRoot)' '$(modulePath)' 'deploy.bicep' + parameterFilePath = Join-Path '$(parametersRepoRoot)' '${{ deploymentBlock.path }}' + location = '${{ parameters.location }}' + resourceGroupName = '${{ parameters.resourceGroupName }}' + subscriptionId = '${{ parameters.subscriptionId }}' + managementGroupId = '${{ parameters.managementGroupId }}' + # Note: if parameter is like "`$(removeDeployment*" it was not set as the variable was not resolved + removeDeployment = ('${{ parameters.removeDeployment }}' -like "`$(removeDeployment*") ? $false : [System.Convert]::ToBoolean('${{ parameters.removeDeployment }}') + } + + Write-Verbose "Invoke task with" -Verbose + Write-Verbose ($functionInput | ConvertTo-Json | Out-String) -Verbose + + New-ModuleDeployment @functionInput -Verbose diff --git a/.azuredevops/pipelineTemplates/module.jobs.publish.yml b/.azuredevops/pipelineTemplates/module.jobs.publish.yml new file mode 100644 index 0000000000..898395bbf6 --- /dev/null +++ b/.azuredevops/pipelineTemplates/module.jobs.publish.yml @@ -0,0 +1,295 @@ +######################################################### +## PUBLISH PIPELINE ## +######################################################### +## +## This pipeline template contains the logic to publish module data as +## - A build artifact and/or +## - As a new version to a given storage account and/or +## - As a new version as an UniversalPackage to a given artifact-feed +## +######################################################### + +##---------------------------------------------## +## TEMPLATE PARAMETERS ## +##---------------------------------------------## +## +## By default it uses the variables specified in the below [parameters] section. However, you can overwrite these variables in the +## referencing pipeline by providing the paramater explicitly. +## +## NOTE: If you don't need to overwrite a shared value, you can IGNORE this section +## +## |==================================================================================================================================================================================================================| +## | Parameter | Default Value | Description | Example | +## |---------------------------------|--------------------------------------|-----------------------------------------------------------------------------------------------------|-----------------------------------| +## | displayName | 'Publish module' | Name for the pipeline job | 'Publish KeyVault' | +## | serviceConnection | '$(serviceConnection)' | The service connection that connects to Azure | 'demo-internal' | +## | poolName | '$(poolName)' | You can provide either a [poolname] or [vmImage] to run the job on | 'Custom Deployment Pool' | +## | vmImage | '$(vmImage)' | You can provide either a [poolname] or [vmImage] to run the job on | 'ubuntu20.04' | +## | defaultJobTimeoutInMinutes | 120 | The timeout for the job in this pipeline | 120 | +## | moduleName | '$(moduleName)' | The name of the module to publish. If publishing to an artifacts feed, must be lower case. | 'keyvault' | +## | versionOption | '$(versionOption)' | The mode to handle the version increments [major|minor|patch|custom]. | 'patch' | +## | moduleVersion | '$(moduleVersion)' | The version to enforce if [versionOption] is set to [custom] | '1.0.0' | +## | modulePath | '$(modulePath)' | The path to the module to deploy. E.g. [c:/$(moduleName)] | 'c:/$(moduleName)' | +## | templateSpecsRGName | '$(templateSpecsRGName)' | Required to publish to template spec. ResourceGroup of the template spec to publish to | 'mgmt-rg' | +## | templateSpecsRGLocation | '$(templateSpecsRGLocation)' | Required to publish to template spec. Location of the template spec resource group | 'West Europe' | +## | templateSpecsDescription | '$(templateSpecsDescription)' | Required to publish to template spec. Description of the template spec to publish to | 'IaCs module' | +## | vstsFeedName | '$(vstsFeedName)' | Required to publish to a DevOps feed. Name to the feed to publish to. | 'modules' | +## | vstsProject | '$(System.TeamProject)' | Required to publish to a DevOps feed. Name of the project hosting the artifacts feed. May be empty. | 'iacs' | +## | bicepRegistryName | '$(bicepRegistryName)' | Required to publish to the private bicep registry. Name of the hosting container registry | 'adpsxxazacrx001' | +## | bicepRegistryRGName | '$(bicepRegistryRGName)' | Required to publish to the private bicep registry. Resource group of the hosting container registry | 'artifacts-rg' | +## | vstsOrganization | '$(vstsOrganization)' | Required to publish to a DevOps feed. Name of the organization hosting the artifacts feed. | 'servicescode' | +## | azurePowerShellVersion | '$(azurePowerShellVersion)' | Used for configuring the Azure PowerShell Version, one of the example values. | 'latestVersion' or 'OtherVersion' | +## | preferredAzurePowerShellVersion | '$(preferredAzurePowerShellVersion)' | Used for configuring the Azure PowerShell Version, either an empty string or specific version. | '4.4.0' | +## |==================================================================================================================================================================================================================| +## +##---------------------------------------------## + +parameters: + # Pipeline-related parameters + checkoutRepositories: '' + displayName: 'Publish module' + serviceConnection: '$(serviceConnection)' + poolName: '$(poolName)' + vmImage: '$(vmImage)' + defaultJobTimeoutInMinutes: 120 + modulesRepository: '$(modulesRepository)' + + # Logic-related parameters + ## Module-related + moduleName: '$(moduleName)' + versionOption: '$(versionOption)' + moduleVersion: '$(moduleVersion)' + modulePath: '$(modulePath)' + + ## TemplateSpec-related + templateSpecsRGName: '$(templateSpecsRGName)' + templateSpecsRGLocation: '$(templateSpecsRGLocation)' + templateSpecsDescription: '$(templateSpecsDescription)' + + ## Artifact-Feed-related + vstsFeedName: '$(vstsFeedName)' + vstsProject: '$(System.TeamProject)' + vstsOrganization: '$(vstsOrganization)' + + ## Private-Bicep-Registry-related + bicepRegistryName: '$(bicepRegistryName)' + bicepRegistryRGName: '$(bicepRegistryRGName)' + +##---------------------------------------------## +## TEMPLATE LOGIC ## +##---------------------------------------------## +jobs: + - job: + displayName: ${{ parameters.displayName }} + timeoutInMinutes: ${{ parameters.defaultJobTimeoutInMinutes }} + pool: + ${{ if ne(parameters.vmImage, '') }}: + vmImage: ${{ parameters.vmImage }} + ${{ if ne(parameters.poolName, '') }}: + name: ${{ parameters.poolName }} + steps: + # [Checkout Repositories] task(s) + #-------------------------------- + - checkout: self + - ${{ if ne(parameters.checkoutRepositories, '') }}: + - ${{ 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 }}' + + # [Agent] Prepare environment + #---------------------------- + - task: PowerShell@2 + displayName: 'Setup agent' + inputs: + targetType: inline + pwsh: true + script: | + # Load used functions + . (Join-Path '$(System.DefaultWorkingDirectory)' 'utilities' 'pipelines' 'sharedScripts' 'Set-EnvironmentOnAgent.ps1') + + # Set agent up + Set-EnvironmentOnAgent + + # [Multi Repo] Support task + #-------------------------- + - task: PowerShell@2 + displayName: Handle Multi-Repo Invocation + inputs: + targetType: inline + pwsh: true + script: | + # ---------------------------- # + # HANDLE MULTI-REPO INVOCATION # + # ---------------------------- # + + # Handle multiple-repositories + if( "${{ join(';',parameters.checkoutRepositories) }}".length -gt 0) { + Write-Verbose "Multi-Repo Checkout" -Verbose + $modulePath = Join-Path '$(System.DefaultWorkingDirectory)' '$(modulesRepository)' '${{ parameters.modulePath }}' + } else { + Write-Verbose "No Multi-Repo Checkout" -Verbose + $modulePath = Join-Path '$(System.DefaultWorkingDirectory)' '${{ parameters.modulePath }}' + } + Write-Host "##vso[task.setvariable variable=ENVMODULEPATH]$modulePath" + + # [Universal Artifact-feed publish] task(s) + #------------------------------------------ + - powershell: | + # Load used functions + . (Join-Path '$(System.DefaultWorkingDirectory)' '$(pipelineFunctionsPath)' 'resourcePublish' 'Initialize-UniversalArtifactPublish.ps1') + + $functionInput = @{ + templateFilePath = Join-Path '$(ENVMODULEPATH)' 'deploy.bicep' + vstsOrganization = '${{ parameters.vstsOrganization }}' + vstsProject = '${{ parameters.vstsProject }}' + vstsFeedName = '${{ parameters.vstsFeedName }}' + customVersion = '${{ parameters.customVersion }}' + versioningOption = '${{ parameters.versioningOption }}' + } + + Write-Verbose "Invoke task with" -Verbose + Write-Verbose ($functionInput | ConvertTo-Json | Out-String) -Verbose + + $output = Initialize-UniversalArtifactPublish @functionInput -Verbose + + # Write output value(s) into pipeline environment + $output.Keys | ForEach-Object { + Write-Host ("Publishing variable [{0}] with value [{1}] to pipeline environment" -f $_, $output[$_]) + Write-Host ("##vso[task.setVariable variable={0}]{1}" -f $_, $output[$_]) + } + displayName: 'Prepare publish to artifacts feed' + condition: and( + eq(variables['artifactsFeedDoPublish'], true), + succeeded() + ) + enabled: true + env: + TOKEN: $(system.accesstoken) + + - task: UniversalPackages@0 + condition: and( + eq(variables['artifactsFeedDoPublish'], true), + succeeded() + ) + displayName: Publish Universal Package ${{ parameters.moduleName }} + inputs: + command: publish + publishDirectory: '$(ENVMODULEPATH)' + ${{ if eq(parameters.vstsProject, '') }}: + vstsFeedPublish: '${{ parameters.vstsFeedName }}' + ${{ if ne(parameters.vstsProject, '') }}: + vstsFeedPublish: '${{ parameters.vstsProject }}/${{ parameters.vstsFeedName }}' + vstsFeedPackagePublish: '$(universalPackageModuleName)' # Published via [Initialize-UniversalArtifactPublish] invocation + versionOption: '$(publishingMode)' # Published via [Initialize-UniversalArtifactPublish] invocation + versionPublish: '$(newVersionObject)' # Published via [Initialize-UniversalArtifactPublish] invocation + packagePublishDescription: '${{ parameters.moduleName }} Module' + verbosity: 'error' + enabled: true + + # [Nuget Artifact-feed publish] task(s) + #-------------------------------------- + - task: NuGetToolInstaller@0 + displayName: 'Use NuGet 4.x' + inputs: + versionSpec: 4.x + enabled: true + - task: AzurePowerShell@5 + displayName: Publish module to nuget artifacts feed + condition: and( + eq(variables['nugetArtifactsFeedDoPublish'], true), + succeeded() + ) + enabled: true + inputs: + azureSubscription: '${{ parameters.serviceConnection }}' + azurePowerShellVersion: ${{ parameters.azurePowerShellVersion }} + preferredAzurePowerShellVersion: ${{ parameters.preferredAzurePowerShellVersion }} + pwsh: true + ScriptType: InlineScript + inline: | + # Load used functions + . (Join-Path '$(System.DefaultWorkingDirectory)' '$(pipelineFunctionsPath)' 'resourcePublish' 'Publish-ModuleToNuget.ps1') + + $functionInput = @{ + feedName = "$(vstsNugetFeedName)" + feedurl = "$(vstNugetFeedUrl)" + queueById = "$(Build.QueuedById)" + customVersion = '${{ parameters.customVersion }}' + versioningOption = '${{ parameters.versioningOption }}' + moduleBase = '$(ENVMODULEPATH)' + moduleName = '${{ parameters.moduleName }}' + } + + Write-Verbose "Invoke task with" -Verbose + Write-Verbose ($functionInput | ConvertTo-Json | Out-String) -Verbose + + # Separate population to avoid printing secret by accident + $functionInput['systemAccessToken'] = "$(system.accesstoken)" + + Publish-ModuleToNuget @functionInput -Verbose + + # [template-spec publish] task(s) + #-------------------------------- + - task: AzurePowerShell@5 + displayName: 'Publish module to template specs' + condition: and( + eq(variables['templateSpecsDoPublish'], true), + succeeded() + ) + enabled: true + inputs: + azureSubscription: '${{ parameters.serviceConnection }}' + azurePowerShellVersion: ${{ parameters.azurePowerShellVersion }} + preferredAzurePowerShellVersion: ${{ parameters.preferredAzurePowerShellVersion }} + pwsh: true + ScriptType: InlineScript + inline: | + # Load used functions + . (Join-Path '$(System.DefaultWorkingDirectory)' '$(pipelineFunctionsPath)' 'resourcePublish' 'Publish-ModuleToTemplateSpec.ps1') + + $functionInput = @{ + templateFilePath = Join-Path '$(ENVMODULEPATH)' 'deploy.bicep' + templateSpecsRgName = '${{ parameters.templateSpecsRgName }}' + templateSpecsRgLocation = '${{ parameters.templateSpecsRgLocation }}' + templateSpecsDescription = '${{ parameters.templateSpecsDescription }}' + customVersion = '${{ parameters.customVersion }}' + versioningOption = '${{ parameters.versioningOption }}' + } + + Write-Verbose "Invoke task with" -Verbose + Write-Verbose ($functionInput | ConvertTo-Json | Out-String) -Verbose + + Publish-ModuleToTemplateSpec @functionInput -Verbose + + # [private bicep registry publish] task(s) + #------------------------------------------- + - task: AzurePowerShell@5 + displayName: 'Publish module to private bicep registry' + condition: and( + eq(variables['bicepRegistryDoPublish'], true), + succeeded() + ) + enabled: true + inputs: + azureSubscription: '${{ parameters.serviceConnection }}' + azurePowerShellVersion: ${{ parameters.azurePowerShellVersion }} + preferredAzurePowerShellVersion: ${{ parameters.preferredAzurePowerShellVersion }} + pwsh: true + ScriptType: InlineScript + inline: | + # Load used functions + . (Join-Path '$(System.DefaultWorkingDirectory)' '$(pipelineFunctionsPath)' 'resourcePublish' 'Publish-ModuleToPrivateBicepRegistry.ps1') + + $functionInput = @{ + templateFilePath = Join-Path '$(ENVMODULEPATH)' 'deploy.bicep' + bicepRegistryName = '${{ parameters.bicepRegistryName }}' + bicepRegistryRgName = '${{ parameters.bicepRegistryRgName }}' + customVersion = '${{ parameters.customVersion }}' + versioningOption = '${{ parameters.versioningOption }}' + } + + Write-Verbose "Invoke task with" -Verbose + Write-Verbose ($functionInput | ConvertTo-Json | Out-String) -Verbose + + Publish-ModuleToPrivateBicepRegistry @functionInput -Verbose diff --git a/.azuredevops/pipelineTemplates/module.jobs.remove.yml b/.azuredevops/pipelineTemplates/module.jobs.remove.yml new file mode 100644 index 0000000000..8f85479763 --- /dev/null +++ b/.azuredevops/pipelineTemplates/module.jobs.remove.yml @@ -0,0 +1,91 @@ +######################################################### +## REMOVAL PIPELINE ## +######################################################### +## +## This pipeline template contains the logic to remove resources that are indentified by a special remove-tag +## As such, the script is only capable to remove deployed resource-group level services +## +################################################################# +## +##---------------------------------------------## +## TEMPLATE PARAMETERS ## +##---------------------------------------------## +## +## By default it uses the variables specified in the below [parameters] section. However, you can overwrite these variables in the +## referencing pipeline by providing the paramater explicitly. +## +## NOTE: If you don't need to overwrite a shared value, you can IGNORE this section +## +## |========================================================================================================================================================================================================================| +## | Parameter | Default Value | Description | Example | +## |---------------------------------|--------------------------------------|-----------------------------------------------------------------------------------------------------------|-----------------------------------| +## | displayName | 'Remove module' | Name for the pipeline job | 'Remove KeyVault' | +## | serviceConnection | '$(serviceConnection)' | The service connection that connects to Azure | 'demo-internal' | +## | poolName | '$(poolName)' | You can provide either a [poolname] or [vmImage] to run the job on | 'Custom Deployment Pool' | +## | vmImage | '$(vmImage)' | You can provide either a [poolname] or [vmImage] to run the job on | 'ubuntu20.04' | +## | defaultJobTimeoutInMinutes | 120 | The timeout for the job in this pipeline | 120 | +## | moduleName | '$(moduleName)' | The name of the module to remove | 'KeyVault' | +## | resourceGroupName | '$(defaultResourceGroupName)' | The resourcegroup to remove the resource from | 'validation-rg' | +## | modulePath | '$(modulePath)' | The path to the module to deploy. E.g. [c:/$(moduleName)] | 'c:/$(moduleName)' | +## | azurePowerShellVersion | '$(azurePowerShellVersion)' | Used for configuring the Azure PowerShellModules Version, one of the example values. | 'latestVersion' or 'OtherVersion' | +## | preferredAzurePowerShellVersion | '$(preferredAzurePowerShellVersion)' | Used for configuring the Azure PowerShellModules Version, either an empty string or the specific version. | '4.4.0' | +## |========================================================================================================================================================================================================================| +## +##---------------------------------------------## + +parameters: + # Pipeline-related parameters + displayName: 'Remove module' + serviceConnection: '$(serviceConnection)' + poolName: '$(poolName)' + vmImage: '$(vmImage)' + defaultJobTimeoutInMinutes: 120 + # Logic-related parameters + moduleName: '$(moduleName)' + modulePath: '$(modulePath)' + resourceGroupName: '$(defaultResourceGroupName)' + relativePathOfRemovalScript: 'utilities/pipelines/resourceRemoval/Remove-DeployedModule.ps1' + # Azure PowerShell Version parameter + azurePowerShellVersion: '$(azurePowerShellVersion)' + preferredAzurePowerShellVersion: '$(preferredAzurePowerShellVersion)' + +##---------------------------------------------## +## TEMPLATE LOGIC ## +##---------------------------------------------## +jobs: + - job: + displayName: ${{ parameters.displayName }} + timeoutInMinutes: ${{ parameters.defaultJobTimeoutInMinutes }} + pool: + ${{ if ne(parameters.vmImage, '') }}: + vmImage: ${{ parameters.vmImage }} + ${{ if ne(parameters.poolName, '') }}: + name: ${{ parameters.poolName }} + steps: + - task: AzurePowerShell@5 + displayName: 'Remove [${{ parameters.moduleName }}] in [${{ parameters.resourceGroupName }}] via [${{ parameters.serviceConnection }}]' + inputs: + azureSubscription: ${{ parameters.serviceConnection }} + azurePowerShellVersion: ${{ parameters.azurePowerShellVersion }} + preferredAzurePowerShellVersion: ${{ parameters.preferredAzurePowerShellVersion }} + ScriptType: InlineScript + failOnStandardError: false + pwsh: true + inline: | + # Load used functions + $functionPath = Join-Path $(System.DefaultWorkingDirectory) '${{ parameters.relativePathOfRemovalScript }}' + . $functionPath + + # -------------- # + # INVOKE REMOVAL # + # -------------- # + $functionInput = @{ + moduleName = '${{ parameters.moduleName }}' + resourceGroupName = '${{ parameters.resourceGroupName }}' + verbose = $true + } + + Write-Verbose 'Invoke task with' -Verbose + Write-Verbose ($functionInput | ConvertTo-Json | Out-String) -Verbose + + Invoke-Expression ('{0} @functionInput' -f (Split-Path $functionPath -LeafBase)) diff --git a/.azuredevops/pipelineTemplates/module.jobs.validate.yml b/.azuredevops/pipelineTemplates/module.jobs.validate.yml new file mode 100644 index 0000000000..c68862198d --- /dev/null +++ b/.azuredevops/pipelineTemplates/module.jobs.validate.yml @@ -0,0 +1,386 @@ +######################################################### +## VALIDATION PIPELINE ## +######################################################### +## +## This pipeline template contains the logic to validate a given modue's ARM template using the provided parameter file(s) +## +## Enabled levels of validation +## - Resource-Group-Level +## - Subscription-Level +## - Management-Group-Level +## - Tenant-Level +## +######################################################### +## +##---------------------------------------------## +## TEMPLATE PARAMETERS ## +##---------------------------------------------## +## +## By default it uses the variables specified in the below [parameters] section. However, you can overwrite these variables in the +## referencing pipeline by providing the parameter explicitly. +## +## NOTE: If you don't need to overwrite a shared value, you can IGNORE this section +## +## |=============================================================================================================================================================================================================================| +## | Parameter | Default Value | Description | Example | +## |---------------------------------|--------------------------------------|-----------------------------------------------------------------------------------------------------------|----------------------------------------| +## | serviceConnection | '$(serviceConnection)' | The service connection that connects to Azure | 'demo-internal' | +## | poolName | '$(poolName)' | You can provide either a [poolname] or [vmImage] to run the job on | 'Custom Deployment Pool' | +## | vmImage | '$(vmImage)' | You can provide either a [poolname] or [vmImage] to run the job on | 'ubuntu20.04' | +## | defaultJobTimeoutInMinutes | 120 | The timeout for the job in this pipeline | 120 | +## | checkoutRepositories | '' | An optional list of repositories to check out at the beginning of this job in addition to the source | 'Components' | +## | moduleName | '$(moduleName)' | The name of the module to validate | 'KeyVault' | +## | modulePath | '$(modulePath)' | The path to the module to deploy. E.g. [c:/$(moduleName)] | 'c:/$(moduleName)' | +## | deploymentBlocks | | The parameter file(s) to validate with. Must be provided | 'C:/parameters.json' | +## | location | '$(defaultLocation)' | The location to validate with | 'France Central' | +## | resourceGroupName | '$(defaultResourceGroupName)' | The resourcegroup to validate into. Required only for Resource-Group-Level validations | 'validation-rg' | +## | subscriptionId | '$(ARM_SUBSCRIPTION_ID)' | The id of the subscription to validate with when using a Management group service connection | 'aed7c000-6387-412e-bed0-24dfddf4bbc6' | +## | managementGroupId | '$(ARM_MGMTGROUP_ID)' | The id of the management group to validate with. Required only for Management-Group-Level validations | '477c9620-cb01-454f-9ebc-fc6b1df48c14' | +## | parametersRepository | '$(Build.Repository.Name)' | The respository with the parameter files. Defaults to the triggering repository | 'Solutions' | +## | modulesRepository | '$(modulesRepository)' | The respository with the modules. | 'Components' | +## | azurePowerShellVersion | '$(azurePowerShellVersion)' | Used for configuring the Azure PowerShellModules Version, one of the example values. | 'latestVersion' or 'OtherVersion' | +## | preferredAzurePowerShellVersion | '$(preferredAzurePowerShellVersion)' | Used for configuring the Azure PowerShellModules Version, either an empty string or the specific version. | '4.4.0' | +## |=============================================================================================================================================================================================================================| +## +##---------------------------------------------## + +parameters: + # Pipeline-related parameters + serviceConnection: '$(serviceConnection)' + poolName: '$(poolName)' + vmImage: '$(vmImage)' + defaultJobTimeoutInMinutes: 120 + checkoutRepositories: '' + # Logic-related parameters + moduleName: '$(moduleName)' + modulePath: '$(modulePath)' + deploymentBlocks: + parametersRepository: '$(Build.Repository.Name)' + location: '$(defaultLocation)' + resourceGroupName: '$(defaultResourceGroupName)' + subscriptionId: '$(ARM_SUBSCRIPTION_ID)' + managementGroupId: '$(ARM_MGMTGROUP_ID)' + modulesRepository: '$(modulesRepository)' + # Azure PowerShell Version parameter + azurePowerShellVersion: '$(azurePowerShellVersion)' + preferredAzurePowerShellVersion: '$(preferredAzurePowerShellVersion)' + +##---------------------------------------------## +## TEMPLATE LOGIC ## +##---------------------------------------------## +jobs: + - job: + displayName: Run global tests + timeoutInMinutes: ${{ parameters.defaultJobTimeoutInMinutes }} + pool: + ${{ if ne(parameters.vmImage, '') }}: + vmImage: ${{ parameters.vmImage }} + ${{ if ne(parameters.poolName, '') }}: + name: ${{ parameters.poolName }} + steps: + # [Checkout Repositories] task(s) + #-------------------------------- + - checkout: self + - ${{ if ne(parameters.checkoutRepositories, '') }}: + - ${{ 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 }}' + + # [Agent] Prepare environment + #---------------------------- + - task: PowerShell@2 + displayName: 'Setup agent' + inputs: + targetType: inline + pwsh: true + script: | + # Load used functions + . (Join-Path '$(System.DefaultWorkingDirectory)' 'utilities' 'pipelines' 'sharedScripts' 'Set-EnvironmentOnAgent.ps1') + + # Set agent up + Set-EnvironmentOnAgent + + # [Module Pester Test] task(s) + #----------------------------- + - task: AzurePowerShell@5 + displayName: 'Run general [${{ parameters.moduleName }}] tests via (Pester) via connection [${{ parameters.serviceConnection }}]' + inputs: + azureSubscription: ${{ parameters.serviceConnection }} + azurePowerShellVersion: ${{ parameters.azurePowerShellVersion }} + preferredAzurePowerShellVersion: ${{ parameters.preferredAzurePowerShellVersion }} + ScriptType: InlineScript + pwsh: true + inline: | + # ---------------------------- # + # HANDLE MULTI-REPO INVOCATION # + # ---------------------------- # + $componentsBasePath = "$(System.DefaultWorkingDirectory)" + # Handle multiple-repositories + if( "${{ join(';',parameters.checkoutRepositories) }}".length -gt 0) { + Write-Verbose "Multi Repo" -Verbose + $componentsBasePath = Join-Path $componentsBasePath '$(modulesRepository)' + } + + # --------------------- # + # INVOKE PESTER TEST(S) # + # --------------------- # + Install-Module Pester -Force -ErrorAction Stop -RequiredVersion 5.1.1 + + Invoke-Pester -Configuration @{ + Run = @{ + Container = New-PesterContainer -Path 'arm/.global/global.module.tests.ps1' -Data @{ + moduleFolderPaths = Join-Path $componentsBasePath '${{ parameters.modulePath }}' + } + } + Filter = @{ + ExcludeTag = 'ApiCheck' + } + TestResult = @{ + TestSuiteName = 'Global Module Tests' + OutputPath = 'arm/.global/global-testResults.xml' + OutputFormat = 'NUnitXml' + Enabled = $true + } + Output = @{ + Verbosity = 'Detailed' + } + } + errorActionPreference: continue + + - task: PublishTestResults@2 + displayName: Publish Test Results + inputs: + testRunTitle: 'Global Module Tests' + testResultsFormat: NUnit + testResultsFiles: global-testResults.xml + failTaskOnFailedTests: false + searchFolder: 'arm/.global' + continueOnError: false + condition: succeededOrFailed() + + - job: + displayName: Run global API tests + timeoutInMinutes: ${{ parameters.defaultJobTimeoutInMinutes }} + pool: + ${{ if ne(parameters.vmImage, '') }}: + vmImage: ${{ parameters.vmImage }} + ${{ if ne(parameters.poolName, '') }}: + name: ${{ parameters.poolName }} + steps: + # [Checkout Repositories] task(s) + #-------------------------------- + - checkout: self + - ${{ if ne(parameters.checkoutRepositories, '') }}: + - ${{ 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 }}' + + # [Agent] Prepare environment + #---------------------------- + - task: PowerShell@2 + displayName: 'Setup agent' + inputs: + targetType: inline + pwsh: true + script: | + # Load used functions + . (Join-Path '$(System.DefaultWorkingDirectory)' 'utilities' 'pipelines' 'sharedScripts' 'Set-EnvironmentOnAgent.ps1') + + # Set agent up + Set-EnvironmentOnAgent + + # [Module Pester Test] task(s) + #----------------------------- + - task: AzurePowerShell@5 + displayName: 'Run [${{ parameters.moduleName }}] API tests via (Pester) via connection [${{ parameters.serviceConnection }}]' + inputs: + azureSubscription: ${{ parameters.serviceConnection }} + azurePowerShellVersion: ${{ parameters.azurePowerShellVersion }} + preferredAzurePowerShellVersion: ${{ parameters.preferredAzurePowerShellVersion }} + ScriptType: InlineScript + pwsh: true + inline: | + # ---------------------------- # + # HANDLE MULTI-REPO INVOCATION # + # ---------------------------- # + $componentsBasePath = "$(System.DefaultWorkingDirectory)" + # Handle multiple-repositories + if( "${{ join(';',parameters.checkoutRepositories) }}".length -gt 0) { + Write-Verbose "Multi Repo" -Verbose + $componentsBasePath = Join-Path $componentsBasePath '$(modulesRepository)' + } + + # --------------------- # + # INVOKE PESTER TEST(S) # + # --------------------- # + Install-Module Pester -Force -ErrorAction Stop -RequiredVersion 5.1.1 + + Invoke-Pester -Configuration @{ + Run = @{ + Container = New-PesterContainer -Path 'arm/.global/global.module.tests.ps1' -Data @{ + moduleFolderPaths = Join-Path $componentsBasePath '${{ parameters.modulePath }}' + } + } + Filter = @{ + Tag = 'ApiCheck' + } + TestResult = @{ + TestSuiteName = 'Global Module API Tests' + OutputPath = 'arm/.global/api-testResults.xml' + OutputFormat = 'NUnitXml' + Enabled = $true + } + Output = @{ + Verbosity = 'Detailed' + } + } + errorActionPreference: continue + + - task: PublishTestResults@2 + displayName: Publish Test Results + inputs: + testRunTitle: 'Global Module API Tests' + testResultsFormat: NUnit + testResultsFiles: api-testResults.xml + failTaskOnFailedTests: false + searchFolder: 'arm/.global' + continueOnError: false + condition: succeededOrFailed() + + - ${{ each deploymentBlock in parameters.deploymentBlocks }}: + - job: + ${{ if ne( deploymentBlock.displayName, '') }}: + displayName: ${{ deploymentBlock.displayName }} + ${{ if eq( deploymentBlock.displayName, '') }}: + displayName: Validate with [${{ replace( deploymentBlock.path, '$(modulePath)', '') }}] + timeoutInMinutes: ${{ parameters.defaultJobTimeoutInMinutes }} + pool: + ${{ if ne(parameters.vmImage, '') }}: + vmImage: ${{ parameters.vmImage }} + ${{ if ne(parameters.poolName, '') }}: + name: ${{ parameters.poolName }} + steps: + # [Checkout Repositories] task(s) + #-------------------------------- + - checkout: self + - ${{ if ne(parameters.checkoutRepositories, '') }}: + - ? ${{ 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 }}' + + # [Agent] Prepare environment + #---------------------------- + - task: PowerShell@2 + displayName: 'Setup agent' + inputs: + targetType: inline + pwsh: true + script: | + # Load used functions + . (Join-Path '$(System.DefaultWorkingDirectory)' 'utilities' 'pipelines' 'sharedScripts' 'Set-EnvironmentOnAgent.ps1') + + # Set agent up + Set-EnvironmentOnAgent + + # [Multi Repo] Support task + #-------------------------- + - task: PowerShell@2 + displayName: Handle Multi-Repo Invocation + inputs: + targetType: inline + pwsh: true + script: | + # Handle multiple-repositories + if( "${{ join(';',parameters.checkoutRepositories) }}".length -gt 0) { + Write-Verbose "Multi-Repo Checkout" -Verbose + $moduleRepoRoot = Join-Path '$(System.DefaultWorkingDirectory)' '$(modulesRepository)' + $parametersRepoRoot = Join-Path '$(System.DefaultWorkingDirectory)' '${{ parameters.parametersRepository }}' + } else { + Write-Verbose "No Multi-Repo Checkout" -Verbose + $moduleRepoRoot = '$(System.DefaultWorkingDirectory)' + $parametersRepoRoot = '$(System.DefaultWorkingDirectory)' + } + Write-Host "##vso[task.setvariable variable=ModuleRepoRoot]$moduleRepoRoot" + Write-Host "##vso[task.setvariable variable=ParametersRepoRoot]$parametersRepoRoot" + + # [Agent] Replace tokens + #----------------------- + - task: PowerShell@2 + displayName: 'Replace Tokens [${{ deploymentBlock.path }}]' + inputs: + targetType: inline + pwsh: true + script: | + # Load used functions + . (Join-Path '$(System.DefaultWorkingDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') + + # Load Settings File + $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json + + # Initialize Default Parameter File Tokens + $DefaultParameterFileTokens = @( + @{ Name = 'resourceGroupName'; Value = '${{ parameters.resourceGroupName }}' } + @{ Name = 'subscriptionId'; Value = '${{ parameters.subscriptionId }}' } + @{ Name = 'managementGroupId'; Value = '${{ parameters.managementGroupId }}' } + @{ Name = "tenantId"; Value = '${{ variables.ARM_TENANT_ID }}' } + @{ Name = "deploymentSpId"; Value = '${{ variables.DEPLOYMENT_SP_ID }}' } + @{ Name = "platformKeyVault"; Value = '${{ variables.PLATFORM_KEYVAULT }}' } + ) | ForEach-Object { [PSCustomObject]$PSItem } + + # Construct Token Function Input + $ConvertTokensInputs = @{ + ParameterFilePath = '${{ deploymentBlock.path }}' + DefaultParameterFileTokens = $DefaultParameterFileTokens + LocalCustomParameterFileTokens = $Settings.parameterFileTokens.localTokens.tokens + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + verbose = $true + } + # Add Remote Custom Parameter File Tokens + if ('${{ env.PLATFORM_KEYVAULT }}' -and '${{ inputs.subscriptionId }}') { + $ConvertTokensInputs += @{ + TokensKeyVaultName = '${{ variables.PLATFORM_KEYVAULT }}' + TokensKeyVaultSubscriptionId = '${{ parameters.subscriptionId }}' + TokensKeyVaultSecretNamePrefix = $Settings.parameterFileTokens.remoteTokens.keyVaultSecretNamePrefix + } + } + + Write-Verbose "Invoke task with" -Verbose + Write-Verbose ($ConvertTokensInputs | ConvertTo-Json | Out-String) -Verbose + + # Invoke Token Replacement Functionality + Convert-TokensInParameterFile @ConvertTokensInputs -Verbose + + # [Test Deployment] task(s) + #-------------------------- + - task: AzurePowerShell@5 + displayName: 'Validate [${{ parameters.moduleName }}] via connection [${{ parameters.serviceConnection }}]' + inputs: + azureSubscription: ${{ parameters.serviceConnection }} + azurePowerShellVersion: ${{ parameters.azurePowerShellVersion }} + preferredAzurePowerShellVersion: ${{ parameters.preferredAzurePowerShellVersion }} + ScriptType: InlineScript + pwsh: true + inline: | + # Load used functions + . (Join-Path '$(System.DefaultWorkingDirectory)' '$(pipelineFunctionsPath)' 'resourceValidation' 'Test-TemplateWithParameterFile.ps1') + + # ----------- # + # INVOKE TEST # + # ----------- # + $functionInput = @{ + templateFilePath = Join-Path '$(ModuleRepoRoot)' '$(modulePath)' 'deploy.bicep' + parameterFilePath = Join-Path '$(ParametersRepoRoot)' '${{ deploymentBlock.path }}' + location = '${{ parameters.location }}' + resourceGroupName = '${{ parameters.resourceGroupName }}' + subscriptionId = '${{ parameters.subscriptionId }}' + managementGroupId = '${{ parameters.managementGroupId }}' + } + + Write-Verbose "Invoke task with" -Verbose + Write-Verbose ($functionInput | ConvertTo-Json | Out-String) -Verbose + + Test-TemplateWithParameterFile @functionInput -Verbose diff --git a/.azuredevops/pipelineVariables/global.variables.yml b/.azuredevops/pipelineVariables/global.variables.yml new file mode 100644 index 0000000000..7938b33cd2 --- /dev/null +++ b/.azuredevops/pipelineVariables/global.variables.yml @@ -0,0 +1,84 @@ +variables: + ###################################### + # Agent settings + ###################################### + + vmImage: 'ubuntu-latest' # Use this for Microsoft-hosted agents + poolName: '' # Use this for self-hosted agents + serviceConnection: 'CARML-Dev' + + ###################################### + # Source + ###################################### + + vstsOrganization: alsehr + vstsProject: '$(System.TeamProject)' + modulesRepository: ResourceModules # The repository hosting the deployment code (i.e. 'Components'). MUST be provided as a variable with every pipeline + modulePath: arm/$(moduleName) # only use in module pielines + pipelineFunctionsPath: 'utilities/pipelines' + + ###################################### + # Validation deployment settings + ###################################### + + defaultLocation: 'West Europe' + defaultResourceGroupName: 'validation-rg' # validation-resourcegroup-name + + ###################################### + # Components template spec settings + ###################################### + + # Set to true, if you would like to publish modules as template specs + templateSpecsDoPublish: true + templateSpecsRGName: 'artifacts-rg' + templateSpecsRGLocation: 'West Europe' + templateSpecsDescription: components + + ###################################### + # Universal Packages + ###################################### + + # Set to true, if you would like to publish modules as Universal Packages (in ADO Artifacts) + # If you provide a name below, you have to create an Artifact Feed in ADO with the same name before using this feed. + artifactsFeedDoPublish: true + vstsFeedName: 'ResourceModules' + vstsFeedProject: '$(System.TeamProject)' + + ###################################### + # Nuget Packages + ###################################### + + # Set to true, if you would like to publish modules as Nuget Packages (in ADO Artifacts) + # If you provide a name below, you have to create an Artifact Feed in ADO with the same name before using this feed. + nugetArtifactsFeedDoPublish: false + vstsNugetFeedName: 'Nuget-Modules' + vstNugetFeedUrl: 'https://pkgs.dev.azure.com/$(vstsOrganization)/$(vstsProject)/_packaging/Nuget-Modules/nuget/v2' + + ###################################### + # Private Bicep Registry + ###################################### + + bicepRegistryDoPublish: true + bicepRegistryName: adpsxxazacrx001 + bicepRegistryRGName: 'artifacts-rg' + + ###################################### + # Azure PowerShell Version + ###################################### + + # Should be set to 'latestVersion' unless there is an issue with the Az PowerShell modules. + # If a specific version needs to be set azurePowerShellVersion should be changed to 'OtherVersion'. + # NOTE: The strings are case sensitive and will not work unless properly entered. + azurePowerShellVersion: 'latestVersion' + # If using the latest version of the Az PowerShell modules, set `preferredAzurePowerShellVersion` to an empty string ''. + # If overriding the Az PowerShell module version, set to the version. Example: '4.4.0' + preferredAzurePowerShellVersion: '' +# +# NOTE: To override for just an individual template, just add the following to the +# templates pipeline.yml replacing '4.4.0' with the desired version: +# +# - name: azurePowerShellVersion +# value: 'OtherVersion' +# - name: preferredAzurePowerShellVersion +# value: '4.4.0' +# diff --git a/.github/actions/templates/deployModule/action.yml b/.github/actions/templates/deployModule/action.yml index 43f993f718..a54a798d1b 100644 --- a/.github/actions/templates/deployModule/action.yml +++ b/.github/actions/templates/deployModule/action.yml @@ -31,11 +31,12 @@ inputs: runs: using: 'composite' steps: - - name: 'Setup agent & login' + - name: 'Setup agent' shell: pwsh run: | # Load used functions - . ".github/actions/sharedScripts/Set-EnvironmentOnAgent.ps1" + . (Join-Path $env:GITHUB_WORKSPACE 'utilities/pipelines/sharedScripts/Set-EnvironmentOnAgent.ps1') + # Set agent up Set-EnvironmentOnAgent @@ -49,7 +50,8 @@ runs: shell: pwsh run: | # Load used functions - . "utilities/tokensReplacement/Convert-TokensInParameterFile.ps1" + . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') + # Load Settings File $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json # Initialize Default Parameter File Tokens @@ -85,7 +87,7 @@ runs: shell: pwsh run: | # Load used functions - . "$env:GITHUB_ACTION_PATH/scripts/New-ModuleDeployment.ps1" + . (Join-Path $env:GITHUB_WORKSPACE 'utilities/pipelines/resourceDeployment/New-ModuleDeployment.ps1') $functionInput = @{ moduleName = '${{ inputs.moduleName }}' @@ -95,7 +97,7 @@ runs: resourceGroupName = '${{ inputs.resourceGroupName }}' subscriptionId = '${{ inputs.subscriptionId }}' managementGroupId = '${{ inputs.managementGroupId }}' - removeDeployment = [System.Convert]::ToBoolean('${{ inputs.removeDeployment }}') + removeDeployment = [System.Convert]::ToBoolean('${{ inputs.removeDeployment }}') } Write-Verbose "Invoke task with" -Verbose diff --git a/.github/actions/templates/publishModule/action.yml b/.github/actions/templates/publishModule/action.yml index 21344f1398..d4f968f325 100644 --- a/.github/actions/templates/publishModule/action.yml +++ b/.github/actions/templates/publishModule/action.yml @@ -40,11 +40,12 @@ inputs: runs: using: 'composite' steps: - - name: 'Setup agent & login' + - name: 'Setup agent' shell: pwsh run: | # Load used functions - . ".github/actions/sharedScripts/Set-EnvironmentOnAgent.ps1" + . (Join-Path $env:GITHUB_WORKSPACE 'utilities/pipelines/sharedScripts/Set-EnvironmentOnAgent.ps1') + # Set agent up Set-EnvironmentOnAgent @@ -54,7 +55,7 @@ runs: creds: ${{ env.AZURE_CREDENTIALS }} enable-AzPSSession: true - - name: 'Publish module to template spec' + - name: 'Publish module to template specs' shell: pwsh # if: ${{ inputs.templateSpecsDoPublish == 'true' }} run: | @@ -63,7 +64,7 @@ runs: if('${{ inputs.templateSpecsDoPublish }}' -eq 'true') { # Load used functions - . "$env:GITHUB_ACTION_PATH/scripts/Publish-ModuleToTemplateSpec.ps1" + . (Join-Path $env:GITHUB_WORKSPACE 'utilities/pipelines/resourcePublish/Publish-ModuleToTemplateSpec.ps1') $functionInput = @{ templateFilePath = Join-Path $env:GITHUB_WORKSPACE "${{ inputs.templateFilePath }}" @@ -91,7 +92,7 @@ runs: if('${{ inputs.bicepRegistryDoPublish }}' -eq 'true') { # Load used functions - . "$env:GITHUB_ACTION_PATH/scripts/Publish-ModuleToPrivateBicepRegistry.ps1" + . (Join-Path $env:GITHUB_WORKSPACE 'utilities/pipelines/resourcePublish/Publish-ModuleToPrivateBicepRegistry.ps1') $functionInput = @{ templateFilePath = Join-Path $env:GITHUB_WORKSPACE "${{ inputs.templateFilePath }}" diff --git a/.github/actions/templates/removeModule/action.yml b/.github/actions/templates/removeModule/action.yml index 9525135e23..fc28d383ff 100644 --- a/.github/actions/templates/removeModule/action.yml +++ b/.github/actions/templates/removeModule/action.yml @@ -14,16 +14,17 @@ inputs: relativePathOfRemovalScript: description: 'The relative path from root to the script that removes the service' required: false - default: 'utilities/resourceRemoval/Remove-DeployedModule.ps1' + default: 'utilities/pipelines/resourceRemoval/Remove-DeployedModule.ps1' runs: using: 'composite' steps: - - name: 'Setup agent & login' + - name: 'Setup agent' shell: pwsh run: | # Load used functions - . ".github/actions/sharedScripts/Set-EnvironmentOnAgent.ps1" + . (Join-Path $env:GITHUB_WORKSPACE 'utilities/pipelines/sharedScripts/Set-EnvironmentOnAgent.ps1') + # Set agent up Set-EnvironmentOnAgent diff --git a/.github/actions/templates/validateModuleApis/action.yml b/.github/actions/templates/validateModuleApis/action.yml index c828945a0a..610ce6d3e7 100644 --- a/.github/actions/templates/validateModuleApis/action.yml +++ b/.github/actions/templates/validateModuleApis/action.yml @@ -12,11 +12,11 @@ inputs: runs: using: 'composite' steps: - - name: 'Setup agent & login' + - name: 'Setup agent' shell: pwsh run: | # Load used functions - . ".github/actions/sharedScripts/Set-EnvironmentOnAgent.ps1" + . (Join-Path $env:GITHUB_WORKSPACE 'utilities/pipelines/sharedScripts/Set-EnvironmentOnAgent.ps1') # Set agent up Set-EnvironmentOnAgent @@ -34,8 +34,6 @@ runs: # --------------------- # # INVOKE PESTER TEST(S) # # --------------------- # - Install-Module Pester -Force -ErrorAction Stop -RequiredVersion 5.3.0 - Invoke-Pester -Configuration @{ Run = @{ Container = New-PesterContainer -Path 'arm/.global/global.module.tests.ps1' -Data @{ @@ -46,7 +44,7 @@ runs: Tag = 'ApiCheck' } TestResult = @{ - TestSuiteName = 'Global Module Tests' + TestSuiteName = 'Global Module API Tests' OutputPath = 'arm/.global/api-testResults.xml' OutputFormat = 'JUnitXml' Enabled = $true diff --git a/.github/actions/templates/validateModuleDeploy/action.yml b/.github/actions/templates/validateModuleDeploy/action.yml index cc79d6c805..806851a0c1 100644 --- a/.github/actions/templates/validateModuleDeploy/action.yml +++ b/.github/actions/templates/validateModuleDeploy/action.yml @@ -24,11 +24,12 @@ inputs: runs: using: 'composite' steps: - - name: 'Setup agent & login' + - name: 'Setup agent' shell: pwsh run: | # Load used functions - . ".github/actions/sharedScripts/Set-EnvironmentOnAgent.ps1" + . (Join-Path $env:GITHUB_WORKSPACE 'utilities/pipelines/sharedScripts/Set-EnvironmentOnAgent.ps1') + # Set agent up Set-EnvironmentOnAgent @@ -42,9 +43,11 @@ runs: shell: pwsh run: | # Load used functions - . "utilities/tokensReplacement/Convert-TokensInParameterFile.ps1" + . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') + # Load Settings File $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json + # Initialize Default Parameter File Tokens $DefaultParameterFileTokens = @( @{ Name = 'resourceGroupName'; Value = '${{ inputs.resourceGroupName }}' } @@ -80,7 +83,7 @@ runs: shell: pwsh run: | # Load used functions - . "$env:GITHUB_ACTION_PATH/scripts/Test-TemplateWithParameterFile.ps1" + . (Join-Path $env:GITHUB_WORKSPACE 'utilities/pipelines/resourceValidation/Test-TemplateWithParameterFile.ps1') # ----------- # # INVOKE TEST # diff --git a/.github/actions/templates/validateModuleGeneral/action.yml b/.github/actions/templates/validateModuleGeneral/action.yml index 7e5cd989fb..cb16b51b91 100644 --- a/.github/actions/templates/validateModuleGeneral/action.yml +++ b/.github/actions/templates/validateModuleGeneral/action.yml @@ -14,11 +14,12 @@ inputs: runs: using: 'composite' steps: - - name: 'Setup agent & login' + - name: 'Setup agent' shell: pwsh run: | # Load used functions - . ".github/actions/sharedScripts/Set-EnvironmentOnAgent.ps1" + . (Join-Path $env:GITHUB_WORKSPACE 'utilities/pipelines/sharedScripts/Set-EnvironmentOnAgent.ps1') + # Set agent up Set-EnvironmentOnAgent @@ -36,8 +37,6 @@ runs: # --------------------- # # INVOKE PESTER TEST(S) # # --------------------- # - Install-Module Pester -Force -ErrorAction Stop -RequiredVersion 5.3.0 - Invoke-Pester -Configuration @{ Run = @{ Container = New-PesterContainer -Path 'arm/.global/global.module.tests.ps1' -Data @{ diff --git a/.github/workflows/ms.analysisservices.servers.yml b/.github/workflows/ms.analysisservices.servers.yml index bae4a28377..f704519789 100644 --- a/.github/workflows/ms.analysisservices.servers.yml +++ b/.github/workflows/ms.analysisservices.servers.yml @@ -97,7 +97,7 @@ jobs: strategy: fail-fast: false matrix: - parameterFilePaths: ['parameters.json'] + parameterFilePaths: ['min.parameters.json', 'parameters.json'] steps: - name: 'Checkout' uses: actions/checkout@v2 @@ -132,7 +132,7 @@ jobs: strategy: fail-fast: false matrix: - parameterFilePaths: ['parameters.json'] + parameterFilePaths: ['min.parameters.json', 'parameters.json'] steps: - name: 'Checkout' uses: actions/checkout@v2 @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.apimanagement.service.apis.yml b/.github/workflows/ms.apimanagement.service.apis.yml index d8c6773f1a..d296d158c7 100644 --- a/.github/workflows/ms.apimanagement.service.apis.yml +++ b/.github/workflows/ms.apimanagement.service.apis.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.apimanagement.service.authorizationservers.yml b/.github/workflows/ms.apimanagement.service.authorizationservers.yml index ced0f92711..ab50219124 100644 --- a/.github/workflows/ms.apimanagement.service.authorizationservers.yml +++ b/.github/workflows/ms.apimanagement.service.authorizationservers.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.apimanagement.service.backends.yml b/.github/workflows/ms.apimanagement.service.backends.yml index 45483bb0e4..21455400ce 100644 --- a/.github/workflows/ms.apimanagement.service.backends.yml +++ b/.github/workflows/ms.apimanagement.service.backends.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.apimanagement.service.caches.yml b/.github/workflows/ms.apimanagement.service.caches.yml index 44174d6fba..061caa19f9 100644 --- a/.github/workflows/ms.apimanagement.service.caches.yml +++ b/.github/workflows/ms.apimanagement.service.caches.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.apimanagement.service.namedvalues.yml b/.github/workflows/ms.apimanagement.service.namedvalues.yml index 1822cb8f87..781751b841 100644 --- a/.github/workflows/ms.apimanagement.service.namedvalues.yml +++ b/.github/workflows/ms.apimanagement.service.namedvalues.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.apimanagement.service.products.yml b/.github/workflows/ms.apimanagement.service.products.yml index a303a4a605..0c3c939fa8 100644 --- a/.github/workflows/ms.apimanagement.service.products.yml +++ b/.github/workflows/ms.apimanagement.service.products.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.apimanagement.service.subscriptions.yml b/.github/workflows/ms.apimanagement.service.subscriptions.yml index 8d1d11ae90..2a809432d8 100644 --- a/.github/workflows/ms.apimanagement.service.subscriptions.yml +++ b/.github/workflows/ms.apimanagement.service.subscriptions.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.apimanagement.service.yml b/.github/workflows/ms.apimanagement.service.yml index 001a0a939d..63a098a31e 100644 --- a/.github/workflows/ms.apimanagement.service.yml +++ b/.github/workflows/ms.apimanagement.service.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.authorization.policyassignments.yml b/.github/workflows/ms.authorization.policyassignments.yml index 4434c90679..fd656caf55 100644 --- a/.github/workflows/ms.authorization.policyassignments.yml +++ b/.github/workflows/ms.authorization.policyassignments.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.authorization.policydefinitions.yml b/.github/workflows/ms.authorization.policydefinitions.yml index ca9418b069..50f0878d64 100644 --- a/.github/workflows/ms.authorization.policydefinitions.yml +++ b/.github/workflows/ms.authorization.policydefinitions.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.authorization.policyexemptions.yml b/.github/workflows/ms.authorization.policyexemptions.yml index a3d966ec23..8dfa1d8824 100644 --- a/.github/workflows/ms.authorization.policyexemptions.yml +++ b/.github/workflows/ms.authorization.policyexemptions.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.authorization.policysetdefinitions.yml b/.github/workflows/ms.authorization.policysetdefinitions.yml index 7a1c315748..6b78ae816b 100644 --- a/.github/workflows/ms.authorization.policysetdefinitions.yml +++ b/.github/workflows/ms.authorization.policysetdefinitions.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.authorization.roleassignments.yml b/.github/workflows/ms.authorization.roleassignments.yml index d550bd9aed..7a2bc537b3 100644 --- a/.github/workflows/ms.authorization.roleassignments.yml +++ b/.github/workflows/ms.authorization.roleassignments.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.authorization.roledefinitions.yml b/.github/workflows/ms.authorization.roledefinitions.yml index 2da12e0fd0..aa8e1f8243 100644 --- a/.github/workflows/ms.authorization.roledefinitions.yml +++ b/.github/workflows/ms.authorization.roledefinitions.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.automanage.accounts.yml b/.github/workflows/ms.automanage.accounts.yml index 7e4a2b749d..73742f656f 100644 --- a/.github/workflows/ms.automanage.accounts.yml +++ b/.github/workflows/ms.automanage.accounts.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.automation.automationaccounts.softwareupdateconfigurations.yml b/.github/workflows/ms.automation.automationaccounts.softwareupdateconfigurations.yml index 3a1ac358f1..3b27ec6a12 100644 --- a/.github/workflows/ms.automation.automationaccounts.softwareupdateconfigurations.yml +++ b/.github/workflows/ms.automation.automationaccounts.softwareupdateconfigurations.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.automation.automationaccounts.yml b/.github/workflows/ms.automation.automationaccounts.yml index 155d3193a8..96cd32064e 100644 --- a/.github/workflows/ms.automation.automationaccounts.yml +++ b/.github/workflows/ms.automation.automationaccounts.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.batch.batchaccounts.yml b/.github/workflows/ms.batch.batchaccounts.yml index 6fa2ea39c6..e35144bfcf 100644 --- a/.github/workflows/ms.batch.batchaccounts.yml +++ b/.github/workflows/ms.batch.batchaccounts.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.cognitiveservices.accounts.yml b/.github/workflows/ms.cognitiveservices.accounts.yml index 87bb3e174f..f2e4bfbb67 100644 --- a/.github/workflows/ms.cognitiveservices.accounts.yml +++ b/.github/workflows/ms.cognitiveservices.accounts.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.compute.availabilitysets.yml b/.github/workflows/ms.compute.availabilitysets.yml index 4417255a35..99efc69ecc 100644 --- a/.github/workflows/ms.compute.availabilitysets.yml +++ b/.github/workflows/ms.compute.availabilitysets.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.compute.diskencryptionsets.yml b/.github/workflows/ms.compute.diskencryptionsets.yml index 1899a23d1b..2b3bf7e26b 100644 --- a/.github/workflows/ms.compute.diskencryptionsets.yml +++ b/.github/workflows/ms.compute.diskencryptionsets.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.compute.galleries.images.yml b/.github/workflows/ms.compute.galleries.images.yml index d974351d32..f730022b84 100644 --- a/.github/workflows/ms.compute.galleries.images.yml +++ b/.github/workflows/ms.compute.galleries.images.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.compute.galleries.yml b/.github/workflows/ms.compute.galleries.yml index a0e5a8d597..0fd54197b6 100644 --- a/.github/workflows/ms.compute.galleries.yml +++ b/.github/workflows/ms.compute.galleries.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.compute.images.yml b/.github/workflows/ms.compute.images.yml index cfd3be0285..096eca49eb 100644 --- a/.github/workflows/ms.compute.images.yml +++ b/.github/workflows/ms.compute.images.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.compute.proximityplacementgroups.yml b/.github/workflows/ms.compute.proximityplacementgroups.yml index c909fd6bd0..68ab87d41f 100644 --- a/.github/workflows/ms.compute.proximityplacementgroups.yml +++ b/.github/workflows/ms.compute.proximityplacementgroups.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.compute.virtualmachines.yml b/.github/workflows/ms.compute.virtualmachines.yml index 0f686c8a87..3ffba2f054 100644 --- a/.github/workflows/ms.compute.virtualmachines.yml +++ b/.github/workflows/ms.compute.virtualmachines.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.compute.virtualmachinescalesets.yml b/.github/workflows/ms.compute.virtualmachinescalesets.yml index 3ef8e98de6..30c4b04893 100644 --- a/.github/workflows/ms.compute.virtualmachinescalesets.yml +++ b/.github/workflows/ms.compute.virtualmachinescalesets.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.consumption.budgets.yml b/.github/workflows/ms.consumption.budgets.yml index 11f55c074e..266cc1d7f6 100644 --- a/.github/workflows/ms.consumption.budgets.yml +++ b/.github/workflows/ms.consumption.budgets.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.containerinstance.containergroups.yml b/.github/workflows/ms.containerinstance.containergroups.yml index be66a7b768..ee08b8f075 100644 --- a/.github/workflows/ms.containerinstance.containergroups.yml +++ b/.github/workflows/ms.containerinstance.containergroups.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.containerregistry.registries.yml b/.github/workflows/ms.containerregistry.registries.yml index 5be131f049..21c1bad571 100644 --- a/.github/workflows/ms.containerregistry.registries.yml +++ b/.github/workflows/ms.containerregistry.registries.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.containerservice.managedclusters.yml b/.github/workflows/ms.containerservice.managedclusters.yml index a1425fe85c..ee15cac3c4 100644 --- a/.github/workflows/ms.containerservice.managedclusters.yml +++ b/.github/workflows/ms.containerservice.managedclusters.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.databricks.workspaces.yml b/.github/workflows/ms.databricks.workspaces.yml index ab86e971a3..104e68c7da 100644 --- a/.github/workflows/ms.databricks.workspaces.yml +++ b/.github/workflows/ms.databricks.workspaces.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.datafactory.factories.yml b/.github/workflows/ms.datafactory.factories.yml index f10ce616bf..36577351d0 100644 --- a/.github/workflows/ms.datafactory.factories.yml +++ b/.github/workflows/ms.datafactory.factories.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.desktopvirtualization.applicationgroups.yml b/.github/workflows/ms.desktopvirtualization.applicationgroups.yml index 43b96b5d1c..549a1185a4 100644 --- a/.github/workflows/ms.desktopvirtualization.applicationgroups.yml +++ b/.github/workflows/ms.desktopvirtualization.applicationgroups.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.desktopvirtualization.hostpools.yml b/.github/workflows/ms.desktopvirtualization.hostpools.yml index 9f7be6d49e..f971704aef 100644 --- a/.github/workflows/ms.desktopvirtualization.hostpools.yml +++ b/.github/workflows/ms.desktopvirtualization.hostpools.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.desktopvirtualization.workspaces.yml b/.github/workflows/ms.desktopvirtualization.workspaces.yml index f47bc13554..46d659b774 100644 --- a/.github/workflows/ms.desktopvirtualization.workspaces.yml +++ b/.github/workflows/ms.desktopvirtualization.workspaces.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.documentdb.databaseaccounts.yml b/.github/workflows/ms.documentdb.databaseaccounts.yml index 42a99c760f..4e88e06cfc 100644 --- a/.github/workflows/ms.documentdb.databaseaccounts.yml +++ b/.github/workflows/ms.documentdb.databaseaccounts.yml @@ -205,7 +205,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.eventgrid.topics.yml b/.github/workflows/ms.eventgrid.topics.yml index 786f6e4c21..f5d245b515 100644 --- a/.github/workflows/ms.eventgrid.topics.yml +++ b/.github/workflows/ms.eventgrid.topics.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.eventhub.namespaces.yml b/.github/workflows/ms.eventhub.namespaces.yml index e4604a1029..f5697718a5 100644 --- a/.github/workflows/ms.eventhub.namespaces.yml +++ b/.github/workflows/ms.eventhub.namespaces.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.healthbot.healthbots.yml b/.github/workflows/ms.healthbot.healthbots.yml index 13b42d2873..032ee07b2d 100644 --- a/.github/workflows/ms.healthbot.healthbots.yml +++ b/.github/workflows/ms.healthbot.healthbots.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.insights.actiongroups.yml b/.github/workflows/ms.insights.actiongroups.yml index ce0dd1c17b..54d7de898e 100644 --- a/.github/workflows/ms.insights.actiongroups.yml +++ b/.github/workflows/ms.insights.actiongroups.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.insights.activitylogalerts.yml b/.github/workflows/ms.insights.activitylogalerts.yml index a6dea19409..5ecac2396a 100644 --- a/.github/workflows/ms.insights.activitylogalerts.yml +++ b/.github/workflows/ms.insights.activitylogalerts.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.insights.components.yml b/.github/workflows/ms.insights.components.yml index 42d24044bd..8d0214b586 100644 --- a/.github/workflows/ms.insights.components.yml +++ b/.github/workflows/ms.insights.components.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.insights.diagnosticsettings.yml b/.github/workflows/ms.insights.diagnosticsettings.yml index 8fc17ad375..3f4c161510 100644 --- a/.github/workflows/ms.insights.diagnosticsettings.yml +++ b/.github/workflows/ms.insights.diagnosticsettings.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.insights.metricalerts.yml b/.github/workflows/ms.insights.metricalerts.yml index 47e3dff93f..fdb43119ea 100644 --- a/.github/workflows/ms.insights.metricalerts.yml +++ b/.github/workflows/ms.insights.metricalerts.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.insights.privatelinkscopes.yml b/.github/workflows/ms.insights.privatelinkscopes.yml index 81179a82f1..5e4f841675 100644 --- a/.github/workflows/ms.insights.privatelinkscopes.yml +++ b/.github/workflows/ms.insights.privatelinkscopes.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.insights.scheduledqueryrules.yml b/.github/workflows/ms.insights.scheduledqueryrules.yml index d9f7435422..7d929cd087 100644 --- a/.github/workflows/ms.insights.scheduledqueryrules.yml +++ b/.github/workflows/ms.insights.scheduledqueryrules.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.keyvault.vaults.yml b/.github/workflows/ms.keyvault.vaults.yml index d7054a8052..9679974e29 100644 --- a/.github/workflows/ms.keyvault.vaults.yml +++ b/.github/workflows/ms.keyvault.vaults.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.logic.workflows.yml b/.github/workflows/ms.logic.workflows.yml index 899848a07e..0b61e30fed 100644 --- a/.github/workflows/ms.logic.workflows.yml +++ b/.github/workflows/ms.logic.workflows.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.machinelearningservices.workspaces.yml b/.github/workflows/ms.machinelearningservices.workspaces.yml index ca332fd304..1802a4d069 100644 --- a/.github/workflows/ms.machinelearningservices.workspaces.yml +++ b/.github/workflows/ms.machinelearningservices.workspaces.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.managedidentity.userassignedidentities.yml b/.github/workflows/ms.managedidentity.userassignedidentities.yml index db3f151bd0..83daef43d2 100644 --- a/.github/workflows/ms.managedidentity.userassignedidentities.yml +++ b/.github/workflows/ms.managedidentity.userassignedidentities.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.managedservices.registrationdefinitions.yml b/.github/workflows/ms.managedservices.registrationdefinitions.yml index 0e86fc0954..9ede213eb7 100644 --- a/.github/workflows/ms.managedservices.registrationdefinitions.yml +++ b/.github/workflows/ms.managedservices.registrationdefinitions.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.management.managementgroups.yml b/.github/workflows/ms.management.managementgroups.yml index 8ba04b5b2c..079bf04105 100644 --- a/.github/workflows/ms.management.managementgroups.yml +++ b/.github/workflows/ms.management.managementgroups.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.netapp.netappaccounts.yml b/.github/workflows/ms.netapp.netappaccounts.yml index fd90169d92..5d28346635 100644 --- a/.github/workflows/ms.netapp.netappaccounts.yml +++ b/.github/workflows/ms.netapp.netappaccounts.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: @@ -213,4 +213,4 @@ jobs: with: moduleName: '${{ env.moduleName }}' resourceGroupName: '${{ env.resourceGroupName }}' - relativePathOfRemovalScript: 'utilities/resourceRemoval/Remove-NetAppAccount.ps1' + relativePathOfRemovalScript: 'utilities/pipelines/resourceRemoval/Remove-NetAppAccount.ps1' diff --git a/.github/workflows/ms.network.applicationgateways.yml b/.github/workflows/ms.network.applicationgateways.yml index 8b6edad32c..494fc27e7f 100644 --- a/.github/workflows/ms.network.applicationgateways.yml +++ b/.github/workflows/ms.network.applicationgateways.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.network.applicationsecuritygroups.yml b/.github/workflows/ms.network.applicationsecuritygroups.yml index ca26120a19..6ba02f27ea 100644 --- a/.github/workflows/ms.network.applicationsecuritygroups.yml +++ b/.github/workflows/ms.network.applicationsecuritygroups.yml @@ -198,7 +198,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.network.azurefirewalls.yml b/.github/workflows/ms.network.azurefirewalls.yml index af3dd454ba..2a2d21049f 100644 --- a/.github/workflows/ms.network.azurefirewalls.yml +++ b/.github/workflows/ms.network.azurefirewalls.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.network.bastionhosts.yml b/.github/workflows/ms.network.bastionhosts.yml index b87ad9a398..d0e4af006d 100644 --- a/.github/workflows/ms.network.bastionhosts.yml +++ b/.github/workflows/ms.network.bastionhosts.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.network.connections.yml b/.github/workflows/ms.network.connections.yml index 4208889085..ef1c7ce143 100644 --- a/.github/workflows/ms.network.connections.yml +++ b/.github/workflows/ms.network.connections.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.network.ddosprotectionplans.yml b/.github/workflows/ms.network.ddosprotectionplans.yml index b2608016fa..c7d8c1aa80 100644 --- a/.github/workflows/ms.network.ddosprotectionplans.yml +++ b/.github/workflows/ms.network.ddosprotectionplans.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.network.expressroutecircuits.yml b/.github/workflows/ms.network.expressroutecircuits.yml index 48e64a788b..da7aff2ed9 100644 --- a/.github/workflows/ms.network.expressroutecircuits.yml +++ b/.github/workflows/ms.network.expressroutecircuits.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.network.ipgroups.yml b/.github/workflows/ms.network.ipgroups.yml index 7f26bd4714..814af83b82 100644 --- a/.github/workflows/ms.network.ipgroups.yml +++ b/.github/workflows/ms.network.ipgroups.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.network.loadbalancers.yml b/.github/workflows/ms.network.loadbalancers.yml index 7a9e6045b9..8b562bce58 100644 --- a/.github/workflows/ms.network.loadbalancers.yml +++ b/.github/workflows/ms.network.loadbalancers.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.network.localnetworkgateways.yml b/.github/workflows/ms.network.localnetworkgateways.yml index 7177bf8b57..7b2521ef2b 100644 --- a/.github/workflows/ms.network.localnetworkgateways.yml +++ b/.github/workflows/ms.network.localnetworkgateways.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.network.natgateways.yml b/.github/workflows/ms.network.natgateways.yml index 7d00d66163..249ffda46e 100644 --- a/.github/workflows/ms.network.natgateways.yml +++ b/.github/workflows/ms.network.natgateways.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.network.networksecuritygroups.yml b/.github/workflows/ms.network.networksecuritygroups.yml index f3741718e5..988880fa97 100644 --- a/.github/workflows/ms.network.networksecuritygroups.yml +++ b/.github/workflows/ms.network.networksecuritygroups.yml @@ -198,7 +198,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.network.networkwatchers.yml b/.github/workflows/ms.network.networkwatchers.yml index e38e478b59..b4b1d28cbe 100644 --- a/.github/workflows/ms.network.networkwatchers.yml +++ b/.github/workflows/ms.network.networkwatchers.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.network.privatednszones.yml b/.github/workflows/ms.network.privatednszones.yml index 81b03dd104..ffa4b30995 100644 --- a/.github/workflows/ms.network.privatednszones.yml +++ b/.github/workflows/ms.network.privatednszones.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.network.privateendpoints.yml b/.github/workflows/ms.network.privateendpoints.yml index b6d0d29f63..8d57fd9813 100644 --- a/.github/workflows/ms.network.privateendpoints.yml +++ b/.github/workflows/ms.network.privateendpoints.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.network.publicipaddresses.yml b/.github/workflows/ms.network.publicipaddresses.yml index 47fd7b9c77..4f21355b3a 100644 --- a/.github/workflows/ms.network.publicipaddresses.yml +++ b/.github/workflows/ms.network.publicipaddresses.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.network.publicipprefixes.yml b/.github/workflows/ms.network.publicipprefixes.yml index 9711764bfb..13c406ef63 100644 --- a/.github/workflows/ms.network.publicipprefixes.yml +++ b/.github/workflows/ms.network.publicipprefixes.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.network.routetables.yml b/.github/workflows/ms.network.routetables.yml index 791fdd13fa..541cab96f7 100644 --- a/.github/workflows/ms.network.routetables.yml +++ b/.github/workflows/ms.network.routetables.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.network.trafficmanagerprofiles.yml b/.github/workflows/ms.network.trafficmanagerprofiles.yml index 7fe91916a6..851f762447 100644 --- a/.github/workflows/ms.network.trafficmanagerprofiles.yml +++ b/.github/workflows/ms.network.trafficmanagerprofiles.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.network.virtualnetworkgateways.yml b/.github/workflows/ms.network.virtualnetworkgateways.yml index 1240bfa985..2e0a70472c 100644 --- a/.github/workflows/ms.network.virtualnetworkgateways.yml +++ b/.github/workflows/ms.network.virtualnetworkgateways.yml @@ -197,7 +197,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.network.virtualnetworks.yml b/.github/workflows/ms.network.virtualnetworks.yml index 8236eaa43f..650e0c5002 100644 --- a/.github/workflows/ms.network.virtualnetworks.yml +++ b/.github/workflows/ms.network.virtualnetworks.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.network.virtualwans.yml b/.github/workflows/ms.network.virtualwans.yml index 0bd9ffe6d6..71d6de937c 100644 --- a/.github/workflows/ms.network.virtualwans.yml +++ b/.github/workflows/ms.network.virtualwans.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: @@ -213,4 +213,4 @@ jobs: with: moduleName: '${{ env.moduleName }}' resourceGroupName: '${{ env.resourceGroupName }}' - relativePathOfRemovalScript: 'utilities/resourceRemoval/Remove-vWan.ps1' + relativePathOfRemovalScript: 'utilities/pipelines/resourceRemoval/Remove-vWan.ps1' diff --git a/.github/workflows/ms.operationalinsights.workspaces.yml b/.github/workflows/ms.operationalinsights.workspaces.yml index 2d141fb30f..f874d090c0 100644 --- a/.github/workflows/ms.operationalinsights.workspaces.yml +++ b/.github/workflows/ms.operationalinsights.workspaces.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.recoveryservices.vaults.yml b/.github/workflows/ms.recoveryservices.vaults.yml index f971f45f4f..808afef0ae 100644 --- a/.github/workflows/ms.recoveryservices.vaults.yml +++ b/.github/workflows/ms.recoveryservices.vaults.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.resources.deploymentscripts.yml b/.github/workflows/ms.resources.deploymentscripts.yml index ce80c35dbb..4aadb419d2 100644 --- a/.github/workflows/ms.resources.deploymentscripts.yml +++ b/.github/workflows/ms.resources.deploymentscripts.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.resources.resourcegroups.yml b/.github/workflows/ms.resources.resourcegroups.yml index c833490d39..8bdb0337e8 100644 --- a/.github/workflows/ms.resources.resourcegroups.yml +++ b/.github/workflows/ms.resources.resourcegroups.yml @@ -194,7 +194,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.security.azuresecuritycenter.yml b/.github/workflows/ms.security.azuresecuritycenter.yml index fb304bfcaa..e5fda4baca 100644 --- a/.github/workflows/ms.security.azuresecuritycenter.yml +++ b/.github/workflows/ms.security.azuresecuritycenter.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.servicebus.namespaces.yml b/.github/workflows/ms.servicebus.namespaces.yml index 986b8834c2..dc6f6159f0 100644 --- a/.github/workflows/ms.servicebus.namespaces.yml +++ b/.github/workflows/ms.servicebus.namespaces.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.sql.managedinstances.databases.yml b/.github/workflows/ms.sql.managedinstances.databases.yml index 0aa670233b..eed4075169 100644 --- a/.github/workflows/ms.sql.managedinstances.databases.yml +++ b/.github/workflows/ms.sql.managedinstances.databases.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.sql.managedinstances.yml b/.github/workflows/ms.sql.managedinstances.yml index 32f439b7e9..720d6e3b3e 100644 --- a/.github/workflows/ms.sql.managedinstances.yml +++ b/.github/workflows/ms.sql.managedinstances.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.sql.servers.yml b/.github/workflows/ms.sql.servers.yml index 1b54fada92..e374892020 100644 --- a/.github/workflows/ms.sql.servers.yml +++ b/.github/workflows/ms.sql.servers.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.storage.storageaccounts.yml b/.github/workflows/ms.storage.storageaccounts.yml index 991e25ba0f..210a639189 100644 --- a/.github/workflows/ms.storage.storageaccounts.yml +++ b/.github/workflows/ms.storage.storageaccounts.yml @@ -198,7 +198,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.virtualmachineimages.imagetemplates.yml b/.github/workflows/ms.virtualmachineimages.imagetemplates.yml index f2d345325a..275548198d 100644 --- a/.github/workflows/ms.virtualmachineimages.imagetemplates.yml +++ b/.github/workflows/ms.virtualmachineimages.imagetemplates.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.web.connections.yml b/.github/workflows/ms.web.connections.yml index 39320afdf4..25ca8e1f1d 100644 --- a/.github/workflows/ms.web.connections.yml +++ b/.github/workflows/ms.web.connections.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.web.hostingenvironments.yml b/.github/workflows/ms.web.hostingenvironments.yml index 3dd95b90f2..f979c5bfd6 100644 --- a/.github/workflows/ms.web.hostingenvironments.yml +++ b/.github/workflows/ms.web.hostingenvironments.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.web.serverfarms.yml b/.github/workflows/ms.web.serverfarms.yml index 97b67639d8..1e178c3e6b 100644 --- a/.github/workflows/ms.web.serverfarms.yml +++ b/.github/workflows/ms.web.serverfarms.yml @@ -195,7 +195,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/ms.web.sites.yml b/.github/workflows/ms.web.sites.yml index 64b7dbe542..f8b22b2f9e 100644 --- a/.github/workflows/ms.web.sites.yml +++ b/.github/workflows/ms.web.sites.yml @@ -197,7 +197,7 @@ jobs: job_remove_module: runs-on: ubuntu-20.04 name: 'Remove module' - if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.*.result, 'success') || contains(needs.*.result, 'failure')) }} + if: ${{ always() && !cancelled() && needs.job_set_workflow_param.outputs.removeDeployment == 'true' && (contains(needs.job_deploy_module.result, 'success') || contains(needs.job_deploy_module.result, 'failure')) }} needs: - job_deploy_module steps: diff --git a/.github/workflows/platform.dependencies.yml b/.github/workflows/platform.dependencies.yml index 09e7f038bc..7ddfdd46b0 100644 --- a/.github/workflows/platform.dependencies.yml +++ b/.github/workflows/platform.dependencies.yml @@ -9,7 +9,7 @@ on: # paths: # - '.github/actions/templates/**' # - '.github/workflows/platform.dependencies.yml' - # - 'utilities/dependencies/**' + # - 'utilities/pipelines/dependencies/**' env: defaultLocation: 'WestEurope' @@ -50,7 +50,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -113,7 +113,7 @@ jobs: $Settings = Get-Content -Path "$env:GITHUB_WORKSPACE/settings.json" | ConvertFrom-Json # Load used functions . "$env:GITHUB_WORKSPACE/.github/actions/sharedScripts/Set-EnvironmentOnAgent.ps1" - . "$env:GITHUB_WORKSPACE/utilities/tokensReplacement/Set-LocalCustomParameterFileTokensInKeyVault.ps1" + . "$env:GITHUB_WORKSPACE/utilities/pipelines/tokensReplacement/Set-LocalCustomParameterFileTokensInKeyVault.ps1" # Set agent up Set-EnvironmentOnAgent # Create Tokens in Key Vault @@ -149,7 +149,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -178,7 +178,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupNameArtifacts }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -207,7 +207,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -236,7 +236,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -265,7 +265,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -294,7 +294,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -323,7 +323,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -352,7 +352,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -381,7 +381,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -410,7 +410,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -448,7 +448,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -480,7 +480,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -511,7 +511,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -542,7 +542,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -573,7 +573,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -604,7 +604,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -635,7 +635,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -706,7 +706,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -735,7 +735,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/.bicep/nested_rbac_sub.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -764,7 +764,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -802,7 +802,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -831,7 +831,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' @@ -862,7 +862,7 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' diff --git a/arm/.global/global.module.tests.ps1 b/arm/.global/global.module.tests.ps1 index 85f9eaf919..5c2e9f7abf 100644 --- a/arm/.global/global.module.tests.ps1 +++ b/arm/.global/global.module.tests.ps1 @@ -246,7 +246,7 @@ Describe 'Readme tests' -Tag Readme { ($ComparisonFlag -gt 2) | Should -Be $false } - It '[] parameters section should contain all parameters from the deploy.json file' -TestCases $readmeFolderTestCases { + It '[] parameters section should contain all parameters from the template file' -TestCases $readmeFolderTestCases { param( $moduleFolderName, $templateContent, @@ -254,7 +254,7 @@ Describe 'Readme tests' -Tag Readme { ) $ReadmeHTML = ($readMeContent | ConvertFrom-Markdown -ErrorAction SilentlyContinue).Html - $parameters = Get-Member -InputObject $templateContent.parameters -MemberType NoteProperty + $parameters = $templateContent.parameters.Keys $Headings = @(@()) foreach ($H in $ReadmeHTML) { if ($H.Contains('| ', '').Replace('|

', '').Replace('
', '').Split('|')[0].Trim() } - $differentiatingItems = $parameters.Name | Where-Object { $parametersList -notcontains $_ } + $differentiatingItems = $parameters | Where-Object { $parametersList -notcontains $_ } $differentiatingItems.Count | Should -Be 0 -Because ('list of template parameters missing in the ReadMe file [{0}] should be empty' -f ($differentiatingItems -join ',')) } @@ -302,7 +302,7 @@ Describe 'Readme tests' -Tag Readme { $differentiatingItems.Count | Should -Be 0 -Because ('list of "Outputs" table columns missing in the ReadMe file [{0}] should be empty' -f ($differentiatingItems -join ',')) } - It '[] Output section should contain all outputs defined in the deploy.json file' -TestCases $readmeFolderTestCases { + It '[] Output section should contain all outputs defined in the template file' -TestCases $readmeFolderTestCases { param( $moduleFolderName, $templateContent, @@ -413,11 +413,11 @@ Describe 'Deployment template tests' -Tag Template { foreach ($moduleFolderPath in $moduleFolderPathsFiltered) { $deploymentFolderTestCasesException += @{ moduleFolderNameException = $moduleFolderPath.Replace('\', '/').Split('/arm/')[1] - templateContentException = $templateContent + templateContent = $templateContent } } - It '[] The deploy.json file should not be empty' -TestCases $deploymentFolderTestCases { + It '[] the template file should not be empty' -TestCases $deploymentFolderTestCases { param( $moduleFolderName, $templateContent @@ -484,7 +484,7 @@ Describe 'Deployment template tests' -Tag Template { $ApiVersionArray | Should -Not -Contain $false } - It '[] The deploy.json file should contain required elements: schema, contentVersion, resources' -TestCases $deploymentFolderTestCases { + It '[] the template file should contain required elements: schema, contentVersion, resources' -TestCases $deploymentFolderTestCases { param( $moduleFolderName, $templateContent @@ -517,7 +517,7 @@ Describe 'Deployment template tests' -Tag Template { } $CamelCasingFlag = @() - $Parameter = ($templateContent.parameters | Get-Member | Where-Object { $_.MemberType -eq 'NoteProperty' }).Name + $Parameter = $templateContent.parameters.keys foreach ($Param in $Parameter) { if ($Param.substring(0, 1) -cnotmatch '[a-z]' -or $Param -match '-' -or $Param -match '_') { $CamelCasingFlag += $false @@ -540,7 +540,7 @@ Describe 'Deployment template tests' -Tag Template { } $CamelCasingFlag = @() - $Variable = ($templateContent.variables | Get-Member | Where-Object { $_.MemberType -eq 'NoteProperty' }).Name + $Variable = $templateContent.variables.Keys foreach ($Variab in $Variable) { if ($Variab.substring(0, 1) -cnotmatch '[a-z]' -or $Variab -match '-') { @@ -558,7 +558,7 @@ Describe 'Deployment template tests' -Tag Template { $templateContent ) $CamelCasingFlag = @() - $Outputs = ($templateContent.outputs | Get-Member | Where-Object { $_.MemberType -eq 'NoteProperty' }).Name + $Outputs = $templateContent.outputs.Keys foreach ($Output in $Outputs) { if ($Output.substring(0, 1) -cnotmatch '[a-z]' -or $Output -match '-' -or $Output -match '_') { @@ -595,8 +595,8 @@ Describe 'Deployment template tests' -Tag Template { $LocationFlag = $true $Schemaverion = $templateContent.'$schema' if ((($Schemaverion.Split('/')[5]).Split('.')[0]) -eq (($RGdeployment.Split('/')[5]).Split('.')[0])) { - $Locationparamoutputvalue = $templateContent.parameters.Location.defaultValue - $Locationparamoutput = ($templateContent.parameters | Get-Member | Where-Object { $_.MemberType -eq 'NoteProperty' }).Name + $Locationparamoutputvalue = $templateContent.parameters.location.defaultValue + $Locationparamoutput = $templateContent.parameters.keys if ($Locationparamoutput -contains 'Location') { if ($Locationparamoutputvalue -eq '[resourceGroup().Location]' -or $Locationparamoutputvalue -eq 'global') { $LocationFlag = $true @@ -612,24 +612,24 @@ Describe 'Deployment template tests' -Tag Template { It "[] All resources that have a Location property should refer to the Location parameter 'parameters('Location')'" -TestCases $deploymentFolderTestCasesException { param( $moduleFolderNameException, - $templateContentException + $templateContent ) $LocationParamFlag = @() $Locmandoutput = $templateContent.resources foreach ($Locmand in $Locmandoutput) { - if (($Locmand | Get-Member | Where-Object { $_.MemberType -eq 'NoteProperty' }).Name -contains 'Location' -and $Locmand.Location -eq "[parameters('Location')]") { + if ($Locmand.Keys -contains 'Location' -and $Locmand.Location -eq "[parameters('Location')]") { $LocationParamFlag += $true - } elseif (($Locmand | Get-Member | Where-Object { $_.MemberType -eq 'NoteProperty' }).Name -notcontains 'Location') { + } elseif ($Locmand.Keys -notcontains 'Location') { $LocationParamFlag += $true - } elseif (($Locmand | Get-Member | Where-Object { $_.MemberType -eq 'NoteProperty' }).Name -notcontains 'resourceGroup') { + } elseif ($Locmand.Keys -notcontains 'resourceGroup') { $LocationParamFlag += $true } else { $LocationParamFlag += $false } foreach ($Locm in $Locmand.resources) { - if (($Locm | Get-Member | Where-Object { $_.MemberType -eq 'NoteProperty' }).Name -contains 'Location' -and $Locm.Location -eq "[parameters('Location')]") { + if ($Locm.Keys -contains 'Location' -and $Locm.Location -eq "[parameters('Location')]") { $LocationParamFlag += $true - } elseif (($Locm | Get-Member | Where-Object { $_.MemberType -eq 'NoteProperty' }).Name -notcontains 'Location') { + } elseif ($Locm.Keys -notcontains 'Location') { $LocationParamFlag += $true } else { $LocationParamFlag += $false @@ -676,7 +676,7 @@ Describe 'Deployment template tests' -Tag Template { } $ParamDescriptionFlag = @() - $Paramdescoutput = ($templateContent.parameters | Get-Member | Where-Object { $_.MemberType -eq 'NoteProperty' }).Name + $Paramdescoutput = $templateContent.parameters.keys foreach ($Param in $Paramdescoutput) { $Data = ($templateContent.parameters.$Param.metadata).description if ($Data -like 'Optional. [a-zA-Z]*' -or $Data -like 'Required. [a-zA-Z]*' -or $Data -like 'Generated. [a-zA-Z]*') { diff --git a/arm/Microsoft.AnalysisServices/servers/.parameters/min.parameters.json b/arm/Microsoft.AnalysisServices/servers/.parameters/min.parameters.json new file mode 100644 index 0000000000..c5ac3e471b --- /dev/null +++ b/arm/Microsoft.AnalysisServices/servers/.parameters/min.parameters.json @@ -0,0 +1,9 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "analysisServicesName": { + "value": "sxxazasweux003" + } + } +} diff --git a/arm/Microsoft.Compute/virtualMachines/.parameters/min.parameters.json b/arm/Microsoft.Compute/virtualMachines/.parameters/min.parameters.json new file mode 100644 index 0000000000..cb456b2c63 --- /dev/null +++ b/arm/Microsoft.Compute/virtualMachines/.parameters/min.parameters.json @@ -0,0 +1,53 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "virtualMachineName": { + "value": "sxx-vm-002" + }, + "osDisk": { + "value": { + "createOption": "fromImage", + "diskSizeGB": "128", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + }, + "imageReference": { + "value": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + } + }, + "adminUsername": { + "value": "localAdminUser" + }, + "adminPassword": { + "reference": { + "keyVault": { + "id": "/subscriptions/<>/resourceGroups/validation-rg/providers/Microsoft.KeyVault/vaults/adp-sxx-az-kv-x-001" + }, + "secretName": "adminPassword" + } + }, + "nicConfigurations": { + "value": [ + { + "nicSuffix": "-nic-01", + "ipConfigurations": [ + { + "name": "ipconfig01", + "subnetId": "/subscriptions/<>/resourceGroups/validation-rg/providers/Microsoft.Network/virtualNetworks/adp-sxx-az-vnet-x-001/subnets/sxx-az-subnet-x-001", + "pipConfiguration": { + "publicIpNameSuffix": "-pip-01" + } + } + ] + } + ] + } + } +} diff --git a/arm/Microsoft.Compute/virtualMachines/deploy.bicep b/arm/Microsoft.Compute/virtualMachines/deploy.bicep index ebe778a4f2..fd6a259fd6 100644 --- a/arm/Microsoft.Compute/virtualMachines/deploy.bicep +++ b/arm/Microsoft.Compute/virtualMachines/deploy.bicep @@ -8,8 +8,8 @@ param vmComputerNamesTransformation string = 'none' @description('Optional. Specifies the size for the VMs') param vmSize string = 'Standard_D2s_v3' -@description('Optional. OS image reference. In case of marketplace images, it\'s the combination of the publisher, offer, sku, version attributes. In case of custom images it\'s the resource ID of the custom image.') -param imageReference object = {} +@description('Required. OS image reference. In case of marketplace images, it\'s the combination of the publisher, offer, sku, version attributes. In case of custom images it\'s the resource ID of the custom image.') +param imageReference object @description('Optional. Specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can use a marketplace image from an API, you must enable the image for programmatic use.') param plan object = {} diff --git a/arm/Microsoft.Compute/virtualMachines/readme.md b/arm/Microsoft.Compute/virtualMachines/readme.md index 63ab44545c..66053f38bf 100644 --- a/arm/Microsoft.Compute/virtualMachines/readme.md +++ b/arm/Microsoft.Compute/virtualMachines/readme.md @@ -61,7 +61,7 @@ This module deploys one Virtual Machine with one or multiple nics and optionally | `eventHubAuthorizationRuleId` | string | | | Optional. Resource ID of the event hub authorization rule for the Event Hubs namespace in which the event hub should be created or streamed to. | | `eventHubName` | string | | | Optional. Name of the event hub within the namespace to which logs are streamed. Without this, an event hub is created for each log category. | | `forceUpdateTag` | string | `1.0` | | Optional. Pass in an unique value like a GUID everytime the operation needs to be force run | -| `imageReference` | object | `{object}` | | Optional. OS image reference. In case of marketplace images, it's the combination of the publisher, offer, sku, version attributes. In case of custom images it's the resource ID of the custom image. | +| `imageReference` | object | `{object}` | | Required. OS image reference. In case of marketplace images, it's the combination of the publisher, offer, sku, version attributes. In case of custom images it's the resource ID of the custom image. | | `licenseType` | string | | `[Windows_Client, Windows_Server, ]` | Optional. Specifies that the image or disk that is being used was licensed on-premises. This element is only used for images that contain the Windows Server operating system. | | `linuxConfiguration` | object | `{object}` | | Optional. Specifies the Linux operating system settings on the virtual machine. | | `location` | string | `[resourceGroup().location]` | | Optional. Location for all resources. | diff --git a/arm/README.md b/arm/README.md index 22528ebc33..2dd542c49a 100644 --- a/arm/README.md +++ b/arm/README.md @@ -6,95 +6,95 @@ The following table provides you with an outline of all Modules that are current | Name | Provider namespace | Resource Type | | - | - | - | -| [Analysis Services](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.AnalysisServices/servers) | `MS.AnalysisServices` | [servers](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.AnalysisServices/servers) | -| [Api Management](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/service) | `MS.ApiManagement` | [service](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/service) | -| [Api Management Service Apis](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/apis) | | [service/apis](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/apis) | -| [Api Management Service Authorization Servers](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/authorizationServers) | | [service/authorizationServers](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/authorizationServers) | -| [Api Management Service Backends](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/backends) | | [service/backends](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/backends) | -| [Api Management Service Cache](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/caches) | | [service/caches](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/caches) | -| [Api Management Service Named Values](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/namedValues) | | [service/namedValues](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/namedValues) | -| [Api Management Service Products](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/products) | | [service/products](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/products) | -| [Api Management Subscriptions](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/subscriptions) | | [service/subscriptions](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/subscriptions) | -| [PolicyAssignment](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/policyAssignments) | `MS.Authorization` | [policyAssignments](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/policyAssignments) | -| [PolicyDefinition](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/policyDefinitions) | | [policyDefinitions](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/policyDefinitions) | -| [PolicyExemption](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/policyExemptions) | | [policyExemptions](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/policyExemptions) | -| [policySetDefinition](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/policySetDefinitions) | | [policySetDefinitions](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/policySetDefinitions) | -| [Role Assignments](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/roleAssignments) | | [roleAssignments](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/roleAssignments) | -| [Role Definitions](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/roleDefinitions) | | [roleDefinitions](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/roleDefinitions) | -| [AutoManage](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Automanage/accounts) | `MS.Automanage` | [accounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Automanage/accounts) | -| [Automation Accounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Automation/automationAccounts) | `MS.Automation` | [automationAccounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Automation/automationAccounts) | -| [Software Update Configuration](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Automation/automationAccountsResources/softwareUpdateConfigurations) | | [automationAccounts/softwareUpdateConfigurations](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Automation/automationAccountsResources/softwareUpdateConfigurations) | -| [Batch Accounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Batch/batchAccounts) | `MS.Batch` | [batchAccounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Batch/batchAccounts) | -| [CognitiveServices](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.CognitiveServices/accounts) | `MS.CognitiveServices` | [accounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.CognitiveServices/accounts) | -| [AvailabilitySet](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/availabilitySets) | `MS.Compute` | [availabilitySets](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/availabilitySets) | -| [DiskEncryptionSet](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/diskEncryptionSets) | | [diskEncryptionSets](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/diskEncryptionSets) | -| [Shared Image Gallery](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/galleries) | | [galleries](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/galleries) | -| [Shared Image Definition](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/galleriesResources/images) | | [galleries/images](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/galleriesResources/images) | -| [Image](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/images) | | [images](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/images) | -| [ProximityPlacementGroup](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/proximityPlacementGroups) | | [proximityPlacementGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/proximityPlacementGroups) | -| [Virtual Machines](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/virtualMachines) | | [virtualMachines](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/virtualMachines) | -| [Virtual Machine Scale Sets](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/virtualMachineScaleSets) | | [virtualMachineScaleSets](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/virtualMachineScaleSets) | -| [Budgets](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Consumption/budgets) | `MS.Consumption` | [budgets](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Consumption/budgets) | -| [ContainerInstances](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ContainerInstance/containerGroups) | `MS.ContainerInstance` | [containerGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ContainerInstance/containerGroups) | -| [ContainerRegistry](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ContainerRegistry/registries) | `MS.ContainerRegistry` | [registries](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ContainerRegistry/registries) | -| [AzureKubernetesService](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ContainerService/managedClusters) | `MS.ContainerService` | [managedClusters](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ContainerService/managedClusters) | -| [Azure Databricks](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Databricks/workspaces) | `MS.Databricks` | [workspaces](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Databricks/workspaces) | -| [DataFactory](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DataFactory/factories) | `MS.DataFactory` | [factories](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DataFactory/factories) | -| [AVD Application Groups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/applicationgroups) | `MS.DesktopVirtualization` | [applicationgroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/applicationgroups) | -| [AVD HostPools](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/hostpools) | | [hostpools](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/hostpools) | -| [AVD Workspaces](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/workspaces) | | [workspaces](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/workspaces) | -| [DocumentDB Database Account](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DocumentDB/databaseAccounts) | `MS.DocumentDB` | [databaseAccounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DocumentDB/databaseAccounts) | -| [Event Grid](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.EventGrid/topics) | `MS.EventGrid` | [topics](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.EventGrid/topics) | -| [EventHub Namespace](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.EventHub/namespaces) | `MS.EventHub` | [namespaces](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.EventHub/namespaces) | -| [Azure Health Bot](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.HealthBot/healthBots) | `MS.HealthBot` | [healthBots](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.HealthBot/healthBots) | -| [Action Group](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/actionGroups) | `MS.Insights` | [actionGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/actionGroups) | -| [Activity Log Alert](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/activityLogAlerts) | | [activityLogAlerts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/activityLogAlerts) | -| [Application Insights](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/components) | | [components](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/components) | -| [ActivityLog](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/diagnosticSettings) | | [diagnosticSettings](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/diagnosticSettings) | -| [Metric Alert](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/metricAlerts) | | [metricAlerts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/metricAlerts) | -| [Azure Monitor Private Link Scope](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/privateLinkScopes) | | [privateLinkScopes](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/privateLinkScopes) | -| [Scheduled Query Rules](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/scheduledQueryRules) | | [scheduledQueryRules](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/scheduledQueryRules) | -| [KeyVault](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.KeyVault/vaults) | `MS.KeyVault` | [vaults](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.KeyVault/vaults) | -| [LogicApp](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Logic/workflows) | `MS.Logic` | [workflows](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Logic/workflows) | -| [Machine Learning Services](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.MachineLearningServices/workspaces) | `MS.achineLearningServices` | [workspaces](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.MachineLearningServices/workspaces) | -| [User Assigned Identities](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ManagedIdentity/userAssignedIdentities) | `MS.anagedIdentity` | [userAssignedIdentities](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ManagedIdentity/userAssignedIdentities) | -| [registrationDefinitions](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ManagedServices/registrationDefinitions) | `MS.anagedServices` | [registrationDefinitions](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ManagedServices/registrationDefinitions) | -| [Management groups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Management/managementGroups) | `MS.anagement` | [managementGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Management/managementGroups) | -| [AzureNetAppFiles](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.NetApp/netAppAccounts) | `MS.NetApp` | [netAppAccounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.NetApp/netAppAccounts) | -| [ApplicationGateway](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/applicationGateways) | `MS.Network` | [applicationGateways](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/applicationGateways) | -| [ApplicationSecurityGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/applicationSecurityGroups) | | [applicationSecurityGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/applicationSecurityGroups) | -| [AzureFirewall](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/azureFirewalls) | | [azureFirewalls](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/azureFirewalls) | -| [AzureBastion](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/bastionHosts) | | [bastionHosts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/bastionHosts) | -| [VirtualNetworkGatewayConnection](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/connections) | | [connections](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/connections) | -| [DDoS Protection Plans](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/ddosProtectionPlans) | | [ddosProtectionPlans](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/ddosProtectionPlans) | -| [ExpressRoute Circuit](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/expressRouteCircuits) | | [expressRouteCircuits](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/expressRouteCircuits) | -| [IP Groups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/ipGroups) | | [ipGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/ipGroups) | -| [LoadBalancer](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/loadBalancers) | | [loadBalancers](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/loadBalancers) | -| [Local Network Gateway](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/localNetworkGateways) | | [localNetworkGateways](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/localNetworkGateways) | -| [NAT Gateway](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/natGateways) | | [natGateways](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/natGateways) | -| [NetworkSecurityGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/networkSecurityGroups) | | [networkSecurityGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/networkSecurityGroups) | -| [Network Watcher](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/networkWatchers) | | [networkWatchers](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/networkWatchers) | -| [PrivateDnsZones](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/privateDnsZones) | | [privateDnsZones](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/privateDnsZones) | -| [PrivateEndpoints](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/privateEndpoints) | | [privateEndpoints](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/privateEndpoints) | -| [Public IP Addresses](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/publicIPAddresses) | | [publicIPAddresses](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/publicIPAddresses) | -| [Public IP Prefixes](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/publicIPPrefixes) | | [publicIPPrefixes](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/publicIPPrefixes) | -| [RouteTables](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/routeTables) | | [routeTables](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/routeTables) | -| [TrafficManager](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/trafficmanagerprofiles) | | [trafficmanagerprofiles](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/trafficmanagerprofiles) | -| [VirtualNetworkGateway](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/virtualNetworkGateways) | | [virtualNetworkGateways](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/virtualNetworkGateways) | -| [Virtual Network](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/virtualNetworks) | | [virtualNetworks](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/virtualNetworks) | -| [Virtual Wan](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/virtualWans) | | [virtualWans](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/virtualWans) | -| [LogAnalytics](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.OperationalInsights/workspaces) | `MS.OperationalInsights` | [workspaces](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.OperationalInsights/workspaces) | -| [RecoveryServicesVaults](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.RecoveryServices/vaults) | `MS.RecoveryServices` | [vaults](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.RecoveryServices/vaults) | -| [Deployment Scripts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Resources/deploymentScripts) | `MS.Resources` | [deploymentScripts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Resources/deploymentScripts) | -| [Resource Group](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Resources/resourceGroups) | | [resourceGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Resources/resourceGroups) | -| [AzureSecurityCenter](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Security/azureSecurityCenter) | `MS.Security` | [azureSecurityCenter](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Security/azureSecurityCenter) | -| [ServiceBusNamespaces](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ServiceBus/namespaces) | `MS.ServiceBus` | [namespaces](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ServiceBus/namespaces) | -| [SQL Managed Instances](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Sql/managedInstances) | `MS.Sql` | [managedInstances](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Sql/managedInstances) | -| [SQL Managed Instances Database](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Sql/managedInstancesResources/databases) | | [managedInstances/databases](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Sql/managedInstancesResources/databases) | -| [AzureSQLServer](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Sql/servers) | | [servers](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Sql/servers) | -| [StorageAccounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Storage/storageAccounts) | `MS.Storage` | [storageAccounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Storage/storageAccounts) | -| [Image Templates](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.VirtualMachineImages/imageTemplates) | `MS.VirtualMachineImages` | [imageTemplates](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.VirtualMachineImages/imageTemplates) | -| [API Connection](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Web/connections) | `MS.Web` | [connections](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Web/connections) | -| [App Service Environment](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Web/hostingEnvironments) | | [hostingEnvironments](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Web/hostingEnvironments) | -| [AppServicePlan](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Web/serverfarms) | | [serverfarms](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Web/serverfarms) | -| [Web/Function App](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Web/sites) | | [sites](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Web/sites) | +| [Analysis Services](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.AnalysisServices/servers) | `MS.AnalysisServices` | [servers](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.AnalysisServices/servers) | +| [Api Management](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/service) | `MS.ApiManagement` | [service](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/service) | +| [Api Management Service Apis](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/apis) | | [service/apis](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/apis) | +| [Api Management Service Authorization Servers](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/authorizationServers) | | [service/authorizationServers](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/authorizationServers) | +| [Api Management Service Backends](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/backends) | | [service/backends](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/backends) | +| [Api Management Service Cache](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/caches) | | [service/caches](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/caches) | +| [Api Management Service Named Values](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/namedValues) | | [service/namedValues](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/namedValues) | +| [Api Management Service Products](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/products) | | [service/products](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/products) | +| [Api Management Subscriptions](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/subscriptions) | | [service/subscriptions](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/subscriptions) | +| [PolicyAssignment](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/policyAssignments) | `MS.Authorization` | [policyAssignments](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/policyAssignments) | +| [PolicyDefinition](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/policyDefinitions) | | [policyDefinitions](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/policyDefinitions) | +| [PolicyExemption](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/policyExemptions) | | [policyExemptions](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/policyExemptions) | +| [policySetDefinition](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/policySetDefinitions) | | [policySetDefinitions](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/policySetDefinitions) | +| [Role Assignments](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/roleAssignments) | | [roleAssignments](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/roleAssignments) | +| [Role Definitions](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/roleDefinitions) | | [roleDefinitions](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/roleDefinitions) | +| [AutoManage](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Automanage/accounts) | `MS.Automanage` | [accounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Automanage/accounts) | +| [AutomationAccounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Automation/automationAccounts) | `MS.Automation` | [automationAccounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Automation/automationAccounts) | +| [Software Update Configuration](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Automation/automationAccountsResources/softwareUpdateConfigurations) | | [automationAccounts/softwareUpdateConfigurations](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Automation/automationAccountsResources/softwareUpdateConfigurations) | +| [Batch Accounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Batch/batchAccounts) | `MS.Batch` | [batchAccounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Batch/batchAccounts) | +| [CognitiveServices](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.CognitiveServices/accounts) | `MS.CognitiveServices` | [accounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.CognitiveServices/accounts) | +| [AvailabilitySet](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/availabilitySets) | `MS.Compute` | [availabilitySets](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/availabilitySets) | +| [DiskEncryptionSet](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/diskEncryptionSets) | | [diskEncryptionSets](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/diskEncryptionSets) | +| [Shared Image Gallery](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/galleries) | | [galleries](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/galleries) | +| [Shared Image Definition](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/galleriesResources/images) | | [galleries/images](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/galleriesResources/images) | +| [Image](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/images) | | [images](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/images) | +| [ProximityPlacementGroup](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/proximityPlacementGroups) | | [proximityPlacementGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/proximityPlacementGroups) | +| [Virtual Machines](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/virtualMachines) | | [virtualMachines](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/virtualMachines) | +| [Virtual Machine Scale Sets](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/virtualMachineScaleSets) | | [virtualMachineScaleSets](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/virtualMachineScaleSets) | +| [Budgets](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Consumption/budgets) | `MS.Consumption` | [budgets](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Consumption/budgets) | +| [ContainerInstances](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ContainerInstance/containerGroups) | `MS.ContainerInstance` | [containerGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ContainerInstance/containerGroups) | +| [ContainerRegistry](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ContainerRegistry/registries) | `MS.ContainerRegistry` | [registries](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ContainerRegistry/registries) | +| [AzureKubernetesService](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ContainerService/managedClusters) | `MS.ContainerService` | [managedClusters](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ContainerService/managedClusters) | +| [Azure Databricks](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Databricks/workspaces) | `MS.Databricks` | [workspaces](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Databricks/workspaces) | +| [DataFactory](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DataFactory/factories) | `MS.DataFactory` | [factories](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DataFactory/factories) | +| [AVD Application Groups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/applicationgroups) | `MS.DesktopVirtualization` | [applicationgroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/applicationgroups) | +| [AVD HostPools](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/hostpools) | | [hostpools](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/hostpools) | +| [AVD Workspaces](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/workspaces) | | [workspaces](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/workspaces) | +| [DocumentDB Database Account](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DocumentDB/databaseAccounts) | `MS.DocumentDB` | [databaseAccounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DocumentDB/databaseAccounts) | +| [Event Grid](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.EventGrid/topics) | `MS.EventGrid` | [topics](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.EventGrid/topics) | +| [EventHub Namespace](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.EventHub/namespaces) | `MS.EventHub` | [namespaces](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.EventHub/namespaces) | +| [Azure Health Bot](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.HealthBot/healthBots) | `MS.HealthBot` | [healthBots](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.HealthBot/healthBots) | +| [Action Group](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/actionGroups) | `MS.Insights` | [actionGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/actionGroups) | +| [Activity Log Alert](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/activityLogAlerts) | | [activityLogAlerts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/activityLogAlerts) | +| [Application Insights](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/components) | | [components](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/components) | +| [ActivityLog](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/diagnosticSettings) | | [diagnosticSettings](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/diagnosticSettings) | +| [Metric Alert](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/metricAlerts) | | [metricAlerts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/metricAlerts) | +| [Azure Monitor Private Link Scope](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/privateLinkScopes) | | [privateLinkScopes](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/privateLinkScopes) | +| [Scheduled Query Rules](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/scheduledQueryRules) | | [scheduledQueryRules](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/scheduledQueryRules) | +| [KeyVault](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.KeyVault/vaults) | `MS.KeyVault` | [vaults](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.KeyVault/vaults) | +| [LogicApp](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Logic/workflows) | `MS.Logic` | [workflows](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Logic/workflows) | +| [Machine Learning Services](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.MachineLearningServices/workspaces) | `MS.achineLearningServices` | [workspaces](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.MachineLearningServices/workspaces) | +| [User Assigned Identities](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ManagedIdentity/userAssignedIdentities) | `MS.anagedIdentity` | [userAssignedIdentities](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ManagedIdentity/userAssignedIdentities) | +| [registrationDefinitions](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ManagedServices/registrationDefinitions) | `MS.anagedServices` | [registrationDefinitions](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ManagedServices/registrationDefinitions) | +| [Management groups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Management/managementGroups) | `MS.anagement` | [managementGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Management/managementGroups) | +| [AzureNetAppFiles](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.NetApp/netAppAccounts) | `MS.NetApp` | [netAppAccounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.NetApp/netAppAccounts) | +| [ApplicationGateway](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/applicationGateways) | `MS.Network` | [applicationGateways](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/applicationGateways) | +| [ApplicationSecurityGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/applicationSecurityGroups) | | [applicationSecurityGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/applicationSecurityGroups) | +| [AzureFirewall](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/azureFirewalls) | | [azureFirewalls](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/azureFirewalls) | +| [AzureBastion](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/bastionHosts) | | [bastionHosts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/bastionHosts) | +| [VirtualNetworkGatewayConnection](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/connections) | | [connections](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/connections) | +| [DDoS Protection Plans](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/ddosProtectionPlans) | | [ddosProtectionPlans](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/ddosProtectionPlans) | +| [ExpressRoute Circuit](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/expressRouteCircuits) | | [expressRouteCircuits](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/expressRouteCircuits) | +| [IP Groups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/ipGroups) | | [ipGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/ipGroups) | +| [LoadBalancer](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/loadBalancers) | | [loadBalancers](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/loadBalancers) | +| [Local Network Gateway](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/localNetworkGateways) | | [localNetworkGateways](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/localNetworkGateways) | +| [NAT Gateway](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/natGateways) | | [natGateways](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/natGateways) | +| [NetworkSecurityGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/networkSecurityGroups) | | [networkSecurityGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/networkSecurityGroups) | +| [Network Watcher](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/networkWatchers) | | [networkWatchers](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/networkWatchers) | +| [PrivateDnsZones](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/privateDnsZones) | | [privateDnsZones](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/privateDnsZones) | +| [PrivateEndpoints](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/privateEndpoints) | | [privateEndpoints](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/privateEndpoints) | +| [Public IP Addresses](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/publicIPAddresses) | | [publicIPAddresses](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/publicIPAddresses) | +| [Public IP Prefixes](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/publicIPPrefixes) | | [publicIPPrefixes](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/publicIPPrefixes) | +| [RouteTables](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/routeTables) | | [routeTables](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/routeTables) | +| [TrafficManager](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/trafficmanagerprofiles) | | [trafficmanagerprofiles](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/trafficmanagerprofiles) | +| [VirtualNetworkGateway](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/virtualNetworkGateways) | | [virtualNetworkGateways](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/virtualNetworkGateways) | +| [Virtual Network](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/virtualNetworks) | | [virtualNetworks](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/virtualNetworks) | +| [Virtual Wan](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/virtualWans) | | [virtualWans](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/virtualWans) | +| [LogAnalytics](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.OperationalInsights/workspaces) | `MS.OperationalInsights` | [workspaces](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.OperationalInsights/workspaces) | +| [RecoveryServicesVaults](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.RecoveryServices/vaults) | `MS.RecoveryServices` | [vaults](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.RecoveryServices/vaults) | +| [Deployment Scripts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Resources/deploymentScripts) | `MS.Resources` | [deploymentScripts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Resources/deploymentScripts) | +| [Resource Group](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Resources/resourceGroups) | | [resourceGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Resources/resourceGroups) | +| [AzureSecurityCenter](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Security/azureSecurityCenter) | `MS.Security` | [azureSecurityCenter](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Security/azureSecurityCenter) | +| [ServiceBusNamespaces](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ServiceBus/namespaces) | `MS.ServiceBus` | [namespaces](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ServiceBus/namespaces) | +| [SQL Managed Instances](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Sql/managedInstances) | `MS.Sql` | [managedInstances](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Sql/managedInstances) | +| [SQL Managed Instances Database](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Sql/managedInstancesResources/databases) | | [managedInstances/databases](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Sql/managedInstancesResources/databases) | +| [AzureSQLServer](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Sql/servers) | | [servers](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Sql/servers) | +| [StorageAccounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Storage/storageAccounts) | `MS.Storage` | [storageAccounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Storage/storageAccounts) | +| [Image Templates](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.VirtualMachineImages/imageTemplates) | `MS.VirtualMachineImages` | [imageTemplates](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.VirtualMachineImages/imageTemplates) | +| [API Connection](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Web/connections) | `MS.Web` | [connections](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Web/connections) | +| [App Service Environment](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Web/hostingEnvironments) | | [hostingEnvironments](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Web/hostingEnvironments) | +| [AppServicePlan](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Web/serverfarms) | | [serverfarms](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Web/serverfarms) | +| [Web/Function App](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Web/sites) | | [sites](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Web/sites) | diff --git a/utilities/dependencies/Microsoft.ApiManagement/service/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.ApiManagement/service/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.ApiManagement/service/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.ApiManagement/service/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.Authorization/roleAssignments/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Authorization/roleAssignments/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Authorization/roleAssignments/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.Authorization/roleAssignments/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.Compute/galleries/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Compute/galleries/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Compute/galleries/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.Compute/galleries/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.Compute/galleriesResources/images/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Compute/galleriesResources/images/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Compute/galleriesResources/images/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.Compute/galleriesResources/images/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.Compute/virtualMachines/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Compute/virtualMachines/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Compute/virtualMachines/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.Compute/virtualMachines/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.ContainerRegistry/registries/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.ContainerRegistry/registries/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.ContainerRegistry/registries/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.ContainerRegistry/registries/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.DesktopVirtualization/applicationgroups/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.DesktopVirtualization/applicationgroups/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.DesktopVirtualization/applicationgroups/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.DesktopVirtualization/applicationgroups/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.DesktopVirtualization/hostpools/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.DesktopVirtualization/hostpools/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.DesktopVirtualization/hostpools/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.DesktopVirtualization/hostpools/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.EventHub/namespaces/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.EventHub/namespaces/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.EventHub/namespaces/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.EventHub/namespaces/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.EventHub/namespacesResources/eventhubs/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.EventHub/namespacesResources/eventhubs/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.EventHub/namespacesResources/eventhubs/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.EventHub/namespacesResources/eventhubs/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.Insights/actionGroups/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Insights/actionGroups/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Insights/actionGroups/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.Insights/actionGroups/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.Insights/components/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Insights/components/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Insights/components/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.Insights/components/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.KeyVault/vaults/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.KeyVault/vaults/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.KeyVault/vaults/parameters/platform.parameters.json b/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/platform.parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.KeyVault/vaults/parameters/platform.parameters.json rename to utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/platform.parameters.json diff --git a/utilities/dependencies/Microsoft.ManagedIdentity/userAssignedIdentities/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.ManagedIdentity/userAssignedIdentities/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.ManagedIdentity/userAssignedIdentities/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.ManagedIdentity/userAssignedIdentities/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.Network/applicationSecurityGroups/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/applicationSecurityGroups/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Network/applicationSecurityGroups/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.Network/applicationSecurityGroups/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.Network/networkSecurityGroups/parameters/apgw.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/apgw.parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Network/networkSecurityGroups/parameters/apgw.parameters.json rename to utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/apgw.parameters.json diff --git a/utilities/dependencies/Microsoft.Network/networkSecurityGroups/parameters/ase.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/ase.parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Network/networkSecurityGroups/parameters/ase.parameters.json rename to utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/ase.parameters.json diff --git a/utilities/dependencies/Microsoft.Network/networkSecurityGroups/parameters/bastion.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/bastion.parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Network/networkSecurityGroups/parameters/bastion.parameters.json rename to utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/bastion.parameters.json diff --git a/utilities/dependencies/Microsoft.Network/networkSecurityGroups/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Network/networkSecurityGroups/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.Network/networkSecurityGroups/parameters/sqlmi.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/sqlmi.parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Network/networkSecurityGroups/parameters/sqlmi.parameters.json rename to utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/sqlmi.parameters.json diff --git a/utilities/dependencies/Microsoft.Network/networkWatchers/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/networkWatchers/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Network/networkWatchers/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.Network/networkWatchers/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.Network/privateDnsZones/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/privateDnsZones/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Network/privateDnsZones/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.Network/privateDnsZones/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.Network/publicIPAddresses/parameters/apgw.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/apgw.parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Network/publicIPAddresses/parameters/apgw.parameters.json rename to utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/apgw.parameters.json diff --git a/utilities/dependencies/Microsoft.Network/publicIPAddresses/parameters/bas.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/bas.parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Network/publicIPAddresses/parameters/bas.parameters.json rename to utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/bas.parameters.json diff --git a/utilities/dependencies/Microsoft.Network/publicIPAddresses/parameters/lb.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/lb.parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Network/publicIPAddresses/parameters/lb.parameters.json rename to utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/lb.parameters.json diff --git a/utilities/dependencies/Microsoft.Network/routeTables/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/routeTables/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Network/routeTables/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.Network/routeTables/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.Network/virtualNetworks/parameters/2.vnetpeer01.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/2.vnetpeer01.parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Network/virtualNetworks/parameters/2.vnetpeer01.parameters.json rename to utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/2.vnetpeer01.parameters.json diff --git a/utilities/dependencies/Microsoft.Network/virtualNetworks/parameters/3.vnetpeer02.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/3.vnetpeer02.parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Network/virtualNetworks/parameters/3.vnetpeer02.parameters.json rename to utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/3.vnetpeer02.parameters.json diff --git a/utilities/dependencies/Microsoft.Network/virtualNetworks/parameters/4.azfw.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/4.azfw.parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Network/virtualNetworks/parameters/4.azfw.parameters.json rename to utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/4.azfw.parameters.json diff --git a/utilities/dependencies/Microsoft.Network/virtualNetworks/parameters/5.aks.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/5.aks.parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Network/virtualNetworks/parameters/5.aks.parameters.json rename to utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/5.aks.parameters.json diff --git a/utilities/dependencies/Microsoft.Network/virtualNetworks/parameters/6.sqlmi.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/6.sqlmi.parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Network/virtualNetworks/parameters/6.sqlmi.parameters.json rename to utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/6.sqlmi.parameters.json diff --git a/utilities/dependencies/Microsoft.Network/virtualNetworks/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Network/virtualNetworks/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.OperationalInsights/workspaces/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.OperationalInsights/workspaces/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.OperationalInsights/workspaces/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.OperationalInsights/workspaces/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.RecoveryServices/vaults/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.RecoveryServices/vaults/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.RecoveryServices/vaults/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.RecoveryServices/vaults/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.Resources/resourceGroups/parameters/artifacts.parameters.json b/utilities/pipelines/dependencies/Microsoft.Resources/resourceGroups/parameters/artifacts.parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Resources/resourceGroups/parameters/artifacts.parameters.json rename to utilities/pipelines/dependencies/Microsoft.Resources/resourceGroups/parameters/artifacts.parameters.json diff --git a/utilities/dependencies/Microsoft.Resources/resourceGroups/parameters/platform-core.parameters.json b/utilities/pipelines/dependencies/Microsoft.Resources/resourceGroups/parameters/platform-core.parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Resources/resourceGroups/parameters/platform-core.parameters.json rename to utilities/pipelines/dependencies/Microsoft.Resources/resourceGroups/parameters/platform-core.parameters.json diff --git a/utilities/dependencies/Microsoft.Resources/resourceGroups/parameters/validation.parameters.json b/utilities/pipelines/dependencies/Microsoft.Resources/resourceGroups/parameters/validation.parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Resources/resourceGroups/parameters/validation.parameters.json rename to utilities/pipelines/dependencies/Microsoft.Resources/resourceGroups/parameters/validation.parameters.json diff --git a/utilities/dependencies/Microsoft.Storage/storageAccounts/parameters/fa.parameters.json b/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/fa.parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Storage/storageAccounts/parameters/fa.parameters.json rename to utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/fa.parameters.json diff --git a/utilities/dependencies/Microsoft.Storage/storageAccounts/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Storage/storageAccounts/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/parameters.json diff --git a/utilities/dependencies/Microsoft.Web/serverfarms/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Web/serverfarms/parameters/parameters.json similarity index 100% rename from utilities/dependencies/Microsoft.Web/serverfarms/parameters/parameters.json rename to utilities/pipelines/dependencies/Microsoft.Web/serverfarms/parameters/parameters.json diff --git a/.github/actions/templates/deployModule/scripts/New-ModuleDeployment.ps1 b/utilities/pipelines/resourceDeployment/New-ModuleDeployment.ps1 similarity index 100% rename from .github/actions/templates/deployModule/scripts/New-ModuleDeployment.ps1 rename to utilities/pipelines/resourceDeployment/New-ModuleDeployment.ps1 diff --git a/utilities/pipelines/resourcePublish/Initialize-UniversalArtifactPublish.ps1 b/utilities/pipelines/resourcePublish/Initialize-UniversalArtifactPublish.ps1 new file mode 100644 index 0000000000..e68e84c306 --- /dev/null +++ b/utilities/pipelines/resourcePublish/Initialize-UniversalArtifactPublish.ps1 @@ -0,0 +1,144 @@ +<# +.SYNOPSIS +Prepare to publish a module as an universal package to a DevOps artifact feed + +.DESCRIPTION +Prepare to publish a module as an universal package to a DevOps artifact feed +The function will take evaluate which version should be published based on the provided input parameters (customVersion, versioningOption) and the version currently deployed to the feed +The customVersion is considered only if it is higher than the latest version deployed to the artifact feed +Otherwise, one of the provided version options is chosen and applied with the default being 'patch' + +The function returns +- the name of the artifact to publish +- the version option to be applied if applicable +- the version to be applied if applicable + +.PARAMETER templateFilePath +Mandatory. Path to the module deployment file from root. + +.PARAMETER vstsOrganization +Mandatory. Name of the organization hosting the artifacts feed. + +.PARAMETER vstsProject +Optional. Name of the project hosting the artifacts feed. May be empty. + +.PARAMETER vstsFeedName +Mandatory. Name to the feed to publish to. + +.PARAMETER customVersion +Optional. A custom version the can be provided as a value in the pipeline file. + +.PARAMETER versioningOption +Optional. A version option that can be specified in the UI. Defaults to 'patch' + +.EXAMPLE +Initialize-UniversalArtifactPublish -templateFilePath 'C:/KeyVault/deploy.json' -vstsOrganization 'servicescode' -vstsProject '$(System.TeamProject)' -vstsFeedName 'Modules' -customVersion '3.0.0' + +Try to publish the key vault module with version 3.0.0 to the module feed 'servicescode/$(System.TeamProject)/Modules' based on a value provided in the UI + +.EXAMPLE +Initialize-UniversalArtifactPublish -templateFilePath 'C:/KeyVault/deploy.json' -vstsOrganization 'servicescode' -vstsProject '$(System.TeamProject)' -vstsFeedName 'Modules' -customVersion '1.0.0' + +Try to publish the key vault module with version 1.0.0 to the module feed 'servicescode/$(System.TeamProject)/Modules' based on a value provided in the pipeline file + +.EXAMPLE +Initialize-UniversalArtifactPublish -templateFilePath 'C:/KeyVault/deploy.json' -vstsOrganization 'servicescode' -vstsProject '$(System.TeamProject)' -vstsFeedName 'Modules' + +Try to publish the next key vault module version to the module feed 'servicescode/$(System.TeamProject)/Modules' based on the default versioning behavior +#> +function Initialize-UniversalArtifactPublish { + + [CmdletBinding()] + param ( + [Parameter(Mandatory)] + [string] $templateFilePath, + + [Parameter(Mandatory)] + [string] $vstsOrganization, + + [Parameter(Mandatory = $false)] + [string] $vstsProject = '', + + [Parameter(Mandatory)] + [string] $vstsFeedName, + + [Parameter(Mandatory = $false)] + [string] $customVersion = '0.0.1', + + [Parameter(Mandatory = $false)] + [ValidateSet('Major', 'Minor', 'Patch', 'Custom')] + [string] $versioningOption = 'Patch' + ) + + begin { + Write-Debug ('{0} entered' -f $MyInvocation.MyCommand) + } + + process { + # For function output + $resultSet = @{} + + $moduleIdentifier = (Split-Path $templateFilePath -Parent).Replace('\', '/').Split('/arm/')[1] + $universalPackageModuleName = $moduleIdentifier.Replace('\', '/').Replace('/', '.').ToLower() + $resultSet['universalPackageModuleName'] = $universalPackageModuleName + + ################################# + ## FIND AVAILABLE VERSION ## + ################################# + try { + $head = @{ Authorization = "Bearer $env:TOKEN" } + $url = "https://feeds.dev.azure.com/$vstsOrganization/$vstsProject/_apis/packaging/Feeds/$vstsFeedName/packages?packageNameQuery=$universalPackageModuleName&api-version=6.0-preview" + $packages = Invoke-RestMethod -Uri $url -Method Get -Headers $head -ContentType application/json + if ($packages) { + if ($packages.value.id.count -gt 1) { + # Handle the case where multiple modules in the feed start with with the same packageName. In this case we have to filter the result of the REST query even further. + $packages.value = $packages.value | Where-Object { $_.Name -eq $universalPackageModuleName } + } + + $latestFeedVersion = ($packages.value.versions.Where( { $_.isLatest -eq $True })).version + Write-Verbose ('Package Id of [{0}] is [{1}]' -f $universalPackageModuleName, $packages.value.Id) -Verbose + Write-Verbose "The latest version is [$latestFeedVersion]" -Verbose + } else { + Write-Verbose "No packages via url [$url] found" -Verbose + } + } catch { + $_ + } + + ############################ + ## EVALUATE VERSION ## + ############################ + + if ([String]::IsNullOrEmpty($latestFeedVersion)) { + Write-Verbose ('No version for module [{0}] found in feed [{1}]. Assuming intial publish' -f $universalPackageModuleName, $vstsFeedName) -Verbose + $latestFeedVersion = New-Object System.Version('0.0.1') + } elseif (-not (([String]::IsNullOrEmpty($customVersion)) -or ([String]::IsNullOrEmpty($latestFeedVersion))) -and ((New-Object System.Version($customVersion)) -gt (New-Object System.Version($latestFeedVersion))) ) { + Write-Verbose "A custom version [$customVersion] was specified in the pipeline script and is higher than the current latest. Using it." -Verbose + $versioningOption = 'custom' + $newVersion = $customVersion + } else { + Write-Verbose 'No custom version set. Using default versioning.' + } + + # Test if mode custom + # ------------------- + if ($versioningOption -eq 'custom') { + $newVersionObject = New-Object System.Version($newVersion) + $latestFeedVersionObject = New-Object System.Version($latestFeedVersion) + if ($newVersionObject -lt $latestFeedVersionObject -or $newVersionObject -eq $latestFeedVersionObject) { + throw ('The provided custom version [{0}] must be higher than the current latest version [{1}] published in the artifacts feed [{2}]' -f $newVersionObject.ToString(), $latestFeedVersionObject.ToString(), $vstsFeedName) + } + Write-Verbose "Using publish version [$newVersionObject]" -Verbose + $resultSet['newVersionObject'] = $newVersionObject + } + Write-Verbose "Using publish mode [$versioningOption]" -Verbose + $resultSet['publishingMode'] = $versioningOption + + return $resultSet + } + + end { + Write-Debug ('{0} exited' -f $MyInvocation.MyCommand) + + } +} diff --git a/utilities/pipelines/resourcePublish/Publish-ModuleToNuget.ps1 b/utilities/pipelines/resourcePublish/Publish-ModuleToNuget.ps1 new file mode 100644 index 0000000000..aedad1f602 --- /dev/null +++ b/utilities/pipelines/resourcePublish/Publish-ModuleToNuget.ps1 @@ -0,0 +1,524 @@ + +#region functions +function Set-DefinedPSRepository { + + <# +.SYNOPSIS +Add a given repository as a source for modules + +.DESCRIPTION +Add a given repository as a source for modules + +.PARAMETER feedurl +Url to the feed to add + +.PARAMETER systemAccessToken +Access token required to access the feed + +.PARAMETER queueById +Id/Email of the instance that wants to access the feed + +.EXAMPLE +Set-DefinedPSRepository -feedname "Release-Modules" -feedurl $feedurl -systemAccessToken $systemAccessToken -queueById $queueById + +Set the feed Release-Modules as a nuget and repo source with the specified credentials +#> + + [CmdletBinding(SupportsShouldProcess = $true)] + param ( + [Parameter(Mandatory = $true)] + [string] $feedname, + [Parameter(Mandatory = $true)] + [string] $feedurl, + [Parameter(Mandatory = $true)] + [string] $systemAccessToken, + [Parameter(Mandatory = $true)] + [PSCredential] $credential, + [Parameter(Mandatory = $true)] + [string] $queueById + ) + + Write-Verbose "Register sources with feed-url [$feedurl]" + + Write-Verbose 'Check registerd nuget sources' + if ($isLinux) { + # Assume linux with dotnet installation + $nugetSources = dotnet nuget list source + } else { + # Assume windows with nuget installation + $nugetSources = nuget sources + } + + if (-not ("$nugetSources" -Match $feedName)) { + if ($PSCmdlet.ShouldProcess("Nuget source definition [$feedname]", 'Add')) { + if ($isLinux) { + # Assume linux with dotnet installation + dotnet nuget add source $feedurl -n $feedName -u $queueById -p $systemAccessToken --store-password-in-clear-text + } else { + # Assume windows with nuget installation + nuget sources add -name $feedname -Source $feedurl -Username $queueById -Password $systemAccessToken + } + } + } else { + Write-Verbose "NuGet source $feedname already registered" + } + + if ($isLinux) { + # Assume linux with dotnet installation + dotnet nuget list source # Print registered + } else { + # Assume windows with nuget installation + nuget sources # Print registered + } + + Write-Verbose 'Check registered repositories' + Import-Module 'PackageManagement' -Verbose:$false # Explicit import to suppress verbose + Import-Module 'PowerShellGet' -Verbose:$false # Explicit import to suppress verbose + $regRepos = (Get-PSRepository).Name + if ($regRepos -notcontains $feedName) { + if ($PSCmdlet.ShouldProcess('PSRepository', 'Register new')) { + Write-Verbose 'Registering script folder as Nuget repo' + $registrationInputObject = @{ + Name = $feedname + SourceLocation = $feedurl + PublishLocation = $feedurl + Credential = $credential + InstallationPolicy = 'Trusted' + PackageManagementProvider = 'Nuget' + } + Register-PSRepository @registrationInputObject + Write-Verbose "Repository $feedname registered" + } + } else { + Write-Verbose "Repository $feedname already registered" + } + + Write-Verbose ('Available PS repositories:') + (Get-PSRepository) | Select-Object Name, SourceLocation | Format-Table +} + +function Confirm-CustomVersionIfSet { + <# +.SYNOPSIS +Validate if a given custom version is higher than a given current version + +.DESCRIPTION +Validate if a given custom version is higher than a given current version. +E.g. +- 0.0.1 > 0.0.2 +- 2.3.5 > 2.1.6 + +.PARAMETER currentFeedVersion +The selected custom version that must be higher than the given current version + +.PARAMETER currentVersion +The given current version that must be lower than the selected custom version + +.EXAMPLE +Confirm-CustomVersionIfSet -customVersion "1.0.0" -currentVersion "0.0.15" + +Check if the selected version "1.0.0" is valid with regards to the current version "0.0.15" +#> + [CmdletBinding()] + [OutputType([System.Boolean])] + param ( + [Parameter(Mandatory = $false)] + [string] $customVersion, + [Parameter(Mandatory = $true)] + [System.Version] $currentFeedVersion + ) + + # Check CustomVersion if set + if ([string]::IsNullOrEmpty($customVersion) -or ($customVersion -eq '-')) { + Write-Verbose 'Custom Version not set. Skip check' + return; + } + + Write-Verbose '### Get custom version' + Write-Verbose "Specified version is $customVersion" + $singleValues = $customVersion.Split('.') + $customBuild = $singleValues[2] + $customMinor = $singleValues[1] + $customMajor = $singleValues[0] + + $oldBuild = $currentFeedVersion.Build + $oldMinor = $currentFeedVersion.Minor + $oldMajor = $currentFeedVersion.Major + + Write-Verbose 'Compare Versions' + if ($customMajor -gt $oldMajor) { + Write-Verbose 'Specified version is valid' + return $true + } elseif ($customMajor -lt $oldMajor) { + throw "Specified major version must not be older than than the existing version: Specified $customVersion > Current $currentFeedVersion" + } else { + if ($customMinor -gt $oldMinor) { + Write-Verbose 'Specified version is valid' + return $true + } elseif ($customMinor -lt $oldMinor) { + throw "Specified minor version must not be older than than the existing version: Specified $customVersion > Current $currentFeedVersion" + } else { + if ($customBuild -gt $oldBuild) { + Write-Verbose 'Specified version is valid' + return $true + } else { + throw "Specified build version must be newer than than the existing version: Specified $customVersion > Current $currentFeedVersion" + } + } + } +} + +function Get-CurrentVersion { + <# +.SYNOPSIS +Search for a certain module in the given feed to check it's version. + +.DESCRIPTION +Search for a certain module in the given feed to check it's version. If no module can be found, version 0.0.0 is returned + +.PARAMETER feedname +Name of the feed to search in + +.PARAMETER moduleName +Name of the module to search for + +.PARAMETER credential +The credentials required to access the feed + +.EXAMPLE +$currentFeedVersion = Get-CurrentVersion -moduleName "aks" -feedname "moduleFeed" -credential $credential + +Search for module AKS in the feed moduleFeed to receive its version +#> + [CmdletBinding()] + param ( + [Parameter(Mandatory = $true)] + [string] $feedname, + [Parameter(Mandatory = $true)] + [string] $moduleName, + [Parameter(Mandatory = $true)] + [PSCredential] $credential + ) + + Write-Verbose "Search for module [$moduleName] in feed [$feedname]" + try { + $module = Find-Module -Name $moduleName -Repository $feedname -Credential $credential + return $module.Version + } catch { + if ($_.Exception.Message -like '*No match was found*') { + Write-Verbose "Module $moduleName not found. Assuming first deployment" + return New-Object System.Version('0.0.0') + } else { + throw $_ + } + } +} + +function Get-NewVersion { + <# +.SYNOPSIS +Get a new version object + +.DESCRIPTION +This function handels different cases: +- If the custom version is set, it is returned as a version object +- If the custom version is not set, but the local manifest version is higher than the current feed version, the local manifest version is returned +- If the custom version is not set, and the feed has the highest available version, this version is increased and returned as a version object + +.PARAMETER customVersion +The optionally set custom version + +.PARAMETER versioningOption +The version update. Patch, Minor or Major. + +.PARAMETER currentFeedVersion +The current version of the module + +.PARAMETER moduleBase +The root folder of the module + +.PARAMETER moduleName +The name of the module + +.EXAMPLE +Get-NewVersion -customVersion '-' -currentFeedVersion 0.0.4 -moduleBase "c:\modules\aks" -moduleName "aks" + +If the current manifest version is 1.0.0 the function returns the 1.0.0 version object +else get the new version 0.0.5 + +.EXAMPLE +Get-NewVersion -customVersion 0.0.6 -currentFeedVersion 0.0.4 -moduleBase "c:\modules\aks" -moduleName "aks" + +Get the new version 0.0.6 +#> + [CmdletBinding()] + param ( + [Parameter(Mandatory = $false)] + [string] $customVersion, + + [Parameter(Mandatory = $false)] + [ValidateSet('patch', 'minor', 'major')] + [string] $versioningOption = 'patch', + + [Parameter(Mandatory = $true)] + [version] $currentFeedVersion, + + [Parameter(Mandatory = $true)] + [string] $moduleBase, + + [Parameter(Mandatory = $true)] + [string] $moduleName + ) + + $localVersion = (Import-LocalizedData -BaseDirectory "$moduleBase" -FileName "$moduleName.psd1").ModuleVersion + + if ((-not ([string]::IsNullOrEmpty($customVersion))) -and (-not ($customVersion -eq '-'))) { + Write-Verbose "Apply custom version $customVersion" + $newVersion = New-Object System.Version($customVersion) + } elseif ($localVersion -gt $currentFeedVersion.ToString()) { + Write-Verbose "Apply local manifest version $localVersion" + $newVersion = $localVersion + } else { + Write-Verbose "Versioning option is set to [$versioningOption]. Applying." + $build = $currentFeedVersion.Build + $minor = $currentFeedVersion.Minor + $major = $currentFeedVersion.Major + + if ($versioningOption -eq 'patch') { + $build++ + } elseif ($versioningOption -eq 'minor') { + $minor++ + $build = 0 + } else { + $major++ + $minor = 0 + $build = 0 + } + + $newVersion = New-Object System.Version('{0}.{1}.{2}' -f $major, $minor, $build) + } + return $newVersion +} +function Publish-NuGetModule { + + <# +.SYNOPSIS +Publish a given module to specified feed + +.DESCRIPTION +Publish a given module to specified feed + +.PARAMETER feedname +Nanm of the feed to push to + +.PARAMETER credential +Credentials required by the feed + +.EXAMPLE +Publish-NuGetModule -feedname "Release-Modules" -credential $credential -moduleName "Aks" + +Push the module AKS to the feed 'Release-Modules' +#> + [CmdletBinding()] + param ( + [Parameter(Mandatory = $true)] + [string] $feedname, + [Parameter(Mandatory = $true)] + [PSCredential] $credential, + [Parameter(Mandatory = $true)] + [string] $moduleBase, + [Parameter(Mandatory = $true)] + [string] $moduleName + ) + + try { + Write-Verbose "Try pushing module [$moduleName] from base [$moduleBase] to feed [$feedname]" + Publish-Module -Path "$moduleBase" -NuGetApiKey 'VSTS' -Repository $feedname -Credential $credential -Force + Write-Verbose 'Published module' + } catch { + Write-Verbose ('Unable to upload module {0}' -f (Split-Path $PSScriptRoot -Leaf)) + $_.Exception | Format-List -Force + } +} +function Set-LocalVersion { + <# +.SYNOPSIS +Set the specified version to the module manifest + +.DESCRIPTION +Set the specified version to the module manifest + +.PARAMETER newVersion +The version to set + +.PARAMETER moduleBase +The root folder of the module + +.PARAMETER moduleName +The name of the module + +.EXAMPLE +Set-LocalVersion -newVersion $newVersion -moduleBase "c:\modules\aks" -moduleName "aks" + +Set the provided moduleVersion to the manifest of module aks in the folder 'c:\modules\aks' +#> + [CmdletBinding( + SupportsShouldProcess = $true + )] + param ( + [Parameter(Mandatory = $true)] + [version] $newVersion, + [Parameter(Mandatory = $true)] + [string] $moduleBase, + [Parameter(Mandatory = $true)] + [string] $moduleName + ) + + $modulefile = "$moduleBase/$moduleName.psd1" + if ($PSCmdlet.ShouldProcess('Module manifest', 'Update')) { + Update-ModuleManifest -Path $modulefile -ModuleVersion $newVersion -Verbose + } +} +function Update-ManifestExportedFunction { + <# +.SYNOPSIS +Add the module's public functions to its manifest + +.DESCRIPTION +Extracts all functions in the module's public folder to add them as 'FunctionsToExport' int he manifest + +.PARAMETER moduleBase +The root folder of the module + +.PARAMETER moduleName +The name of the module + +.EXAMPLE +Update-ManifestExportedFunction -moduleBase "c:\modules\aks" -moduleName "aks" + +Add all public functions of module AKS to its manifest +#> + [CmdletBinding( + SupportsShouldProcess = $true + )] + param ( + [Parameter(Mandatory = $true)] + [string] $moduleBase, + [Parameter(Mandatory = $true)] + [string] $moduleName + ) + + $publicFunctions = (Get-ChildItem -Path "$moduleBase\Public" -Filter '*.ps1').BaseName + + $modulefile = "$moduleBase\$moduleName.psd1" + if ($PSCmdlet.ShouldProcess('Module manifest', 'Update')) { + Write-Verbose "Update Manifest $moduleFile" + Update-ModuleManifest -Path $modulefile -FunctionsToExport $publicFunctions -Verbose | Out-Null + } +} +#endregion + +function Publish-ModuleToNuget { + + <# +.SYNOPSIS +Build the current powershell module as an artifact and push it to a designated feed + +.DESCRIPTION +This method adjusts the module's manifest in two ways: +- It assigns a new given or generated module version to the manifest +- It extracts all public functions from this module and lists them in the manifest + +Subsequently it pushes the module as an artifact to a corresponding module feed as a nuget package where it can be downloaded from. + +.PARAMETER feedName +Name of the feed to push the module to. By default it's 'Release-Modules' + +.PARAMETER feedurl +Optional feedurl to set by pipeline. Use {0} in path to specify the feedname +e.g. "https://apps-custom.pkgs.visualstudio.com/_packaging/{0}/nuget/v2" + +.PARAMETER customVersion +If the new version should not be generated you can specify a custom version. It must be higher than the latest version inside the module feed. + +.PARAMETER versioningOption +The version update. Patch, Minor or Major. + +.PARAMETER systemAccessToken +Personal-Access-Token provieded by the pipeline or user to interact with the module feed + +.PARAMETER queueById +Name/Email/Id of the user interacting with the module feed + +.PARAMETER test +An optional parameter used by tests to only run code that is required for testing + +.PARAMETER moduleBase +Root folder of the modbule to publish + +.PARAMETER moduleName +Name of the module to publish +#> + + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingConvertToSecureStringWithPlainText', '', Justification = 'Is provided by the pipeline as an encoded string')] + [CmdletBinding()] + param ( + [Parameter(Mandatory = $true)] + [string] $feedName, + + [Parameter(Mandatory = $true)] + [string] $feedurl, + + [Parameter(Mandatory = $false)] + [string] $customVersion = '-', + + [Parameter(Mandatory = $false)] + [ValidateSet('patch', 'minor', 'major')] + [string] $versioningOption = 'patch', + + [Parameter(Mandatory = $true)] + [string] $systemAccessToken, + + [Parameter(Mandatory = $true)] + [string] $queueById, + + [Parameter(Mandatory = $true)] + [string] $moduleBase, + + [Parameter(Mandatory = $true)] + [string] $moduleName + ) + + $oldPreferences = $VerbosePreference + $VerbosePreference = 'Continue' + + try { + $feedurl = $feedurl -f $feedName + Write-Verbose "Feed-Url: $feedurl" + + $password = ConvertTo-SecureString $systemAccessToken -AsPlainText -Force + $credential = New-Object System.Management.Automation.PSCredential ($queueById, $password) + + Write-Verbose 'Register feed' + Set-DefinedPSRepository -feedname $feedName -feedurl $feedurl -systemAccessToken $systemAccessToken -Credential $credential -queueById $queueById + + $currentFeedVersion = Get-CurrentVersion -feedname $feedName -moduleName $moduleName -credential $credential + Write-Verbose "Current version of module '$moduleName' in feed '$feedName' is $currentFeedVersion" + + Confirm-CustomVersionIfSet -customVersion $customVersion -currentFeedVersion $currentFeedVersion + + $newVersion = Get-NewVersion -customVersion $customVersion -versioningOption $versioningOption -currentFeedVersion $currentFeedVersion -moduleName $moduleName -moduleBase $moduleBase + Write-Verbose "New version is $newVersion" + + Set-LocalVersion -newVersion $newVersion -moduleName $moduleName -moduleBase $moduleBase + Write-Verbose "Updated local version to $newVersion" + + Update-ManifestExportedFunction -moduleName $moduleName -moduleBase $moduleBase + + Test-ModuleManifest -Path "$moduleBase\$moduleName.psd1" | Format-List + + Publish-NuGetModule -feedname $feedname -credential $credential -moduleName $moduleName -moduleBase $moduleBase + } finally { + $VerbosePreference = $oldPreferences + } +} diff --git a/.github/actions/templates/publishModule/scripts/Publish-ModuleToPrivateBicepRegistry.ps1 b/utilities/pipelines/resourcePublish/Publish-ModuleToPrivateBicepRegistry.ps1 similarity index 100% rename from .github/actions/templates/publishModule/scripts/Publish-ModuleToPrivateBicepRegistry.ps1 rename to utilities/pipelines/resourcePublish/Publish-ModuleToPrivateBicepRegistry.ps1 diff --git a/.github/actions/templates/publishModule/scripts/Publish-ModuleToTemplateSpec.ps1 b/utilities/pipelines/resourcePublish/Publish-ModuleToTemplateSpec.ps1 similarity index 99% rename from .github/actions/templates/publishModule/scripts/Publish-ModuleToTemplateSpec.ps1 rename to utilities/pipelines/resourcePublish/Publish-ModuleToTemplateSpec.ps1 index 6176efceda..19cfa37b7d 100644 --- a/.github/actions/templates/publishModule/scripts/Publish-ModuleToTemplateSpec.ps1 +++ b/utilities/pipelines/resourcePublish/Publish-ModuleToTemplateSpec.ps1 @@ -135,7 +135,7 @@ function Publish-ModuleToTemplateSpec { Location = $templateSpecsRgLocation TemplateFile = $templateFilePath } - New-AzTemplateSpec @templateSpecInputObject + New-AzTemplateSpec @templateSpecInputObject -Force } Write-Verbose 'Publish complete' } diff --git a/utilities/resourceRemoval/Remove-DeployedModule.ps1 b/utilities/pipelines/resourceRemoval/Remove-DeployedModule.ps1 similarity index 100% rename from utilities/resourceRemoval/Remove-DeployedModule.ps1 rename to utilities/pipelines/resourceRemoval/Remove-DeployedModule.ps1 diff --git a/utilities/resourceRemoval/Remove-NetAppAccount.ps1 b/utilities/pipelines/resourceRemoval/Remove-NetAppAccount.ps1 similarity index 100% rename from utilities/resourceRemoval/Remove-NetAppAccount.ps1 rename to utilities/pipelines/resourceRemoval/Remove-NetAppAccount.ps1 diff --git a/utilities/resourceRemoval/Remove-vWan.ps1 b/utilities/pipelines/resourceRemoval/Remove-vWan.ps1 similarity index 100% rename from utilities/resourceRemoval/Remove-vWan.ps1 rename to utilities/pipelines/resourceRemoval/Remove-vWan.ps1 diff --git a/utilities/resourceRemoval/helper/Remove-Resource.ps1 b/utilities/pipelines/resourceRemoval/helper/Remove-Resource.ps1 similarity index 100% rename from utilities/resourceRemoval/helper/Remove-Resource.ps1 rename to utilities/pipelines/resourceRemoval/helper/Remove-Resource.ps1 diff --git a/.github/actions/templates/validateModuleDeploy/scripts/Test-TemplateWithParameterFile.ps1 b/utilities/pipelines/resourceValidation/Test-TemplateWithParameterFile.ps1 similarity index 100% rename from .github/actions/templates/validateModuleDeploy/scripts/Test-TemplateWithParameterFile.ps1 rename to utilities/pipelines/resourceValidation/Test-TemplateWithParameterFile.ps1 diff --git a/.github/actions/sharedScripts/Set-EnvironmentOnAgent.ps1 b/utilities/pipelines/sharedScripts/Set-EnvironmentOnAgent.ps1 similarity index 96% rename from .github/actions/sharedScripts/Set-EnvironmentOnAgent.ps1 rename to utilities/pipelines/sharedScripts/Set-EnvironmentOnAgent.ps1 index 8ece4d4c42..590d5181a8 100644 --- a/.github/actions/sharedScripts/Set-EnvironmentOnAgent.ps1 +++ b/utilities/pipelines/sharedScripts/Set-EnvironmentOnAgent.ps1 @@ -50,7 +50,7 @@ function Install-CustomModule { $localModuleVersions = Get-Module $foundModule.Name -ListAvailable if ($localModuleVersions -and $localModuleVersions.Version -contains $foundModule.Version ) { - Write-Verbose ('Module [{0}] already installed with latest version [{1}]' -f $foundModule.Name, $foundModule.Version) -Verbose + Write-Verbose ('Module [{0}] already installed with version [{1}]' -f $foundModule.Name, $foundModule.Version) -Verbose continue } if ($module.ExcludeModules -and $module.excludeModules.contains($foundModule.Name)) { @@ -100,8 +100,9 @@ function Set-EnvironmentOnAgent { @{ Name = 'Az.Resources' }, @{ Name = 'Az.NetAppFiles' }, @{ Name = 'Az.Network' }, - @{ Name = 'Az.ContainerRegistry' } - @{ Name = 'Az.KeyVault' } + @{ Name = 'Az.ContainerRegistry' }, + @{ Name = 'Az.KeyVault' }, + @{ Name = 'Pester'; Version = '5.3.0' } ) ) diff --git a/utilities/tokensReplacement/Convert-TokensInParameterFile.ps1 b/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 similarity index 100% rename from utilities/tokensReplacement/Convert-TokensInParameterFile.ps1 rename to utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 diff --git a/utilities/tokensReplacement/Set-LocalCustomParameterFileTokensInKeyVault.ps1 b/utilities/pipelines/tokensReplacement/Set-LocalCustomParameterFileTokensInKeyVault.ps1 similarity index 100% rename from utilities/tokensReplacement/Set-LocalCustomParameterFileTokensInKeyVault.ps1 rename to utilities/pipelines/tokensReplacement/Set-LocalCustomParameterFileTokensInKeyVault.ps1 diff --git a/utilities/tokensReplacement/helper/Convert-TokensInFileList.ps1 b/utilities/pipelines/tokensReplacement/helper/Convert-TokensInFileList.ps1 similarity index 100% rename from utilities/tokensReplacement/helper/Convert-TokensInFileList.ps1 rename to utilities/pipelines/tokensReplacement/helper/Convert-TokensInFileList.ps1 diff --git a/utilities/tokensReplacement/helper/Get-RemoteCustomParameterFileTokens.ps1 b/utilities/pipelines/tokensReplacement/helper/Get-RemoteCustomParameterFileTokens.ps1 similarity index 100% rename from utilities/tokensReplacement/helper/Get-RemoteCustomParameterFileTokens.ps1 rename to utilities/pipelines/tokensReplacement/helper/Get-RemoteCustomParameterFileTokens.ps1 diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index cee32e5ffa..776cad6a0e 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -99,8 +99,8 @@ function Test-ModuleLocally { begin { Write-Verbose "Running Local Tests for $($ModuleName.Split('\')[-1])" # Load Tokens Converter Script - . (Join-Path $PSScriptRoot '../tokensReplacement/Convert-TokensInParameterFile.ps1') - . (Join-Path $PSScriptRoot '../tokensReplacement/helper/Convert-TokensInFileList.ps1') + . (Join-Path $PSScriptRoot '../pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1') + . (Join-Path $PSScriptRoot '../pipelines/tokensReplacement/helper/Convert-TokensInFileList.ps1') } process { # Test Module From 48e899aad44bc4e8d27f424b81243d5ce43d8fc3 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Mon, 15 Nov 2021 16:00:54 +0100 Subject: [PATCH 002/112] Update to latest --- arm/README.md | 184 +++++++++++++++++++++++++------------------------- 1 file changed, 92 insertions(+), 92 deletions(-) diff --git a/arm/README.md b/arm/README.md index 2dd542c49a..22528ebc33 100644 --- a/arm/README.md +++ b/arm/README.md @@ -6,95 +6,95 @@ The following table provides you with an outline of all Modules that are current | Name | Provider namespace | Resource Type | | - | - | - | -| [Analysis Services](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.AnalysisServices/servers) | `MS.AnalysisServices` | [servers](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.AnalysisServices/servers) | -| [Api Management](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/service) | `MS.ApiManagement` | [service](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/service) | -| [Api Management Service Apis](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/apis) | | [service/apis](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/apis) | -| [Api Management Service Authorization Servers](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/authorizationServers) | | [service/authorizationServers](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/authorizationServers) | -| [Api Management Service Backends](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/backends) | | [service/backends](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/backends) | -| [Api Management Service Cache](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/caches) | | [service/caches](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/caches) | -| [Api Management Service Named Values](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/namedValues) | | [service/namedValues](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/namedValues) | -| [Api Management Service Products](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/products) | | [service/products](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/products) | -| [Api Management Subscriptions](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/subscriptions) | | [service/subscriptions](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/subscriptions) | -| [PolicyAssignment](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/policyAssignments) | `MS.Authorization` | [policyAssignments](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/policyAssignments) | -| [PolicyDefinition](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/policyDefinitions) | | [policyDefinitions](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/policyDefinitions) | -| [PolicyExemption](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/policyExemptions) | | [policyExemptions](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/policyExemptions) | -| [policySetDefinition](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/policySetDefinitions) | | [policySetDefinitions](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/policySetDefinitions) | -| [Role Assignments](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/roleAssignments) | | [roleAssignments](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/roleAssignments) | -| [Role Definitions](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/roleDefinitions) | | [roleDefinitions](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/roleDefinitions) | -| [AutoManage](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Automanage/accounts) | `MS.Automanage` | [accounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Automanage/accounts) | -| [AutomationAccounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Automation/automationAccounts) | `MS.Automation` | [automationAccounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Automation/automationAccounts) | -| [Software Update Configuration](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Automation/automationAccountsResources/softwareUpdateConfigurations) | | [automationAccounts/softwareUpdateConfigurations](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Automation/automationAccountsResources/softwareUpdateConfigurations) | -| [Batch Accounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Batch/batchAccounts) | `MS.Batch` | [batchAccounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Batch/batchAccounts) | -| [CognitiveServices](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.CognitiveServices/accounts) | `MS.CognitiveServices` | [accounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.CognitiveServices/accounts) | -| [AvailabilitySet](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/availabilitySets) | `MS.Compute` | [availabilitySets](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/availabilitySets) | -| [DiskEncryptionSet](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/diskEncryptionSets) | | [diskEncryptionSets](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/diskEncryptionSets) | -| [Shared Image Gallery](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/galleries) | | [galleries](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/galleries) | -| [Shared Image Definition](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/galleriesResources/images) | | [galleries/images](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/galleriesResources/images) | -| [Image](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/images) | | [images](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/images) | -| [ProximityPlacementGroup](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/proximityPlacementGroups) | | [proximityPlacementGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/proximityPlacementGroups) | -| [Virtual Machines](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/virtualMachines) | | [virtualMachines](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/virtualMachines) | -| [Virtual Machine Scale Sets](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/virtualMachineScaleSets) | | [virtualMachineScaleSets](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/virtualMachineScaleSets) | -| [Budgets](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Consumption/budgets) | `MS.Consumption` | [budgets](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Consumption/budgets) | -| [ContainerInstances](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ContainerInstance/containerGroups) | `MS.ContainerInstance` | [containerGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ContainerInstance/containerGroups) | -| [ContainerRegistry](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ContainerRegistry/registries) | `MS.ContainerRegistry` | [registries](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ContainerRegistry/registries) | -| [AzureKubernetesService](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ContainerService/managedClusters) | `MS.ContainerService` | [managedClusters](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ContainerService/managedClusters) | -| [Azure Databricks](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Databricks/workspaces) | `MS.Databricks` | [workspaces](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Databricks/workspaces) | -| [DataFactory](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DataFactory/factories) | `MS.DataFactory` | [factories](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DataFactory/factories) | -| [AVD Application Groups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/applicationgroups) | `MS.DesktopVirtualization` | [applicationgroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/applicationgroups) | -| [AVD HostPools](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/hostpools) | | [hostpools](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/hostpools) | -| [AVD Workspaces](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/workspaces) | | [workspaces](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/workspaces) | -| [DocumentDB Database Account](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DocumentDB/databaseAccounts) | `MS.DocumentDB` | [databaseAccounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DocumentDB/databaseAccounts) | -| [Event Grid](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.EventGrid/topics) | `MS.EventGrid` | [topics](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.EventGrid/topics) | -| [EventHub Namespace](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.EventHub/namespaces) | `MS.EventHub` | [namespaces](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.EventHub/namespaces) | -| [Azure Health Bot](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.HealthBot/healthBots) | `MS.HealthBot` | [healthBots](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.HealthBot/healthBots) | -| [Action Group](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/actionGroups) | `MS.Insights` | [actionGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/actionGroups) | -| [Activity Log Alert](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/activityLogAlerts) | | [activityLogAlerts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/activityLogAlerts) | -| [Application Insights](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/components) | | [components](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/components) | -| [ActivityLog](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/diagnosticSettings) | | [diagnosticSettings](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/diagnosticSettings) | -| [Metric Alert](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/metricAlerts) | | [metricAlerts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/metricAlerts) | -| [Azure Monitor Private Link Scope](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/privateLinkScopes) | | [privateLinkScopes](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/privateLinkScopes) | -| [Scheduled Query Rules](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/scheduledQueryRules) | | [scheduledQueryRules](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/scheduledQueryRules) | -| [KeyVault](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.KeyVault/vaults) | `MS.KeyVault` | [vaults](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.KeyVault/vaults) | -| [LogicApp](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Logic/workflows) | `MS.Logic` | [workflows](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Logic/workflows) | -| [Machine Learning Services](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.MachineLearningServices/workspaces) | `MS.achineLearningServices` | [workspaces](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.MachineLearningServices/workspaces) | -| [User Assigned Identities](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ManagedIdentity/userAssignedIdentities) | `MS.anagedIdentity` | [userAssignedIdentities](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ManagedIdentity/userAssignedIdentities) | -| [registrationDefinitions](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ManagedServices/registrationDefinitions) | `MS.anagedServices` | [registrationDefinitions](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ManagedServices/registrationDefinitions) | -| [Management groups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Management/managementGroups) | `MS.anagement` | [managementGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Management/managementGroups) | -| [AzureNetAppFiles](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.NetApp/netAppAccounts) | `MS.NetApp` | [netAppAccounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.NetApp/netAppAccounts) | -| [ApplicationGateway](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/applicationGateways) | `MS.Network` | [applicationGateways](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/applicationGateways) | -| [ApplicationSecurityGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/applicationSecurityGroups) | | [applicationSecurityGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/applicationSecurityGroups) | -| [AzureFirewall](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/azureFirewalls) | | [azureFirewalls](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/azureFirewalls) | -| [AzureBastion](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/bastionHosts) | | [bastionHosts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/bastionHosts) | -| [VirtualNetworkGatewayConnection](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/connections) | | [connections](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/connections) | -| [DDoS Protection Plans](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/ddosProtectionPlans) | | [ddosProtectionPlans](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/ddosProtectionPlans) | -| [ExpressRoute Circuit](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/expressRouteCircuits) | | [expressRouteCircuits](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/expressRouteCircuits) | -| [IP Groups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/ipGroups) | | [ipGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/ipGroups) | -| [LoadBalancer](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/loadBalancers) | | [loadBalancers](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/loadBalancers) | -| [Local Network Gateway](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/localNetworkGateways) | | [localNetworkGateways](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/localNetworkGateways) | -| [NAT Gateway](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/natGateways) | | [natGateways](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/natGateways) | -| [NetworkSecurityGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/networkSecurityGroups) | | [networkSecurityGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/networkSecurityGroups) | -| [Network Watcher](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/networkWatchers) | | [networkWatchers](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/networkWatchers) | -| [PrivateDnsZones](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/privateDnsZones) | | [privateDnsZones](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/privateDnsZones) | -| [PrivateEndpoints](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/privateEndpoints) | | [privateEndpoints](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/privateEndpoints) | -| [Public IP Addresses](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/publicIPAddresses) | | [publicIPAddresses](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/publicIPAddresses) | -| [Public IP Prefixes](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/publicIPPrefixes) | | [publicIPPrefixes](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/publicIPPrefixes) | -| [RouteTables](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/routeTables) | | [routeTables](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/routeTables) | -| [TrafficManager](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/trafficmanagerprofiles) | | [trafficmanagerprofiles](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/trafficmanagerprofiles) | -| [VirtualNetworkGateway](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/virtualNetworkGateways) | | [virtualNetworkGateways](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/virtualNetworkGateways) | -| [Virtual Network](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/virtualNetworks) | | [virtualNetworks](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/virtualNetworks) | -| [Virtual Wan](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/virtualWans) | | [virtualWans](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/virtualWans) | -| [LogAnalytics](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.OperationalInsights/workspaces) | `MS.OperationalInsights` | [workspaces](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.OperationalInsights/workspaces) | -| [RecoveryServicesVaults](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.RecoveryServices/vaults) | `MS.RecoveryServices` | [vaults](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.RecoveryServices/vaults) | -| [Deployment Scripts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Resources/deploymentScripts) | `MS.Resources` | [deploymentScripts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Resources/deploymentScripts) | -| [Resource Group](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Resources/resourceGroups) | | [resourceGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Resources/resourceGroups) | -| [AzureSecurityCenter](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Security/azureSecurityCenter) | `MS.Security` | [azureSecurityCenter](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Security/azureSecurityCenter) | -| [ServiceBusNamespaces](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ServiceBus/namespaces) | `MS.ServiceBus` | [namespaces](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ServiceBus/namespaces) | -| [SQL Managed Instances](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Sql/managedInstances) | `MS.Sql` | [managedInstances](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Sql/managedInstances) | -| [SQL Managed Instances Database](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Sql/managedInstancesResources/databases) | | [managedInstances/databases](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Sql/managedInstancesResources/databases) | -| [AzureSQLServer](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Sql/servers) | | [servers](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Sql/servers) | -| [StorageAccounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Storage/storageAccounts) | `MS.Storage` | [storageAccounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Storage/storageAccounts) | -| [Image Templates](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.VirtualMachineImages/imageTemplates) | `MS.VirtualMachineImages` | [imageTemplates](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.VirtualMachineImages/imageTemplates) | -| [API Connection](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Web/connections) | `MS.Web` | [connections](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Web/connections) | -| [App Service Environment](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Web/hostingEnvironments) | | [hostingEnvironments](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Web/hostingEnvironments) | -| [AppServicePlan](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Web/serverfarms) | | [serverfarms](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Web/serverfarms) | -| [Web/Function App](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Web/sites) | | [sites](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Web/sites) | +| [Analysis Services](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.AnalysisServices/servers) | `MS.AnalysisServices` | [servers](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.AnalysisServices/servers) | +| [Api Management](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/service) | `MS.ApiManagement` | [service](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/service) | +| [Api Management Service Apis](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/apis) | | [service/apis](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/apis) | +| [Api Management Service Authorization Servers](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/authorizationServers) | | [service/authorizationServers](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/authorizationServers) | +| [Api Management Service Backends](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/backends) | | [service/backends](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/backends) | +| [Api Management Service Cache](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/caches) | | [service/caches](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/caches) | +| [Api Management Service Named Values](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/namedValues) | | [service/namedValues](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/namedValues) | +| [Api Management Service Products](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/products) | | [service/products](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/products) | +| [Api Management Subscriptions](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/subscriptions) | | [service/subscriptions](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/serviceResources/subscriptions) | +| [PolicyAssignment](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/policyAssignments) | `MS.Authorization` | [policyAssignments](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/policyAssignments) | +| [PolicyDefinition](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/policyDefinitions) | | [policyDefinitions](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/policyDefinitions) | +| [PolicyExemption](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/policyExemptions) | | [policyExemptions](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/policyExemptions) | +| [policySetDefinition](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/policySetDefinitions) | | [policySetDefinitions](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/policySetDefinitions) | +| [Role Assignments](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/roleAssignments) | | [roleAssignments](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/roleAssignments) | +| [Role Definitions](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/roleDefinitions) | | [roleDefinitions](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/roleDefinitions) | +| [AutoManage](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Automanage/accounts) | `MS.Automanage` | [accounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Automanage/accounts) | +| [Automation Accounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Automation/automationAccounts) | `MS.Automation` | [automationAccounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Automation/automationAccounts) | +| [Software Update Configuration](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Automation/automationAccountsResources/softwareUpdateConfigurations) | | [automationAccounts/softwareUpdateConfigurations](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Automation/automationAccountsResources/softwareUpdateConfigurations) | +| [Batch Accounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Batch/batchAccounts) | `MS.Batch` | [batchAccounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Batch/batchAccounts) | +| [CognitiveServices](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.CognitiveServices/accounts) | `MS.CognitiveServices` | [accounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.CognitiveServices/accounts) | +| [AvailabilitySet](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/availabilitySets) | `MS.Compute` | [availabilitySets](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/availabilitySets) | +| [DiskEncryptionSet](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/diskEncryptionSets) | | [diskEncryptionSets](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/diskEncryptionSets) | +| [Shared Image Gallery](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/galleries) | | [galleries](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/galleries) | +| [Shared Image Definition](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/galleriesResources/images) | | [galleries/images](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/galleriesResources/images) | +| [Image](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/images) | | [images](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/images) | +| [ProximityPlacementGroup](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/proximityPlacementGroups) | | [proximityPlacementGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/proximityPlacementGroups) | +| [Virtual Machines](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/virtualMachines) | | [virtualMachines](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/virtualMachines) | +| [Virtual Machine Scale Sets](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/virtualMachineScaleSets) | | [virtualMachineScaleSets](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/virtualMachineScaleSets) | +| [Budgets](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Consumption/budgets) | `MS.Consumption` | [budgets](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Consumption/budgets) | +| [ContainerInstances](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ContainerInstance/containerGroups) | `MS.ContainerInstance` | [containerGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ContainerInstance/containerGroups) | +| [ContainerRegistry](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ContainerRegistry/registries) | `MS.ContainerRegistry` | [registries](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ContainerRegistry/registries) | +| [AzureKubernetesService](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ContainerService/managedClusters) | `MS.ContainerService` | [managedClusters](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ContainerService/managedClusters) | +| [Azure Databricks](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Databricks/workspaces) | `MS.Databricks` | [workspaces](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Databricks/workspaces) | +| [DataFactory](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DataFactory/factories) | `MS.DataFactory` | [factories](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DataFactory/factories) | +| [AVD Application Groups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/applicationgroups) | `MS.DesktopVirtualization` | [applicationgroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/applicationgroups) | +| [AVD HostPools](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/hostpools) | | [hostpools](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/hostpools) | +| [AVD Workspaces](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/workspaces) | | [workspaces](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/workspaces) | +| [DocumentDB Database Account](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DocumentDB/databaseAccounts) | `MS.DocumentDB` | [databaseAccounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DocumentDB/databaseAccounts) | +| [Event Grid](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.EventGrid/topics) | `MS.EventGrid` | [topics](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.EventGrid/topics) | +| [EventHub Namespace](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.EventHub/namespaces) | `MS.EventHub` | [namespaces](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.EventHub/namespaces) | +| [Azure Health Bot](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.HealthBot/healthBots) | `MS.HealthBot` | [healthBots](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.HealthBot/healthBots) | +| [Action Group](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/actionGroups) | `MS.Insights` | [actionGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/actionGroups) | +| [Activity Log Alert](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/activityLogAlerts) | | [activityLogAlerts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/activityLogAlerts) | +| [Application Insights](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/components) | | [components](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/components) | +| [ActivityLog](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/diagnosticSettings) | | [diagnosticSettings](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/diagnosticSettings) | +| [Metric Alert](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/metricAlerts) | | [metricAlerts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/metricAlerts) | +| [Azure Monitor Private Link Scope](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/privateLinkScopes) | | [privateLinkScopes](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/privateLinkScopes) | +| [Scheduled Query Rules](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/scheduledQueryRules) | | [scheduledQueryRules](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/scheduledQueryRules) | +| [KeyVault](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.KeyVault/vaults) | `MS.KeyVault` | [vaults](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.KeyVault/vaults) | +| [LogicApp](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Logic/workflows) | `MS.Logic` | [workflows](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Logic/workflows) | +| [Machine Learning Services](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.MachineLearningServices/workspaces) | `MS.achineLearningServices` | [workspaces](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.MachineLearningServices/workspaces) | +| [User Assigned Identities](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ManagedIdentity/userAssignedIdentities) | `MS.anagedIdentity` | [userAssignedIdentities](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ManagedIdentity/userAssignedIdentities) | +| [registrationDefinitions](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ManagedServices/registrationDefinitions) | `MS.anagedServices` | [registrationDefinitions](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ManagedServices/registrationDefinitions) | +| [Management groups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Management/managementGroups) | `MS.anagement` | [managementGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Management/managementGroups) | +| [AzureNetAppFiles](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.NetApp/netAppAccounts) | `MS.NetApp` | [netAppAccounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.NetApp/netAppAccounts) | +| [ApplicationGateway](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/applicationGateways) | `MS.Network` | [applicationGateways](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/applicationGateways) | +| [ApplicationSecurityGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/applicationSecurityGroups) | | [applicationSecurityGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/applicationSecurityGroups) | +| [AzureFirewall](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/azureFirewalls) | | [azureFirewalls](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/azureFirewalls) | +| [AzureBastion](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/bastionHosts) | | [bastionHosts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/bastionHosts) | +| [VirtualNetworkGatewayConnection](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/connections) | | [connections](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/connections) | +| [DDoS Protection Plans](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/ddosProtectionPlans) | | [ddosProtectionPlans](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/ddosProtectionPlans) | +| [ExpressRoute Circuit](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/expressRouteCircuits) | | [expressRouteCircuits](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/expressRouteCircuits) | +| [IP Groups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/ipGroups) | | [ipGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/ipGroups) | +| [LoadBalancer](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/loadBalancers) | | [loadBalancers](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/loadBalancers) | +| [Local Network Gateway](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/localNetworkGateways) | | [localNetworkGateways](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/localNetworkGateways) | +| [NAT Gateway](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/natGateways) | | [natGateways](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/natGateways) | +| [NetworkSecurityGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/networkSecurityGroups) | | [networkSecurityGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/networkSecurityGroups) | +| [Network Watcher](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/networkWatchers) | | [networkWatchers](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/networkWatchers) | +| [PrivateDnsZones](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/privateDnsZones) | | [privateDnsZones](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/privateDnsZones) | +| [PrivateEndpoints](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/privateEndpoints) | | [privateEndpoints](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/privateEndpoints) | +| [Public IP Addresses](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/publicIPAddresses) | | [publicIPAddresses](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/publicIPAddresses) | +| [Public IP Prefixes](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/publicIPPrefixes) | | [publicIPPrefixes](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/publicIPPrefixes) | +| [RouteTables](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/routeTables) | | [routeTables](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/routeTables) | +| [TrafficManager](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/trafficmanagerprofiles) | | [trafficmanagerprofiles](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/trafficmanagerprofiles) | +| [VirtualNetworkGateway](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/virtualNetworkGateways) | | [virtualNetworkGateways](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/virtualNetworkGateways) | +| [Virtual Network](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/virtualNetworks) | | [virtualNetworks](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/virtualNetworks) | +| [Virtual Wan](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/virtualWans) | | [virtualWans](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/virtualWans) | +| [LogAnalytics](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.OperationalInsights/workspaces) | `MS.OperationalInsights` | [workspaces](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.OperationalInsights/workspaces) | +| [RecoveryServicesVaults](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.RecoveryServices/vaults) | `MS.RecoveryServices` | [vaults](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.RecoveryServices/vaults) | +| [Deployment Scripts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Resources/deploymentScripts) | `MS.Resources` | [deploymentScripts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Resources/deploymentScripts) | +| [Resource Group](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Resources/resourceGroups) | | [resourceGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Resources/resourceGroups) | +| [AzureSecurityCenter](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Security/azureSecurityCenter) | `MS.Security` | [azureSecurityCenter](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Security/azureSecurityCenter) | +| [ServiceBusNamespaces](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ServiceBus/namespaces) | `MS.ServiceBus` | [namespaces](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ServiceBus/namespaces) | +| [SQL Managed Instances](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Sql/managedInstances) | `MS.Sql` | [managedInstances](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Sql/managedInstances) | +| [SQL Managed Instances Database](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Sql/managedInstancesResources/databases) | | [managedInstances/databases](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Sql/managedInstancesResources/databases) | +| [AzureSQLServer](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Sql/servers) | | [servers](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Sql/servers) | +| [StorageAccounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Storage/storageAccounts) | `MS.Storage` | [storageAccounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Storage/storageAccounts) | +| [Image Templates](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.VirtualMachineImages/imageTemplates) | `MS.VirtualMachineImages` | [imageTemplates](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.VirtualMachineImages/imageTemplates) | +| [API Connection](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Web/connections) | `MS.Web` | [connections](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Web/connections) | +| [App Service Environment](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Web/hostingEnvironments) | | [hostingEnvironments](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Web/hostingEnvironments) | +| [AppServicePlan](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Web/serverfarms) | | [serverfarms](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Web/serverfarms) | +| [Web/Function App](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Web/sites) | | [sites](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Web/sites) | From 82f101de5ce683b6f94001ecb36e989324344ce9 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Mon, 15 Nov 2021 16:04:18 +0100 Subject: [PATCH 003/112] Fixed ref --- .azuredevops/pipelineTemplates/module.jobs.deploy.yml | 2 +- .azuredevops/pipelineTemplates/module.jobs.validate.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml index aadb33da93..70a9ec4e7a 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml @@ -168,7 +168,7 @@ jobs: verbose = $true } # Add Remote Custom Parameter File Tokens - if ('${{ env.PLATFORM_KEYVAULT }}' -and '${{ inputs.subscriptionId }}') { + if ('${{ env.PLATFORM_KEYVAULT }}' -and '${{ parameters.subscriptionId }}') { $ConvertTokensInputs += @{ TokensKeyVaultName = '${{ variables.PLATFORM_KEYVAULT }}' TokensKeyVaultSubscriptionId = '${{ parameters.subscriptionId }}' diff --git a/.azuredevops/pipelineTemplates/module.jobs.validate.yml b/.azuredevops/pipelineTemplates/module.jobs.validate.yml index c68862198d..96201a2ba9 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.validate.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.validate.yml @@ -340,7 +340,7 @@ jobs: verbose = $true } # Add Remote Custom Parameter File Tokens - if ('${{ env.PLATFORM_KEYVAULT }}' -and '${{ inputs.subscriptionId }}') { + if ('${{ env.PLATFORM_KEYVAULT }}' -and '${{ parameters.subscriptionId }}') { $ConvertTokensInputs += @{ TokensKeyVaultName = '${{ variables.PLATFORM_KEYVAULT }}' TokensKeyVaultSubscriptionId = '${{ parameters.subscriptionId }}' From fdf8ba719b99b1e88ce911d9173106aea9de0fba Mon Sep 17 00:00:00 2001 From: MrMCake Date: Mon, 15 Nov 2021 16:08:21 +0100 Subject: [PATCH 004/112] Updated join path --- .github/actions/templates/deployModule/action.yml | 4 ++-- .github/actions/templates/publishModule/action.yml | 6 +++--- .github/actions/templates/removeModule/action.yml | 2 +- .github/actions/templates/validateModuleApis/action.yml | 2 +- .github/actions/templates/validateModuleDeploy/action.yml | 4 ++-- .github/actions/templates/validateModuleGeneral/action.yml | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/actions/templates/deployModule/action.yml b/.github/actions/templates/deployModule/action.yml index a54a798d1b..a025612842 100644 --- a/.github/actions/templates/deployModule/action.yml +++ b/.github/actions/templates/deployModule/action.yml @@ -35,7 +35,7 @@ runs: shell: pwsh run: | # Load used functions - . (Join-Path $env:GITHUB_WORKSPACE 'utilities/pipelines/sharedScripts/Set-EnvironmentOnAgent.ps1') + . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'sharedScripts' 'Set-EnvironmentOnAgent.ps1') # Set agent up Set-EnvironmentOnAgent @@ -87,7 +87,7 @@ runs: shell: pwsh run: | # Load used functions - . (Join-Path $env:GITHUB_WORKSPACE 'utilities/pipelines/resourceDeployment/New-ModuleDeployment.ps1') + . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'resourceDeployment' 'New-ModuleDeployment.ps1') $functionInput = @{ moduleName = '${{ inputs.moduleName }}' diff --git a/.github/actions/templates/publishModule/action.yml b/.github/actions/templates/publishModule/action.yml index d4f968f325..873aa8358d 100644 --- a/.github/actions/templates/publishModule/action.yml +++ b/.github/actions/templates/publishModule/action.yml @@ -44,7 +44,7 @@ runs: shell: pwsh run: | # Load used functions - . (Join-Path $env:GITHUB_WORKSPACE 'utilities/pipelines/sharedScripts/Set-EnvironmentOnAgent.ps1') + . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'sharedScripts' 'Set-EnvironmentOnAgent.ps1') # Set agent up Set-EnvironmentOnAgent @@ -64,7 +64,7 @@ runs: if('${{ inputs.templateSpecsDoPublish }}' -eq 'true') { # Load used functions - . (Join-Path $env:GITHUB_WORKSPACE 'utilities/pipelines/resourcePublish/Publish-ModuleToTemplateSpec.ps1') + . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'resourcePublish' 'Publish-ModuleToTemplateSpec.ps1') $functionInput = @{ templateFilePath = Join-Path $env:GITHUB_WORKSPACE "${{ inputs.templateFilePath }}" @@ -92,7 +92,7 @@ runs: if('${{ inputs.bicepRegistryDoPublish }}' -eq 'true') { # Load used functions - . (Join-Path $env:GITHUB_WORKSPACE 'utilities/pipelines/resourcePublish/Publish-ModuleToPrivateBicepRegistry.ps1') + . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'resourcePublish' 'Publish-ModuleToPrivateBicepRegistry.ps1') $functionInput = @{ templateFilePath = Join-Path $env:GITHUB_WORKSPACE "${{ inputs.templateFilePath }}" diff --git a/.github/actions/templates/removeModule/action.yml b/.github/actions/templates/removeModule/action.yml index fc28d383ff..d1e3641a3f 100644 --- a/.github/actions/templates/removeModule/action.yml +++ b/.github/actions/templates/removeModule/action.yml @@ -23,7 +23,7 @@ runs: shell: pwsh run: | # Load used functions - . (Join-Path $env:GITHUB_WORKSPACE 'utilities/pipelines/sharedScripts/Set-EnvironmentOnAgent.ps1') + . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'sharedScripts' 'Set-EnvironmentOnAgent.ps1') # Set agent up Set-EnvironmentOnAgent diff --git a/.github/actions/templates/validateModuleApis/action.yml b/.github/actions/templates/validateModuleApis/action.yml index 610ce6d3e7..03f9dd7bea 100644 --- a/.github/actions/templates/validateModuleApis/action.yml +++ b/.github/actions/templates/validateModuleApis/action.yml @@ -16,7 +16,7 @@ runs: shell: pwsh run: | # Load used functions - . (Join-Path $env:GITHUB_WORKSPACE 'utilities/pipelines/sharedScripts/Set-EnvironmentOnAgent.ps1') + . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'sharedScripts' 'Set-EnvironmentOnAgent.ps1') # Set agent up Set-EnvironmentOnAgent diff --git a/.github/actions/templates/validateModuleDeploy/action.yml b/.github/actions/templates/validateModuleDeploy/action.yml index 806851a0c1..142699b68c 100644 --- a/.github/actions/templates/validateModuleDeploy/action.yml +++ b/.github/actions/templates/validateModuleDeploy/action.yml @@ -28,7 +28,7 @@ runs: shell: pwsh run: | # Load used functions - . (Join-Path $env:GITHUB_WORKSPACE 'utilities/pipelines/sharedScripts/Set-EnvironmentOnAgent.ps1') + . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'sharedScripts' 'Set-EnvironmentOnAgent.ps1') # Set agent up Set-EnvironmentOnAgent @@ -83,7 +83,7 @@ runs: shell: pwsh run: | # Load used functions - . (Join-Path $env:GITHUB_WORKSPACE 'utilities/pipelines/resourceValidation/Test-TemplateWithParameterFile.ps1') + . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'resourceValidation' 'Test-TemplateWithParameterFile.ps1') # ----------- # # INVOKE TEST # diff --git a/.github/actions/templates/validateModuleGeneral/action.yml b/.github/actions/templates/validateModuleGeneral/action.yml index cb16b51b91..eaea72ee10 100644 --- a/.github/actions/templates/validateModuleGeneral/action.yml +++ b/.github/actions/templates/validateModuleGeneral/action.yml @@ -18,7 +18,7 @@ runs: shell: pwsh run: | # Load used functions - . (Join-Path $env:GITHUB_WORKSPACE 'utilities/pipelines/sharedScripts/Set-EnvironmentOnAgent.ps1') + . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'sharedScripts' 'Set-EnvironmentOnAgent.ps1') # Set agent up Set-EnvironmentOnAgent From 9177ac51ebb2abc4ec6e1e196483e765e571a4c8 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Mon, 15 Nov 2021 16:09:53 +0100 Subject: [PATCH 005/112] Minor fix --- .azuredevops/pipelineTemplates/module.jobs.deploy.yml | 2 +- .azuredevops/pipelineTemplates/module.jobs.validate.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml index 70a9ec4e7a..333aa6a6c6 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml @@ -168,7 +168,7 @@ jobs: verbose = $true } # Add Remote Custom Parameter File Tokens - if ('${{ env.PLATFORM_KEYVAULT }}' -and '${{ parameters.subscriptionId }}') { + if ('${{ variables.PLATFORM_KEYVAULT }}' -and '${{ parameters.subscriptionId }}') { $ConvertTokensInputs += @{ TokensKeyVaultName = '${{ variables.PLATFORM_KEYVAULT }}' TokensKeyVaultSubscriptionId = '${{ parameters.subscriptionId }}' diff --git a/.azuredevops/pipelineTemplates/module.jobs.validate.yml b/.azuredevops/pipelineTemplates/module.jobs.validate.yml index 96201a2ba9..fb073c325d 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.validate.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.validate.yml @@ -340,7 +340,7 @@ jobs: verbose = $true } # Add Remote Custom Parameter File Tokens - if ('${{ env.PLATFORM_KEYVAULT }}' -and '${{ parameters.subscriptionId }}') { + if ('${{ variables.PLATFORM_KEYVAULT }}' -and '${{ parameters.subscriptionId }}') { $ConvertTokensInputs += @{ TokensKeyVaultName = '${{ variables.PLATFORM_KEYVAULT }}' TokensKeyVaultSubscriptionId = '${{ parameters.subscriptionId }}' From 82552d0cbf705812db5871e9b238e408c7b01ead Mon Sep 17 00:00:00 2001 From: MrMCake Date: Mon, 15 Nov 2021 16:52:15 +0100 Subject: [PATCH 006/112] Updated pipe --- .azuredevops/pipelineTemplates/module.jobs.deploy.yml | 10 +++++----- .../pipelineTemplates/module.jobs.validate.yml | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml index 333aa6a6c6..2e62066c30 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml @@ -153,9 +153,9 @@ jobs: @{ Name = 'resourceGroupName'; Value = '${{ parameters.resourceGroupName }}' } @{ Name = 'subscriptionId'; Value = '${{ parameters.subscriptionId }}' } @{ Name = 'managementGroupId'; Value = '${{ parameters.managementGroupId }}' } - @{ Name = "tenantId"; Value = '${{ variables.ARM_TENANT_ID }}' } - @{ Name = "deploymentSpId"; Value = '${{ variables.DEPLOYMENT_SP_ID }}' } - @{ Name = "platformKeyVault"; Value = '${{ variables.PLATFORM_KEYVAULT }}' } + @{ Name = "tenantId"; Value = '$(ARM_TENANT_ID)' } + @{ Name = "deploymentSpId"; Value = '$(DEPLOYMENT_SP_ID)' } + @{ Name = "platformKeyVault"; Value = '$(PLATFORM_KEYVAULT)' } ) | ForEach-Object { [PSCustomObject]$PSItem } # Construct Token Function Input @@ -168,9 +168,9 @@ jobs: verbose = $true } # Add Remote Custom Parameter File Tokens - if ('${{ variables.PLATFORM_KEYVAULT }}' -and '${{ parameters.subscriptionId }}') { + if ('$(PLATFORM_KEYVAULT)' -and '${{ parameters.subscriptionId }}') { $ConvertTokensInputs += @{ - TokensKeyVaultName = '${{ variables.PLATFORM_KEYVAULT }}' + TokensKeyVaultName = '$(PLATFORM_KEYVAULT)' TokensKeyVaultSubscriptionId = '${{ parameters.subscriptionId }}' TokensKeyVaultSecretNamePrefix = $Settings.parameterFileTokens.remoteTokens.keyVaultSecretNamePrefix } diff --git a/.azuredevops/pipelineTemplates/module.jobs.validate.yml b/.azuredevops/pipelineTemplates/module.jobs.validate.yml index fb073c325d..8bbd2a67e4 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.validate.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.validate.yml @@ -325,9 +325,9 @@ jobs: @{ Name = 'resourceGroupName'; Value = '${{ parameters.resourceGroupName }}' } @{ Name = 'subscriptionId'; Value = '${{ parameters.subscriptionId }}' } @{ Name = 'managementGroupId'; Value = '${{ parameters.managementGroupId }}' } - @{ Name = "tenantId"; Value = '${{ variables.ARM_TENANT_ID }}' } - @{ Name = "deploymentSpId"; Value = '${{ variables.DEPLOYMENT_SP_ID }}' } - @{ Name = "platformKeyVault"; Value = '${{ variables.PLATFORM_KEYVAULT }}' } + @{ Name = "tenantId"; Value = '$(ARM_TENANT_ID)' } + @{ Name = "deploymentSpId"; Value = '$(DEPLOYMENT_SP_ID)' } + @{ Name = "platformKeyVault"; Value = '$(PLATFORM_KEYVAULT)' } ) | ForEach-Object { [PSCustomObject]$PSItem } # Construct Token Function Input @@ -340,9 +340,9 @@ jobs: verbose = $true } # Add Remote Custom Parameter File Tokens - if ('${{ variables.PLATFORM_KEYVAULT }}' -and '${{ parameters.subscriptionId }}') { + if ('$(PLATFORM_KEYVAULT)' -and '${{ parameters.subscriptionId }}') { $ConvertTokensInputs += @{ - TokensKeyVaultName = '${{ variables.PLATFORM_KEYVAULT }}' + TokensKeyVaultName = '$(PLATFORM_KEYVAULT)' TokensKeyVaultSubscriptionId = '${{ parameters.subscriptionId }}' TokensKeyVaultSecretNamePrefix = $Settings.parameterFileTokens.remoteTokens.keyVaultSecretNamePrefix } From 0602aaccb63c4a0bdb56ef492950c87d91fe781e Mon Sep 17 00:00:00 2001 From: MrMCake Date: Mon, 15 Nov 2021 22:01:26 +0100 Subject: [PATCH 007/112] Replaced task to use connection --- .azuredevops/pipelineTemplates/module.jobs.deploy.yml | 11 +++++++---- .../pipelineTemplates/module.jobs.validate.yml | 11 +++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml index 2e62066c30..9e2b78d430 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml @@ -136,12 +136,15 @@ jobs: # [Agent] Replace tokens #----------------------- - - task: PowerShell@2 - displayName: 'Replace Tokens [${{ deploymentBlock.path }}]' + - task: AzurePowerShell@5 + displayName: 'Replace Tokens [${{ deploymentBlock.path }}] via connection [${{ parameters.serviceConnection }}]' inputs: - targetType: inline + azureSubscription: ${{ parameters.serviceConnection }} + azurePowerShellVersion: ${{ parameters.azurePowerShellVersion }} + preferredAzurePowerShellVersion: ${{ parameters.preferredAzurePowerShellVersion }} + ScriptType: InlineScript pwsh: true - script: | + inline: | # Load used functions . (Join-Path '$(System.DefaultWorkingDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') diff --git a/.azuredevops/pipelineTemplates/module.jobs.validate.yml b/.azuredevops/pipelineTemplates/module.jobs.validate.yml index 8bbd2a67e4..88820d1df1 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.validate.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.validate.yml @@ -308,12 +308,15 @@ jobs: # [Agent] Replace tokens #----------------------- - - task: PowerShell@2 - displayName: 'Replace Tokens [${{ deploymentBlock.path }}]' + - task: AzurePowerShell@5 + displayName: 'Replace Tokens [${{ deploymentBlock.path }}] via connection [${{ parameters.serviceConnection }}]' inputs: - targetType: inline + azureSubscription: ${{ parameters.serviceConnection }} + azurePowerShellVersion: ${{ parameters.azurePowerShellVersion }} + preferredAzurePowerShellVersion: ${{ parameters.preferredAzurePowerShellVersion }} + ScriptType: InlineScript pwsh: true - script: | + inline: | # Load used functions . (Join-Path '$(System.DefaultWorkingDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') From fe8cfd2feaa4b551848d2b8a7c6190440fcebb85 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Mon, 15 Nov 2021 22:05:20 +0100 Subject: [PATCH 008/112] Update to latest --- .../tokensReplacement/Convert-TokensInParameterFile.ps1 | 1 + 1 file changed, 1 insertion(+) diff --git a/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 b/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 index dba81b7eda..5d1f66f8bf 100644 --- a/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 +++ b/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 @@ -149,6 +149,7 @@ function Convert-TokensInParameterFile { $ConversionStatus = $true } catch { $ConversionStatus = $false + Write-Verbose $_.Exception.Message -Verbose } } end { From 64cd2e6b66e71c51ec45f18b4798bc1ec5aa32a8 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Mon, 15 Nov 2021 22:08:20 +0100 Subject: [PATCH 009/112] Update to latest --- .azuredevops/pipelineTemplates/module.jobs.deploy.yml | 2 +- .azuredevops/pipelineTemplates/module.jobs.validate.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml index 9e2b78d430..b265c57395 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml @@ -163,7 +163,7 @@ jobs: # Construct Token Function Input $ConvertTokensInputs = @{ - ParameterFilePath = '${{ deploymentBlock.path }}' + ParameterFilePath = Join-Path '$(parametersRepoRoot)' '${{ deploymentBlock.path }}' DefaultParameterFileTokens = $DefaultParameterFileTokens LocalCustomParameterFileTokens = $Settings.parameterFileTokens.localTokens.tokens TokenPrefix = $Settings.parameterFileTokens.tokenPrefix diff --git a/.azuredevops/pipelineTemplates/module.jobs.validate.yml b/.azuredevops/pipelineTemplates/module.jobs.validate.yml index 88820d1df1..44a7ea2e40 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.validate.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.validate.yml @@ -335,7 +335,7 @@ jobs: # Construct Token Function Input $ConvertTokensInputs = @{ - ParameterFilePath = '${{ deploymentBlock.path }}' + ParameterFilePath = Join-Path '$(parametersRepoRoot)' '${{ deploymentBlock.path }}' DefaultParameterFileTokens = $DefaultParameterFileTokens LocalCustomParameterFileTokens = $Settings.parameterFileTokens.localTokens.tokens TokenPrefix = $Settings.parameterFileTokens.tokenPrefix From ba10661aeb8f17d0749489d21b7d7ff40b6634d7 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Tue, 16 Nov 2021 14:24:09 +0100 Subject: [PATCH 010/112] Minor update --- .azuredevops/pipelineTemplates/module.jobs.deploy.yml | 2 +- .azuredevops/pipelineTemplates/module.jobs.validate.yml | 2 +- .github/actions/templates/deployModule/action.yml | 2 +- .github/actions/templates/validateModuleDeploy/action.yml | 2 +- .../helper/Get-RemoteCustomParameterFileTokens.ps1 | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml index b265c57395..969e668797 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml @@ -183,7 +183,7 @@ jobs: Write-Verbose ($ConvertTokensInputs | ConvertTo-Json | Out-String) -Verbose # Invoke Token Replacement Functionality - Convert-TokensInParameterFile @ConvertTokensInputs -Verbose + $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose # [Deployment] task(s) #--------------------- diff --git a/.azuredevops/pipelineTemplates/module.jobs.validate.yml b/.azuredevops/pipelineTemplates/module.jobs.validate.yml index 44a7ea2e40..09eb33446c 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.validate.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.validate.yml @@ -355,7 +355,7 @@ jobs: Write-Verbose ($ConvertTokensInputs | ConvertTo-Json | Out-String) -Verbose # Invoke Token Replacement Functionality - Convert-TokensInParameterFile @ConvertTokensInputs -Verbose + $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose # [Test Deployment] task(s) #-------------------------- diff --git a/.github/actions/templates/deployModule/action.yml b/.github/actions/templates/deployModule/action.yml index a025612842..5a1526acf7 100644 --- a/.github/actions/templates/deployModule/action.yml +++ b/.github/actions/templates/deployModule/action.yml @@ -81,7 +81,7 @@ runs: } } # Invoke Token Replacement Functionality - Convert-TokensInParameterFile @ConvertTokensInputs -Verbose + $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose - name: 'Deploy [${{ inputs.templateFilePath }}]' shell: pwsh diff --git a/.github/actions/templates/validateModuleDeploy/action.yml b/.github/actions/templates/validateModuleDeploy/action.yml index 142699b68c..3ac7b66d3b 100644 --- a/.github/actions/templates/validateModuleDeploy/action.yml +++ b/.github/actions/templates/validateModuleDeploy/action.yml @@ -75,7 +75,7 @@ runs: } } # Invoke Token Replacement Functionality - Convert-TokensInParameterFile @ConvertTokensInputs -Verbose + $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose # [Test Deployment] task(s) #-------------------------- diff --git a/utilities/pipelines/tokensReplacement/helper/Get-RemoteCustomParameterFileTokens.ps1 b/utilities/pipelines/tokensReplacement/helper/Get-RemoteCustomParameterFileTokens.ps1 index f3fafdbc83..bb69c61017 100644 --- a/utilities/pipelines/tokensReplacement/helper/Get-RemoteCustomParameterFileTokens.ps1 +++ b/utilities/pipelines/tokensReplacement/helper/Get-RemoteCustomParameterFileTokens.ps1 @@ -51,7 +51,7 @@ function Get-RemoteCustomParameterFileTokens { ## Remote Custom Parameter File Tokens (Should Not Contain Sensitive Information if being passed to regular strings) Write-Verbose "Finding Tokens Key Vault by Name: $TokensKeyVaultName" ## Find Token Key Vault by Name - $TokensKeyVault = Get-AzKeyVault -VaultName $TokensKeyVaultName -ErrorAction SilentlyContinue + $TokensKeyVault = Get-AzKeyVault -VaultName $TokensKeyVaultName -ErrorAction 'SilentlyContinue' # If no Key Vault exists. Exit if (!$TokensKeyVault) { Write-Verbose('No Tokens Key Vault Detected in the current Subscription Context') From 01377da0abd1331a00a0f1c898c06aed63ccd99a Mon Sep 17 00:00:00 2001 From: MrMCake Date: Tue, 16 Nov 2021 14:28:23 +0100 Subject: [PATCH 011/112] Update to latest --- .github/workflows/platform.dependencies.yml | 41 +-------------------- 1 file changed, 1 insertion(+), 40 deletions(-) diff --git a/.github/workflows/platform.dependencies.yml b/.github/workflows/platform.dependencies.yml index 7ddfdd46b0..f8b64e31a9 100644 --- a/.github/workflows/platform.dependencies.yml +++ b/.github/workflows/platform.dependencies.yml @@ -81,52 +81,13 @@ jobs: with: moduleName: '${{ env.moduleName }}' templateFilePath: 'arm/${{ env.namespace }}/deploy.bicep' - parameterFilePath: 'utilities/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' + parameterFilePath: 'utilities/pipelines/dependencies/${{ env.namespace }}/parameters/${{ matrix.parameterFilePaths }}' location: '${{ env.defaultLocation }}' resourceGroupName: '${{ env.resourceGroupNamePlatform }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' managementGroupId: '${{ secrets.ARM_MGMTGROUP_ID }}' removeDeployment: '${{ env.removeDeployment }}' - job_deploy_kv_tokens_secrets: - runs-on: ubuntu-20.04 - name: 'Set Local Tokens in Key Vault' - needs: - - job_deploy_kv_platform - steps: - - name: 'Checkout' - if: '${{ env.PLATFORM_KEYVAULT }}' - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - name: Azure Login - if: '${{ env.PLATFORM_KEYVAULT }}' - uses: azure/login@v1 - with: - creds: ${{ secrets.AZURE_CREDENTIALS }} - enable-AzPSSession: true - - name: 'Create Token Secrets in Key Vault' - if: '${{ env.PLATFORM_KEYVAULT }}' - shell: pwsh - run: | - # Load Settings File - $Settings = Get-Content -Path "$env:GITHUB_WORKSPACE/settings.json" | ConvertFrom-Json - # Load used functions - . "$env:GITHUB_WORKSPACE/.github/actions/sharedScripts/Set-EnvironmentOnAgent.ps1" - . "$env:GITHUB_WORKSPACE/utilities/pipelines/tokensReplacement/Set-LocalCustomParameterFileTokensInKeyVault.ps1" - # Set agent up - Set-EnvironmentOnAgent - # Create Tokens in Key Vault - if('${{ env.PLATFORM_KEYVAULT }}' -and $Settings.parameterFileTokens.remoteTokens.syncLocalTokens){ - write-verbose "Syncing Local Parameter File Tokens to Key Vault" - Set-LocalCustomParameterFileTokensInKeyVault ` - -TokenKeyVaultName '${{ env.PLATFORM_KEYVAULT }}' ` - -SubscriptionId '${{ secrets.ARM_SUBSCRIPTION_ID }}' ` - -LocalCustomParameterFileTokens $Settings.parameterFileTokens.localTokens.tokens ` - -TokenKeyVaultSecretNamePrefix $Settings.parameterFileTokens.remoteTokens.keyVaultSecretNamePrefix ` - -verbose - } - job_deploy_msi: runs-on: ubuntu-20.04 name: 'Deploy user assigned identity' From fdc078ba3f527276be5b69aca44a02b7b3180c7d Mon Sep 17 00:00:00 2001 From: MrMCake Date: Tue, 16 Nov 2021 14:29:37 +0100 Subject: [PATCH 012/112] Update to latest --- .../helper/Convert-TokensInFileList.ps1 | 1 + .../helper/Get-RemoteCustomParameterFileTokens.ps1 | 14 ++++---------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/utilities/pipelines/tokensReplacement/helper/Convert-TokensInFileList.ps1 b/utilities/pipelines/tokensReplacement/helper/Convert-TokensInFileList.ps1 index b6e1a80f5e..439add4458 100644 --- a/utilities/pipelines/tokensReplacement/helper/Convert-TokensInFileList.ps1 +++ b/utilities/pipelines/tokensReplacement/helper/Convert-TokensInFileList.ps1 @@ -75,6 +75,7 @@ function Convert-TokensInFileList { # Perform the Replace of Tokens in the File $TokensReplaceWith | ForEach-Object { + Write-Verbose "Finding and Replacing Token: $($PSItem.Name)" # If type is secure string if (($PSItem.Value | Get-Member -MemberType Property | Select-Object -ExpandProperty 'TypeName') -eq 'System.Security.SecureString') { $PSItem.Value = $PSItem.Value | ConvertFrom-SecureString -AsPlainText diff --git a/utilities/pipelines/tokensReplacement/helper/Get-RemoteCustomParameterFileTokens.ps1 b/utilities/pipelines/tokensReplacement/helper/Get-RemoteCustomParameterFileTokens.ps1 index bb69c61017..986653c81b 100644 --- a/utilities/pipelines/tokensReplacement/helper/Get-RemoteCustomParameterFileTokens.ps1 +++ b/utilities/pipelines/tokensReplacement/helper/Get-RemoteCustomParameterFileTokens.ps1 @@ -51,7 +51,7 @@ function Get-RemoteCustomParameterFileTokens { ## Remote Custom Parameter File Tokens (Should Not Contain Sensitive Information if being passed to regular strings) Write-Verbose "Finding Tokens Key Vault by Name: $TokensKeyVaultName" ## Find Token Key Vault by Name - $TokensKeyVault = Get-AzKeyVault -VaultName $TokensKeyVaultName -ErrorAction 'SilentlyContinue' + $TokensKeyVault = Get-AzKeyVault -VaultName $TokensKeyVaultName -ErrorAction SilentlyContinue # If no Key Vault exists. Exit if (!$TokensKeyVault) { Write-Verbose('No Tokens Key Vault Detected in the current Subscription Context') @@ -60,7 +60,7 @@ function Get-RemoteCustomParameterFileTokens { ## Get Tokens Write-Verbose("Tokens Key Vault Found: $TokensKeyVaultName") $Tokens = Get-AzKeyVaultSecret -VaultName $TokensKeyVaultName -ErrorAction SilentlyContinue | - Where-Object -Property ContentType -Like '*ParameterFileToken' | + Where-Object -Property ContentType -EQ 'ParameterFileToken' | Where-Object -Property Name -Like "$($TokensKeyVaultSecretNamePrefix)*" ## If no Tokens exist. Exit if (!$Tokens) { @@ -75,14 +75,8 @@ function Get-RemoteCustomParameterFileTokens { SecretName = $TokenName VaultName = $TokensKeyVaultName } - ## Check if Token Type is 'SecureParameterFileToken' - if (($PSItem.ContentType -eq 'SecureParameterFileToken')) { - $TokenValue = (Get-AzKeyVaultSecret @GetTokenInput -ErrorAction SilentlyContinue).SecretValue - } else { - $GetTokenInput += @{ AsPlainText = $true } - $TokenValue = Get-AzKeyVaultSecret @GetTokenInput -ErrorAction SilentlyContinue - } - ## Remove Prefix if Provided to Find the Token (Secret) in Key Vault + $TokenValue = (Get-AzKeyVaultSecret @GetTokenInput -ErrorAction SilentlyContinue).SecretValue + ## Remove Prefix if Provided if ($TokensKeyVaultSecretNamePrefix) { $TokenName = $TokenName.Replace($TokensKeyVaultSecretNamePrefix, '') } From 2f312e94da590cbcd1f22c5fc25e6d420265d5c8 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Tue, 16 Nov 2021 14:30:37 +0100 Subject: [PATCH 013/112] Update to latest --- .../Convert-TokensInFileList.ps1 | 94 +++++++++++++++++++ .../Get-RemoteCustomParameterFileTokens.ps1 | 90 ++++++++++++++++++ 2 files changed, 184 insertions(+) create mode 100644 utilities/tokensReplacement/Convert-TokensInFileList.ps1 create mode 100644 utilities/tokensReplacement/Get-RemoteCustomParameterFileTokens.ps1 diff --git a/utilities/tokensReplacement/Convert-TokensInFileList.ps1 b/utilities/tokensReplacement/Convert-TokensInFileList.ps1 new file mode 100644 index 0000000000..439add4458 --- /dev/null +++ b/utilities/tokensReplacement/Convert-TokensInFileList.ps1 @@ -0,0 +1,94 @@ +<# +.SYNOPSIS +Recieves an Input Object of Name/Value and Searches the Current File for the Name and Replaces it with the Value + +.DESCRIPTION +Recieves an Input Object of Name/Value and Searches the Current File for the Name and Replaces it with the Value + +.PARAMETER Paths +Mandatory. Full Path for the file that contains the strings that need to be replaced. Supports multiple files comma seperated. + +.PARAMETER TokensReplaceWith +Mandatory. An Object that contains the Replace Key and With Key For replacing tokens in files. See Example for structure. + +.PARAMETER RestoreTokens +Optional. A Boolean That swaps the tokens in the TokensReplaceWith Object. Default is False + +.EXAMPLE +$Object = @( + @{ Replace = "TextA"; With = "TextB" } + @{ Replace = "TextC"; With = "TextD" } +) +Convert-TokensInFileList -Paths 'C:\fileA.txt','C:\fileB.txt' -TokensReplaceWith $Object + +.EXAMPLE +$Object = @( + @{ Replace = "TextA"; With = "TextB" } + @{ Replace = "TextC"; With = "TextD" } +) +Convert-TokensInFileList -Paths 'C:\fileA.txt','C:\fileB.txt' -TokensReplaceWith $Object -OutputDirectory 'C:\customDirectory' + +.EXAMPLE +$Object = @( + @{ Replace = "TextA"; With = "TextB" } + @{ Replace = "TextC"; With = "TextD" } +) +Convert-TokensInFileList -Paths 'C:\fileA.txt','C:\fileB.txt' -TokensReplaceWith $Object -RestoreTokens $true +#> +function Convert-TokensInFileList { + [CmdletBinding()] + param( + [Parameter(Mandatory)] + [string[]] $Paths, + + [Parameter(Mandatory, ValueFromPipeline = $true)] + [psobject] $TokensReplaceWith, + + [Parameter(Mandatory = $false)] + [string] $OutputDirectory, + + [Parameter(Mandatory = $false)] + [bool] $RestoreTokens = $false + ) + # Restore Tokens (Swap Replace with Value) + if ($RestoreTokens) { + Write-Verbose 'Restoring Tokens' + $TokensReplaceWith | ForEach-Object { + $Name = $PSitem.Value + $Value = $PSItem.Name + $PSitem.Name = $Name; $PSitem.Value = $Value + } + } + # Begin the Replace Function + Write-Verbose "$($TokensReplaceWith.Count) Tokens Found" + # Process Path for Token Replacement + foreach ($Path in $Paths) { + # Extract Required Content From the Input + try { + $File = Get-Content -Path $Path + $FileName = Split-Path $Path -Leaf + } catch { + throw $PSItem.Exception.Message + exit + } + Write-Verbose "Processing Tokens for file: $FileName" + # Perform the Replace of Tokens in the File + $TokensReplaceWith | + ForEach-Object { + Write-Verbose "Finding and Replacing Token: $($PSItem.Name)" + # If type is secure string + if (($PSItem.Value | Get-Member -MemberType Property | Select-Object -ExpandProperty 'TypeName') -eq 'System.Security.SecureString') { + $PSItem.Value = $PSItem.Value | ConvertFrom-SecureString -AsPlainText + } + $File = $File -replace $PSItem.Name, $PSItem.Value + } + # Set Content + if ($OutputDirectory -and (Test-Path -Path $OutputDirectory -PathType Container)) { + # If Specific Output Directory Provided + $Path = (Join-Path $OutputDirectory $FileName) + } + # Set Content to the Same Path + Write-Verbose "Writing Output for: $FileName" + $File | Set-Content -Path $Path + } +} diff --git a/utilities/tokensReplacement/Get-RemoteCustomParameterFileTokens.ps1 b/utilities/tokensReplacement/Get-RemoteCustomParameterFileTokens.ps1 new file mode 100644 index 0000000000..986653c81b --- /dev/null +++ b/utilities/tokensReplacement/Get-RemoteCustomParameterFileTokens.ps1 @@ -0,0 +1,90 @@ +<# +.SYNOPSIS +This script gets the tokens <> that exist in a parameter file from an Azure Key Vault so that it can be swapped at runtime + +.DESCRIPTION +This script gets the tokens <> that exist in a parameter file from an Azure Key Vault so that it can be swapped at runtime + +.PARAMETER SubscriptionId +Mandatory. The Azure subscription containing the key vault. + +.PARAMETER TokensKeyVaultName +Optional. The name of the Key Vault. It will be used to find a Key Vault that contains Custom Parameter File Tokens. + +.PARAMETER TokensKeyVaultSecretNamePrefix +Optional. An identifier used to filter for the Token Names (Secret Name) in Key Vault (i.e. ParameterFileToken-) + +.EXAMPLE +Get-RemoteCustomParameterFileTokens -TokensKeyVaultName 'contoso-kv' -SubscriptionId '1234-1234'12345678-1234-123456789101' + +.EXAMPLE +Get-RemoteCustomParameterFileTokens -TokensKeyVaultName 'contoso-kv' -SubscriptionId '1234-1234'12345678-1234-123456789101' -TokensKeyVaultSecretNamePrefix 'myToken-' + +#> +function Get-RemoteCustomParameterFileTokens { + [CmdletBinding()] + param ( + [parameter(Mandatory)] + [string]$TokensKeyVaultName, + + [parameter(Mandatory)] + [string]$SubscriptionId, + + [parameter(Mandatory = $false)] + [string]$TokensKeyVaultSecretNamePrefix = '*' + ) + begin { + ## Set Azure Context + try { + $Context = Get-AzContext -ListAvailable | Where-Object Subscription -Match $SubscriptionId + if ($Context) { + Write-Verbose('Setting Azure Context') + $Context | Set-AzContext | Out-Null + } + } catch { + throw $PSitem.Exception.Message + exit + } + $ReturnedTokens = @() + } + process { + ## Remote Custom Parameter File Tokens (Should Not Contain Sensitive Information if being passed to regular strings) + Write-Verbose "Finding Tokens Key Vault by Name: $TokensKeyVaultName" + ## Find Token Key Vault by Name + $TokensKeyVault = Get-AzKeyVault -VaultName $TokensKeyVaultName -ErrorAction SilentlyContinue + # If no Key Vault exists. Exit + if (!$TokensKeyVault) { + Write-Verbose('No Tokens Key Vault Detected in the current Subscription Context') + exit + } + ## Get Tokens + Write-Verbose("Tokens Key Vault Found: $TokensKeyVaultName") + $Tokens = Get-AzKeyVaultSecret -VaultName $TokensKeyVaultName -ErrorAction SilentlyContinue | + Where-Object -Property ContentType -EQ 'ParameterFileToken' | + Where-Object -Property Name -Like "$($TokensKeyVaultSecretNamePrefix)*" + ## If no Tokens exist. Exit + if (!$Tokens) { + Write-Verbose("No Tokens Found using Secret Name Prefix '$TokensKeyVaultSecretNamePrefix' In Key Vault ($TokensKeyVaultName) or Principal does not have permissions to read it") + exit + } + ## Get Token Values and Add to the Returned Object + Write-Verbose("Key Vault Tokens Found: $($Tokens.count)") + $Tokens | ForEach-Object { + $TokenName = $PSItem.Name + $GetTokenInput = @{ + SecretName = $TokenName + VaultName = $TokensKeyVaultName + } + $TokenValue = (Get-AzKeyVaultSecret @GetTokenInput -ErrorAction SilentlyContinue).SecretValue + ## Remove Prefix if Provided + if ($TokensKeyVaultSecretNamePrefix) { + $TokenName = $TokenName.Replace($TokensKeyVaultSecretNamePrefix, '') + } + ## Add Token to Return Object + $ReturnedTokens += [ordered]@{ Name = $TokenName; Value = $TokenValue } + } + } + end { + return [psobject]$ReturnedTokens | ForEach-Object { [PSCustomObject]$PSItem } + } +} From 49e31cebf6b71982ee4e04c0a91f58b27fb2cf3c Mon Sep 17 00:00:00 2001 From: MrMCake Date: Tue, 16 Nov 2021 14:35:02 +0100 Subject: [PATCH 014/112] Merged upstream --- .../Convert-TokensInFileList.ps1 | 94 ------------------- .../Get-RemoteCustomParameterFileTokens.ps1 | 90 ------------------ 2 files changed, 184 deletions(-) delete mode 100644 utilities/tokensReplacement/Convert-TokensInFileList.ps1 delete mode 100644 utilities/tokensReplacement/Get-RemoteCustomParameterFileTokens.ps1 diff --git a/utilities/tokensReplacement/Convert-TokensInFileList.ps1 b/utilities/tokensReplacement/Convert-TokensInFileList.ps1 deleted file mode 100644 index 439add4458..0000000000 --- a/utilities/tokensReplacement/Convert-TokensInFileList.ps1 +++ /dev/null @@ -1,94 +0,0 @@ -<# -.SYNOPSIS -Recieves an Input Object of Name/Value and Searches the Current File for the Name and Replaces it with the Value - -.DESCRIPTION -Recieves an Input Object of Name/Value and Searches the Current File for the Name and Replaces it with the Value - -.PARAMETER Paths -Mandatory. Full Path for the file that contains the strings that need to be replaced. Supports multiple files comma seperated. - -.PARAMETER TokensReplaceWith -Mandatory. An Object that contains the Replace Key and With Key For replacing tokens in files. See Example for structure. - -.PARAMETER RestoreTokens -Optional. A Boolean That swaps the tokens in the TokensReplaceWith Object. Default is False - -.EXAMPLE -$Object = @( - @{ Replace = "TextA"; With = "TextB" } - @{ Replace = "TextC"; With = "TextD" } -) -Convert-TokensInFileList -Paths 'C:\fileA.txt','C:\fileB.txt' -TokensReplaceWith $Object - -.EXAMPLE -$Object = @( - @{ Replace = "TextA"; With = "TextB" } - @{ Replace = "TextC"; With = "TextD" } -) -Convert-TokensInFileList -Paths 'C:\fileA.txt','C:\fileB.txt' -TokensReplaceWith $Object -OutputDirectory 'C:\customDirectory' - -.EXAMPLE -$Object = @( - @{ Replace = "TextA"; With = "TextB" } - @{ Replace = "TextC"; With = "TextD" } -) -Convert-TokensInFileList -Paths 'C:\fileA.txt','C:\fileB.txt' -TokensReplaceWith $Object -RestoreTokens $true -#> -function Convert-TokensInFileList { - [CmdletBinding()] - param( - [Parameter(Mandatory)] - [string[]] $Paths, - - [Parameter(Mandatory, ValueFromPipeline = $true)] - [psobject] $TokensReplaceWith, - - [Parameter(Mandatory = $false)] - [string] $OutputDirectory, - - [Parameter(Mandatory = $false)] - [bool] $RestoreTokens = $false - ) - # Restore Tokens (Swap Replace with Value) - if ($RestoreTokens) { - Write-Verbose 'Restoring Tokens' - $TokensReplaceWith | ForEach-Object { - $Name = $PSitem.Value - $Value = $PSItem.Name - $PSitem.Name = $Name; $PSitem.Value = $Value - } - } - # Begin the Replace Function - Write-Verbose "$($TokensReplaceWith.Count) Tokens Found" - # Process Path for Token Replacement - foreach ($Path in $Paths) { - # Extract Required Content From the Input - try { - $File = Get-Content -Path $Path - $FileName = Split-Path $Path -Leaf - } catch { - throw $PSItem.Exception.Message - exit - } - Write-Verbose "Processing Tokens for file: $FileName" - # Perform the Replace of Tokens in the File - $TokensReplaceWith | - ForEach-Object { - Write-Verbose "Finding and Replacing Token: $($PSItem.Name)" - # If type is secure string - if (($PSItem.Value | Get-Member -MemberType Property | Select-Object -ExpandProperty 'TypeName') -eq 'System.Security.SecureString') { - $PSItem.Value = $PSItem.Value | ConvertFrom-SecureString -AsPlainText - } - $File = $File -replace $PSItem.Name, $PSItem.Value - } - # Set Content - if ($OutputDirectory -and (Test-Path -Path $OutputDirectory -PathType Container)) { - # If Specific Output Directory Provided - $Path = (Join-Path $OutputDirectory $FileName) - } - # Set Content to the Same Path - Write-Verbose "Writing Output for: $FileName" - $File | Set-Content -Path $Path - } -} diff --git a/utilities/tokensReplacement/Get-RemoteCustomParameterFileTokens.ps1 b/utilities/tokensReplacement/Get-RemoteCustomParameterFileTokens.ps1 deleted file mode 100644 index 986653c81b..0000000000 --- a/utilities/tokensReplacement/Get-RemoteCustomParameterFileTokens.ps1 +++ /dev/null @@ -1,90 +0,0 @@ -<# -.SYNOPSIS -This script gets the tokens <> that exist in a parameter file from an Azure Key Vault so that it can be swapped at runtime - -.DESCRIPTION -This script gets the tokens <> that exist in a parameter file from an Azure Key Vault so that it can be swapped at runtime - -.PARAMETER SubscriptionId -Mandatory. The Azure subscription containing the key vault. - -.PARAMETER TokensKeyVaultName -Optional. The name of the Key Vault. It will be used to find a Key Vault that contains Custom Parameter File Tokens. - -.PARAMETER TokensKeyVaultSecretNamePrefix -Optional. An identifier used to filter for the Token Names (Secret Name) in Key Vault (i.e. ParameterFileToken-) - -.EXAMPLE -Get-RemoteCustomParameterFileTokens -TokensKeyVaultName 'contoso-kv' -SubscriptionId '1234-1234'12345678-1234-123456789101' - -.EXAMPLE -Get-RemoteCustomParameterFileTokens -TokensKeyVaultName 'contoso-kv' -SubscriptionId '1234-1234'12345678-1234-123456789101' -TokensKeyVaultSecretNamePrefix 'myToken-' - -#> -function Get-RemoteCustomParameterFileTokens { - [CmdletBinding()] - param ( - [parameter(Mandatory)] - [string]$TokensKeyVaultName, - - [parameter(Mandatory)] - [string]$SubscriptionId, - - [parameter(Mandatory = $false)] - [string]$TokensKeyVaultSecretNamePrefix = '*' - ) - begin { - ## Set Azure Context - try { - $Context = Get-AzContext -ListAvailable | Where-Object Subscription -Match $SubscriptionId - if ($Context) { - Write-Verbose('Setting Azure Context') - $Context | Set-AzContext | Out-Null - } - } catch { - throw $PSitem.Exception.Message - exit - } - $ReturnedTokens = @() - } - process { - ## Remote Custom Parameter File Tokens (Should Not Contain Sensitive Information if being passed to regular strings) - Write-Verbose "Finding Tokens Key Vault by Name: $TokensKeyVaultName" - ## Find Token Key Vault by Name - $TokensKeyVault = Get-AzKeyVault -VaultName $TokensKeyVaultName -ErrorAction SilentlyContinue - # If no Key Vault exists. Exit - if (!$TokensKeyVault) { - Write-Verbose('No Tokens Key Vault Detected in the current Subscription Context') - exit - } - ## Get Tokens - Write-Verbose("Tokens Key Vault Found: $TokensKeyVaultName") - $Tokens = Get-AzKeyVaultSecret -VaultName $TokensKeyVaultName -ErrorAction SilentlyContinue | - Where-Object -Property ContentType -EQ 'ParameterFileToken' | - Where-Object -Property Name -Like "$($TokensKeyVaultSecretNamePrefix)*" - ## If no Tokens exist. Exit - if (!$Tokens) { - Write-Verbose("No Tokens Found using Secret Name Prefix '$TokensKeyVaultSecretNamePrefix' In Key Vault ($TokensKeyVaultName) or Principal does not have permissions to read it") - exit - } - ## Get Token Values and Add to the Returned Object - Write-Verbose("Key Vault Tokens Found: $($Tokens.count)") - $Tokens | ForEach-Object { - $TokenName = $PSItem.Name - $GetTokenInput = @{ - SecretName = $TokenName - VaultName = $TokensKeyVaultName - } - $TokenValue = (Get-AzKeyVaultSecret @GetTokenInput -ErrorAction SilentlyContinue).SecretValue - ## Remove Prefix if Provided - if ($TokensKeyVaultSecretNamePrefix) { - $TokenName = $TokenName.Replace($TokensKeyVaultSecretNamePrefix, '') - } - ## Add Token to Return Object - $ReturnedTokens += [ordered]@{ Name = $TokenName; Value = $TokenValue } - } - } - end { - return [psobject]$ReturnedTokens | ForEach-Object { [PSCustomObject]$PSItem } - } -} From dde183a3ededef5def69a3f52b55ebebf19c63ad Mon Sep 17 00:00:00 2001 From: MrMCake Date: Tue, 16 Nov 2021 14:39:51 +0100 Subject: [PATCH 015/112] Accounted for empty var --- .azuredevops/pipelineTemplates/module.jobs.deploy.yml | 3 ++- .azuredevops/pipelineTemplates/module.jobs.validate.yml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml index 969e668797..e3697ac14d 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml @@ -171,7 +171,8 @@ jobs: verbose = $true } # Add Remote Custom Parameter File Tokens - if ('$(PLATFORM_KEYVAULT)' -and '${{ parameters.subscriptionId }}') { + # Note: if parameter is like "`$(PLATFORM_KEYVAULT*" it was not set as the variable was not resolved + if ('${{ parameters.subscriptionId }}' -and -not [String]::IsNullOrEmpty('$(PLATFORM_KEYVAULT)') -and '$(PLATFORM_KEYVAULT)' -notlike "`$(PLATFORM_KEYVAULT*") { $ConvertTokensInputs += @{ TokensKeyVaultName = '$(PLATFORM_KEYVAULT)' TokensKeyVaultSubscriptionId = '${{ parameters.subscriptionId }}' diff --git a/.azuredevops/pipelineTemplates/module.jobs.validate.yml b/.azuredevops/pipelineTemplates/module.jobs.validate.yml index 09eb33446c..75cdcb5ccc 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.validate.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.validate.yml @@ -343,7 +343,7 @@ jobs: verbose = $true } # Add Remote Custom Parameter File Tokens - if ('$(PLATFORM_KEYVAULT)' -and '${{ parameters.subscriptionId }}') { + if ('${{ parameters.subscriptionId }}' -and -not [String]::IsNullOrEmpty('$(PLATFORM_KEYVAULT)') -and '$(PLATFORM_KEYVAULT)' -notlike "`$(PLATFORM_KEYVAULT*") { $ConvertTokensInputs += @{ TokensKeyVaultName = '$(PLATFORM_KEYVAULT)' TokensKeyVaultSubscriptionId = '${{ parameters.subscriptionId }}' From 001b2cec66c6e08ec14ddfc415a7b856dcb457f2 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Tue, 16 Nov 2021 14:41:21 +0100 Subject: [PATCH 016/112] Updated path handling --- .azuredevops/pipelineTemplates/module.jobs.validate.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.azuredevops/pipelineTemplates/module.jobs.validate.yml b/.azuredevops/pipelineTemplates/module.jobs.validate.yml index 75cdcb5ccc..06439a1d36 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.validate.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.validate.yml @@ -318,10 +318,10 @@ jobs: pwsh: true inline: | # Load used functions - . (Join-Path '$(System.DefaultWorkingDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') + . (Join-Path '$(moduleRepoRoot)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') # Load Settings File - $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json + $Settings = Get-Content -Path (Join-Path '$(moduleRepoRoot)' 'settings.json') | ConvertFrom-Json # Initialize Default Parameter File Tokens $DefaultParameterFileTokens = @( @@ -343,6 +343,7 @@ jobs: verbose = $true } # Add Remote Custom Parameter File Tokens + # Note: if parameter is like "`$(PLATFORM_KEYVAULT*" it was not set as the variable was not resolved if ('${{ parameters.subscriptionId }}' -and -not [String]::IsNullOrEmpty('$(PLATFORM_KEYVAULT)') -and '$(PLATFORM_KEYVAULT)' -notlike "`$(PLATFORM_KEYVAULT*") { $ConvertTokensInputs += @{ TokensKeyVaultName = '$(PLATFORM_KEYVAULT)' From 762ea4fcc68c75d6c56a8b01a0115ed97db9918b Mon Sep 17 00:00:00 2001 From: MrMCake Date: Tue, 16 Nov 2021 20:57:36 +0100 Subject: [PATCH 017/112] Minor update --- .azuredevops/pipelineTemplates/module.jobs.deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml index e3697ac14d..8bb4de81dc 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml @@ -146,10 +146,10 @@ jobs: pwsh: true inline: | # Load used functions - . (Join-Path '$(System.DefaultWorkingDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') + . (Join-Path '$(moduleRepoRoot)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') # Load Settings File - $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json + $Settings = Get-Content -Path (Join-Path '$(moduleRepoRoot)' 'settings.json') | ConvertFrom-Json # Initialize Default Parameter File Tokens $DefaultParameterFileTokens = @( From 03f0c73948792670d6f2fd2c07dbf180d08c1ae5 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Wed, 17 Nov 2021 10:56:49 +0100 Subject: [PATCH 018/112] Removed min parameter file from VM to avoid conflict --- .../ms.compute.virtualmachines.yml | 2 - .../.parameters/min.parameters.json | 53 ------------------- 2 files changed, 55 deletions(-) delete mode 100644 arm/Microsoft.Compute/virtualMachines/.parameters/min.parameters.json diff --git a/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml b/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml index 8985acf8d2..9e080eb52e 100644 --- a/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml +++ b/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml @@ -46,7 +46,6 @@ stages: parameters: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - path: $(modulePath)/.parameters/min.parameters.json - stage: Deployment jobs: @@ -55,7 +54,6 @@ stages: removeDeployment: '${{ parameters.removeDeployment }}' deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - path: $(modulePath)/.parameters/min.parameters.json - stage: Publishing condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) diff --git a/arm/Microsoft.Compute/virtualMachines/.parameters/min.parameters.json b/arm/Microsoft.Compute/virtualMachines/.parameters/min.parameters.json deleted file mode 100644 index cb456b2c63..0000000000 --- a/arm/Microsoft.Compute/virtualMachines/.parameters/min.parameters.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "virtualMachineName": { - "value": "sxx-vm-002" - }, - "osDisk": { - "value": { - "createOption": "fromImage", - "diskSizeGB": "128", - "managedDisk": { - "storageAccountType": "Premium_LRS" - } - } - }, - "imageReference": { - "value": { - "publisher": "MicrosoftWindowsServer", - "offer": "WindowsServer", - "sku": "2016-Datacenter", - "version": "latest" - } - }, - "adminUsername": { - "value": "localAdminUser" - }, - "adminPassword": { - "reference": { - "keyVault": { - "id": "/subscriptions/<>/resourceGroups/validation-rg/providers/Microsoft.KeyVault/vaults/adp-sxx-az-kv-x-001" - }, - "secretName": "adminPassword" - } - }, - "nicConfigurations": { - "value": [ - { - "nicSuffix": "-nic-01", - "ipConfigurations": [ - { - "name": "ipconfig01", - "subnetId": "/subscriptions/<>/resourceGroups/validation-rg/providers/Microsoft.Network/virtualNetworks/adp-sxx-az-vnet-x-001/subnets/sxx-az-subnet-x-001", - "pipConfiguration": { - "publicIpNameSuffix": "-pip-01" - } - } - ] - } - ] - } - } -} From 084ccb3dbac29e7ab6052e7512a6418d8e91278d Mon Sep 17 00:00:00 2001 From: CARMLPipelinePrincipal Date: Wed, 17 Nov 2021 16:24:30 +0000 Subject: [PATCH 019/112] Push updated Readme file(s) --- README.md | 170 +++++++++++++++++++++++++------------------------- arm/README.md | 170 +++++++++++++++++++++++++------------------------- 2 files changed, 170 insertions(+), 170 deletions(-) diff --git a/README.md b/README.md index be24136f49..a9d45c8804 100644 --- a/README.md +++ b/README.md @@ -27,91 +27,91 @@ This repository includes a collection of advanced and curated Modules consisting | Name | Status | | - | - | -| [Action Group](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/actionGroups) | [!['Insights: Actiongroups'](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.actiongroups.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.actiongroups.yml) | -| [Activity Log Alert](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/activityLogAlerts) | [!['Insights: Activitylogalerts'](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.activitylogalerts.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.activitylogalerts.yml) | -| [ActivityLog](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/diagnosticSettings) | [!['Insights: Diagnosticsettings'](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.diagnosticsettings.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.diagnosticsettings.yml) | -| [Analysis Services](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.AnalysisServices/servers) | [!['AnalysisServices: Servers'](https://github.com/Azure/ResourceModules/actions/workflows/ms.analysisservices.servers.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.analysisservices.servers.yml) | -| [API Connection](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Web/connections) | [!['Web: Connections'](https://github.com/Azure/ResourceModules/actions/workflows/ms.web.connections.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.web.connections.yml) | -| [Api Management](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ApiManagement/service) | [!['ApiManagement: Service'](https://github.com/Azure/ResourceModules/actions/workflows/ms.apimanagement.service.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.apimanagement.service.yml) | -| [App Service Environment](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Web/hostingEnvironments) | [!['Web: Hostingenvironments'](https://github.com/Azure/ResourceModules/actions/workflows/ms.web.hostingenvironments.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.web.hostingenvironments.yml) | -| [Application Insights](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/components) | [!['Insights: Components'](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.components.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.components.yml) | -| [ApplicationGateway](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/applicationGateways) | [!['Network: Applicationgateways'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.applicationgateways.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.applicationgateways.yml) | -| [ApplicationSecurityGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/applicationSecurityGroups) | [!['Network: Applicationsecuritygroups'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.applicationsecuritygroups.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.applicationsecuritygroups.yml) | -| [AppServicePlan](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Web/serverfarms) | [!['Web: Serverfarms'](https://github.com/Azure/ResourceModules/actions/workflows/ms.web.serverfarms.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.web.serverfarms.yml) | -| [AutoManage](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Automanage/accounts) | [!['Automanage: Accounts'](https://github.com/Azure/ResourceModules/actions/workflows/ms.automanage.accounts.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.automanage.accounts.yml) | -| [Automation Accounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Automation/automationAccounts) | [!['Automation: Automationaccounts'](https://github.com/Azure/ResourceModules/actions/workflows/ms.automation.automationaccounts.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.automation.automationaccounts.yml) | -| [AvailabilitySet](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/availabilitySets) | [!['Compute: Availabilitysets'](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.availabilitysets.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.availabilitysets.yml) | -| [AVD Application Groups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/applicationgroups) | [!['DesktopVirtualization: Applicationgroups'](https://github.com/Azure/ResourceModules/actions/workflows/ms.desktopvirtualization.applicationgroups.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.desktopvirtualization.applicationgroups.yml) | -| [AVD HostPools](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/hostpools) | [!['DesktopVirtualization: Hostpools'](https://github.com/Azure/ResourceModules/actions/workflows/ms.desktopvirtualization.hostpools.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.desktopvirtualization.hostpools.yml) | -| [AVD Workspaces](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/workspaces) | [!['DesktopVirtualization: Workspaces'](https://github.com/Azure/ResourceModules/actions/workflows/ms.desktopvirtualization.workspaces.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.desktopvirtualization.workspaces.yml) | -| [Azure Databricks](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Databricks/workspaces) | [!['Databricks: Workspaces'](https://github.com/Azure/ResourceModules/actions/workflows/ms.databricks.workspaces.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.databricks.workspaces.yml) | -| [Azure Health Bot](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.HealthBot/healthBots) | [!['HealthBot: Healthbots'](https://github.com/Azure/ResourceModules/actions/workflows/ms.healthbot.healthbots.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.healthbot.healthbots.yml) | -| [Azure Monitor Private Link Scope](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/privateLinkScopes) | [!['Insights: Privatelinkscopes'](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.privatelinkscopes.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.privatelinkscopes.yml) | -| [AzureBastion](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/bastionHosts) | [!['Network: Bastionhosts'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.bastionhosts.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.bastionhosts.yml) | -| [AzureFirewall](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/azureFirewalls) | [!['Network: Azurefirewalls'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.azurefirewalls.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.azurefirewalls.yml) | -| [AzureKubernetesService](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ContainerService/managedClusters) | [!['ContainerService: Managedclusters'](https://github.com/Azure/ResourceModules/actions/workflows/ms.containerservice.managedclusters.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.containerservice.managedclusters.yml) | -| [AzureNetAppFiles](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.NetApp/netAppAccounts) | [!['NetApp: Netappaccounts'](https://github.com/Azure/ResourceModules/actions/workflows/ms.netapp.netappaccounts.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.netapp.netappaccounts.yml) | -| [AzureSecurityCenter](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Security/azureSecurityCenter) | [!['Security: Azuresecuritycenter'](https://github.com/Azure/ResourceModules/actions/workflows/ms.security.azuresecuritycenter.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.security.azuresecuritycenter.yml) | -| [AzureSQLServer](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Sql/servers) | [!['Sql: Servers'](https://github.com/Azure/ResourceModules/actions/workflows/ms.sql.servers.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.sql.servers.yml) | -| [Batch Accounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Batch/batchAccounts) | [!['Batch: Batchaccounts'](https://github.com/Azure/ResourceModules/actions/workflows/ms.batch.batchaccounts.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.batch.batchaccounts.yml) | -| [Budgets](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Consumption/budgets) | [!['Consumption: Budgets'](https://github.com/Azure/ResourceModules/actions/workflows/ms.consumption.budgets.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.consumption.budgets.yml) | -| [CognitiveServices](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.CognitiveServices/accounts) | [!['CognitiveServices: Accounts'](https://github.com/Azure/ResourceModules/actions/workflows/ms.cognitiveservices.accounts.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.cognitiveservices.accounts.yml) | -| [ContainerInstances](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ContainerInstance/containerGroups) | [!['ContainerInstance: Containergroups'](https://github.com/Azure/ResourceModules/actions/workflows/ms.containerinstance.containergroups.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.containerinstance.containergroups.yml) | -| [ContainerRegistry](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ContainerRegistry/registries) | [!['ContainerRegistry: Registries'](https://github.com/Azure/ResourceModules/actions/workflows/ms.containerregistry.registries.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.containerregistry.registries.yml) | -| [DataFactory](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DataFactory/factories) | [!['DataFactory: Factories'](https://github.com/Azure/ResourceModules/actions/workflows/ms.datafactory.factories.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.datafactory.factories.yml) | -| [DDoS Protection Plans](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/ddosProtectionPlans) | [!['Network: Ddosprotectionplans'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.ddosprotectionplans.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.ddosprotectionplans.yml) | -| [Deployment Scripts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Resources/deploymentScripts) | [!['Resources: Deploymentscripts'](https://github.com/Azure/ResourceModules/actions/workflows/ms.resources.deploymentscripts.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.resources.deploymentscripts.yml) | -| [DiskEncryptionSet](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/diskEncryptionSets) | [!['Compute: Diskencryptionsets'](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.diskencryptionsets.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.diskencryptionsets.yml) | -| [DocumentDB Database Account](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.DocumentDB/databaseAccounts) | [!['DocumentDB: Database Accounts'](https://github.com/Azure/ResourceModules/actions/workflows/ms.documentdb.databaseaccounts.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.documentdb.databaseaccounts.yml) | -| [Event Grid](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.EventGrid/topics) | [!['EventGrid: Topics'](https://github.com/Azure/ResourceModules/actions/workflows/ms.eventgrid.topics.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.eventgrid.topics.yml) | -| [EventHub Namespace](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.EventHub/namespaces) | [!['EventHub: Namespaces'](https://github.com/Azure/ResourceModules/actions/workflows/ms.eventhub.namespaces.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.eventhub.namespaces.yml) | -| [ExpressRoute Circuit](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/expressRouteCircuits) | [!['Network: Expressroutecircuits'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.expressroutecircuits.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.expressroutecircuits.yml) | -| [Image Templates](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.VirtualMachineImages/imageTemplates) | [!['VirtualMachineImages: Imagetemplates'](https://github.com/Azure/ResourceModules/actions/workflows/ms.virtualmachineimages.imagetemplates.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.virtualmachineimages.imagetemplates.yml) | -| [Image](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/images) | [!['Compute: Images'](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.images.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.images.yml) | -| [IP Groups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/ipGroups) | [!['Network: Ipgroups'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.ipgroups.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.ipgroups.yml) | -| [KeyVault](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.KeyVault/vaults) | [!['KeyVault: Vaults'](https://github.com/Azure/ResourceModules/actions/workflows/ms.keyvault.vaults.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.keyvault.vaults.yml) | -| [LoadBalancer](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/loadBalancers) | [!['Network: Loadbalancers'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.loadbalancers.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.loadbalancers.yml) | -| [Local Network Gateway](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/localNetworkGateways) | [!['Network: Localnetworkgateways'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.localnetworkgateways.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.localnetworkgateways.yml) | -| [LogAnalytics](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.OperationalInsights/workspaces) | [!['OperationalInsights: Workspaces'](https://github.com/Azure/ResourceModules/actions/workflows/ms.operationalinsights.workspaces.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.operationalinsights.workspaces.yml) | -| [LogicApp](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Logic/workflows) | [!['Logic: Workflows'](https://github.com/Azure/ResourceModules/actions/workflows/ms.logic.workflows.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.logic.workflows.yml) | -| [Machine Learning Services](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.MachineLearningServices/workspaces) | [!['MachineLearningServices: Workspaces'](https://github.com/Azure/ResourceModules/actions/workflows/ms.machinelearningservices.workspaces.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.machinelearningservices.workspaces.yml) | -| [Management groups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Management/managementGroups) | [!['Management: Managementgroups'](https://github.com/Azure/ResourceModules/actions/workflows/ms.management.managementgroups.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.management.managementgroups.yml) | -| [Metric Alert](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/metricAlerts) | [!['Insights: Metricalerts'](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.metricalerts.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.metricalerts.yml) | -| [NAT Gateway](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/natGateways) | [!['Network: Natgateways'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.natgateways.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.natgateways.yml) | -| [Network Watcher](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/networkWatchers) | [!['Network: Networkwatchers'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.networkwatchers.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.networkwatchers.yml) | -| [NetworkSecurityGroups](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/networkSecurityGroups) | [!['Network: Networksecuritygroups'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.networksecuritygroups.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.networksecuritygroups.yml) | -| [PolicyAssignment](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/policyAssignments) | [!['Authorization: Policyassignments'](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.policyassignments.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.policyassignments.yml) | -| [PolicyDefinition](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/policyDefinitions) | [!['Authorization: policyDefinitions'](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.policydefinitions.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.policydefinitions.yml) | -| [PolicyExemption](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/policyExemptions) | [!['Authorization: policyExemptions'](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.policyexemptions.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.policyexemptions.yml) | -| [policySetDefinition](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/policySetDefinitions) | [!['Authorization: policySetDefinitions'](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.policysetdefinitions.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.policysetdefinitions.yml) | -| [PrivateDnsZones](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/privateDnsZones) | [!['Network: Privatednszones'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.privatednszones.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.privatednszones.yml) | -| [PrivateEndpoints](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/privateEndpoints) | [!['Network: Privateendpoints'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.privateendpoints.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.privateendpoints.yml) | -| [ProximityPlacementGroup](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/proximityPlacementGroups) | [!['Compute: ProximityPlacementGroups'](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.proximityplacementgroups.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.proximityplacementgroups.yml) | -| [Public IP Addresses](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/publicIPAddresses) | [!['Network: Publicipaddresses'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.publicipaddresses.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.publicipaddresses.yml) | -| [Public IP Prefixes](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/publicIPPrefixes) | [!['Network: Publicipprefixes'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.publicipprefixes.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.publicipprefixes.yml) | -| [RecoveryServicesVaults](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.RecoveryServices/vaults) | [!['RecoveryServices: Vaults'](https://github.com/Azure/ResourceModules/actions/workflows/ms.recoveryservices.vaults.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.recoveryservices.vaults.yml) | -| [registrationDefinitions](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ManagedServices/registrationDefinitions) | [!['ManagedServices: Registrationdefinitions'](https://github.com/Azure/ResourceModules/actions/workflows/ms.managedservices.registrationdefinitions.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.managedservices.registrationdefinitions.yml) | -| [Resource Group](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Resources/resourceGroups) | [!['Resources: Resourcegroups'](https://github.com/Azure/ResourceModules/actions/workflows/ms.resources.resourcegroups.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.resources.resourcegroups.yml) | -| [Role Assignments](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/roleAssignments) | [!['Authorization: Roleassignments'](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.roleassignments.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.roleassignments.yml) | -| [Role Definitions](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Authorization/roleDefinitions) | [!['Authorization: Roledefinitions'](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.roledefinitions.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.roledefinitions.yml) | -| [RouteTables](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/routeTables) | [!['Network: Routetables'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.routetables.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.routetables.yml) | -| [Scheduled Query Rules](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Insights/scheduledQueryRules) | [!['Insights: Scheduledqueryrules'](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.scheduledqueryrules.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.scheduledqueryrules.yml) | -| [ServiceBusNamespaces](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ServiceBus/namespaces) | [!['ServiceBus: Namespaces'](https://github.com/Azure/ResourceModules/actions/workflows/ms.servicebus.namespaces.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.servicebus.namespaces.yml) | -| [Shared Image Definition](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/galleriesResources/images) | [!['Compute: Galleries Images'](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.galleries.images.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.galleries.images.yml) | -| [Shared Image Gallery](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/galleries) | [!['Compute: Galleries'](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.galleries.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.galleries.yml) | -| [Software Update Configuration](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Automation/automationAccountsResources/softwareUpdateConfigurations) | [!['Automation: Automationaccounts Softwareupdateconfigurations'](https://github.com/Azure/ResourceModules/actions/workflows/ms.automation.automationaccounts.softwareupdateconfigurations.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.automation.automationaccounts.softwareupdateconfigurations.yml) | -| [SQL Managed Instances Database](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Sql/managedInstancesResources/databases) | [!['Sql: Managedinstances Databases'](https://github.com/Azure/ResourceModules/actions/workflows/ms.sql.managedinstances.databases.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.sql.managedinstances.databases.yml) | -| [SQL Managed Instances](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Sql/managedInstances) | [!['Sql: Managedinstances'](https://github.com/Azure/ResourceModules/actions/workflows/ms.sql.managedinstances.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.sql.managedinstances.yml) | -| [StorageAccounts](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Storage/storageAccounts) | [!['Storage: Storage Account'](https://github.com/Azure/ResourceModules/actions/workflows/ms.storage.storageaccounts.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.storage.storageaccounts.yml) | -| [TrafficManager](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/trafficmanagerprofiles) | [!['Network: Trafficmanagerprofiles'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.trafficmanagerprofiles.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.trafficmanagerprofiles.yml) | -| [User Assigned Identities](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.ManagedIdentity/userAssignedIdentities) | [!['ManagedIdentity: Userassignedidentities'](https://github.com/Azure/ResourceModules/actions/workflows/ms.managedidentity.userassignedidentities.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.managedidentity.userassignedidentities.yml) | -| [Virtual Machine Scale Sets](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/virtualMachineScaleSets) | [!['Compute: Virtualmachinescalesets'](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.virtualmachinescalesets.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.virtualmachinescalesets.yml) | -| [Virtual Machines](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Compute/virtualMachines) | [!['Compute: Virtualmachines'](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.virtualmachines.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.virtualmachines.yml) | -| [Virtual Network](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/virtualNetworks) | [!['Network: Virtualnetworks'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.virtualnetworks.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.virtualnetworks.yml) | -| [Virtual Wan](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/virtualWans) | [!['Network: Virtualwans'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.virtualwans.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.virtualwans.yml) | -| [VirtualNetworkGateway](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/virtualNetworkGateways) | [!['Network: Virtualnetworkgateways'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.virtualnetworkgateways.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.virtualnetworkgateways.yml) | -| [VirtualNetworkGatewayConnection](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Network/connections) | [!['Network: Connections'](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.connections.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.connections.yml) | -| [Web/Function App](https://github.com/Azure/ResourceModules/tree/main/arm/Microsoft.Web/sites) | [!['Web: Sites'](https://github.com/Azure/ResourceModules/actions/workflows/ms.web.sites.yml/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.web.sites.yml) | +| [Action Group](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/actionGroups) | [!['Insights: Actiongroups'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.insights.actiongroups.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.insights.actiongroups.yml) | +| [Activity Log Alert](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/activityLogAlerts) | [!['Insights: Activitylogalerts'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.insights.activitylogalerts.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.insights.activitylogalerts.yml) | +| [ActivityLog](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/diagnosticSettings) | [!['Insights: Diagnosticsettings'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.insights.diagnosticsettings.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.insights.diagnosticsettings.yml) | +| [Analysis Services](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.AnalysisServices/servers) | [!['AnalysisServices: Servers'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.analysisservices.servers.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.analysisservices.servers.yml) | +| [API Connection](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Web/connections) | [!['Web: Connections'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.web.connections.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.web.connections.yml) | +| [Api Management](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ApiManagement/service) | [!['ApiManagement: Service'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.apimanagement.service.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.apimanagement.service.yml) | +| [App Service Environment](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Web/hostingEnvironments) | [!['Web: Hostingenvironments'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.web.hostingenvironments.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.web.hostingenvironments.yml) | +| [Application Insights](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/components) | [!['Insights: Components'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.insights.components.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.insights.components.yml) | +| [ApplicationGateway](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/applicationGateways) | [!['Network: Applicationgateways'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.applicationgateways.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.applicationgateways.yml) | +| [ApplicationSecurityGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/applicationSecurityGroups) | [!['Network: Applicationsecuritygroups'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.applicationsecuritygroups.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.applicationsecuritygroups.yml) | +| [AppServicePlan](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Web/serverfarms) | [!['Web: Serverfarms'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.web.serverfarms.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.web.serverfarms.yml) | +| [AutoManage](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Automanage/accounts) | [!['Automanage: Accounts'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.automanage.accounts.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.automanage.accounts.yml) | +| [Automation Accounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Automation/automationAccounts) | [!['Automation: Automationaccounts'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.automation.automationaccounts.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.automation.automationaccounts.yml) | +| [AvailabilitySet](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/availabilitySets) | [!['Compute: Availabilitysets'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.compute.availabilitysets.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.compute.availabilitysets.yml) | +| [AVD Application Groups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/applicationgroups) | [!['DesktopVirtualization: Applicationgroups'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.desktopvirtualization.applicationgroups.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.desktopvirtualization.applicationgroups.yml) | +| [AVD HostPools](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/hostpools) | [!['DesktopVirtualization: Hostpools'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.desktopvirtualization.hostpools.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.desktopvirtualization.hostpools.yml) | +| [AVD Workspaces](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DesktopVirtualization/workspaces) | [!['DesktopVirtualization: Workspaces'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.desktopvirtualization.workspaces.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.desktopvirtualization.workspaces.yml) | +| [Azure Databricks](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Databricks/workspaces) | [!['Databricks: Workspaces'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.databricks.workspaces.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.databricks.workspaces.yml) | +| [Azure Health Bot](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.HealthBot/healthBots) | [!['HealthBot: Healthbots'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.healthbot.healthbots.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.healthbot.healthbots.yml) | +| [Azure Monitor Private Link Scope](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/privateLinkScopes) | [!['Insights: Privatelinkscopes'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.insights.privatelinkscopes.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.insights.privatelinkscopes.yml) | +| [AzureBastion](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/bastionHosts) | [!['Network: Bastionhosts'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.bastionhosts.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.bastionhosts.yml) | +| [AzureFirewall](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/azureFirewalls) | [!['Network: Azurefirewalls'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.azurefirewalls.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.azurefirewalls.yml) | +| [AzureKubernetesService](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ContainerService/managedClusters) | [!['ContainerService: Managedclusters'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.containerservice.managedclusters.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.containerservice.managedclusters.yml) | +| [AzureNetAppFiles](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.NetApp/netAppAccounts) | [!['NetApp: Netappaccounts'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.netapp.netappaccounts.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.netapp.netappaccounts.yml) | +| [AzureSecurityCenter](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Security/azureSecurityCenter) | [!['Security: Azuresecuritycenter'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.security.azuresecuritycenter.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.security.azuresecuritycenter.yml) | +| [AzureSQLServer](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Sql/servers) | [!['Sql: Servers'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.sql.servers.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.sql.servers.yml) | +| [Batch Accounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Batch/batchAccounts) | [!['Batch: Batchaccounts'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.batch.batchaccounts.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.batch.batchaccounts.yml) | +| [Budgets](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Consumption/budgets) | [!['Consumption: Budgets'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.consumption.budgets.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.consumption.budgets.yml) | +| [CognitiveServices](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.CognitiveServices/accounts) | [!['CognitiveServices: Accounts'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.cognitiveservices.accounts.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.cognitiveservices.accounts.yml) | +| [ContainerInstances](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ContainerInstance/containerGroups) | [!['ContainerInstance: Containergroups'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.containerinstance.containergroups.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.containerinstance.containergroups.yml) | +| [ContainerRegistry](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ContainerRegistry/registries) | [!['ContainerRegistry: Registries'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.containerregistry.registries.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.containerregistry.registries.yml) | +| [DataFactory](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DataFactory/factories) | [!['DataFactory: Factories'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.datafactory.factories.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.datafactory.factories.yml) | +| [DDoS Protection Plans](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/ddosProtectionPlans) | [!['Network: Ddosprotectionplans'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.ddosprotectionplans.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.ddosprotectionplans.yml) | +| [Deployment Scripts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Resources/deploymentScripts) | [!['Resources: Deploymentscripts'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.resources.deploymentscripts.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.resources.deploymentscripts.yml) | +| [DiskEncryptionSet](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/diskEncryptionSets) | [!['Compute: Diskencryptionsets'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.compute.diskencryptionsets.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.compute.diskencryptionsets.yml) | +| [DocumentDB Database Account](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.DocumentDB/databaseAccounts) | [!['DocumentDB: Database Accounts'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.documentdb.databaseaccounts.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.documentdb.databaseaccounts.yml) | +| [Event Grid](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.EventGrid/topics) | [!['EventGrid: Topics'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.eventgrid.topics.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.eventgrid.topics.yml) | +| [EventHub Namespace](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.EventHub/namespaces) | [!['EventHub: Namespaces'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.eventhub.namespaces.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.eventhub.namespaces.yml) | +| [ExpressRoute Circuit](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/expressRouteCircuits) | [!['Network: Expressroutecircuits'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.expressroutecircuits.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.expressroutecircuits.yml) | +| [Image Templates](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.VirtualMachineImages/imageTemplates) | [!['VirtualMachineImages: Imagetemplates'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.virtualmachineimages.imagetemplates.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.virtualmachineimages.imagetemplates.yml) | +| [Image](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/images) | [!['Compute: Images'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.compute.images.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.compute.images.yml) | +| [IP Groups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/ipGroups) | [!['Network: Ipgroups'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.ipgroups.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.ipgroups.yml) | +| [KeyVault](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.KeyVault/vaults) | [!['KeyVault: Vaults'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.keyvault.vaults.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.keyvault.vaults.yml) | +| [LoadBalancer](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/loadBalancers) | [!['Network: Loadbalancers'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.loadbalancers.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.loadbalancers.yml) | +| [Local Network Gateway](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/localNetworkGateways) | [!['Network: Localnetworkgateways'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.localnetworkgateways.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.localnetworkgateways.yml) | +| [LogAnalytics](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.OperationalInsights/workspaces) | [!['OperationalInsights: Workspaces'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.operationalinsights.workspaces.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.operationalinsights.workspaces.yml) | +| [LogicApp](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Logic/workflows) | [!['Logic: Workflows'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.logic.workflows.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.logic.workflows.yml) | +| [Machine Learning Services](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.MachineLearningServices/workspaces) | [!['MachineLearningServices: Workspaces'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.machinelearningservices.workspaces.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.machinelearningservices.workspaces.yml) | +| [Management groups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Management/managementGroups) | [!['Management: Managementgroups'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.management.managementgroups.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.management.managementgroups.yml) | +| [Metric Alert](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/metricAlerts) | [!['Insights: Metricalerts'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.insights.metricalerts.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.insights.metricalerts.yml) | +| [NAT Gateway](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/natGateways) | [!['Network: Natgateways'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.natgateways.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.natgateways.yml) | +| [Network Watcher](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/networkWatchers) | [!['Network: Networkwatchers'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.networkwatchers.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.networkwatchers.yml) | +| [NetworkSecurityGroups](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/networkSecurityGroups) | [!['Network: Networksecuritygroups'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.networksecuritygroups.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.networksecuritygroups.yml) | +| [PolicyAssignment](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/policyAssignments) | [!['Authorization: Policyassignments'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.authorization.policyassignments.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.authorization.policyassignments.yml) | +| [PolicyDefinition](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/policyDefinitions) | [!['Authorization: policyDefinitions'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.authorization.policydefinitions.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.authorization.policydefinitions.yml) | +| [PolicyExemption](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/policyExemptions) | [!['Authorization: policyExemptions'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.authorization.policyexemptions.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.authorization.policyexemptions.yml) | +| [policySetDefinition](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/policySetDefinitions) | [!['Authorization: policySetDefinitions'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.authorization.policysetdefinitions.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.authorization.policysetdefinitions.yml) | +| [PrivateDnsZones](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/privateDnsZones) | [!['Network: Privatednszones'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.privatednszones.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.privatednszones.yml) | +| [PrivateEndpoints](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/privateEndpoints) | [!['Network: Privateendpoints'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.privateendpoints.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.privateendpoints.yml) | +| [ProximityPlacementGroup](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/proximityPlacementGroups) | [!['Compute: ProximityPlacementGroups'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.compute.proximityplacementgroups.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.compute.proximityplacementgroups.yml) | +| [Public IP Addresses](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/publicIPAddresses) | [!['Network: Publicipaddresses'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.publicipaddresses.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.publicipaddresses.yml) | +| [Public IP Prefixes](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/publicIPPrefixes) | [!['Network: Publicipprefixes'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.publicipprefixes.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.publicipprefixes.yml) | +| [RecoveryServicesVaults](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.RecoveryServices/vaults) | [!['RecoveryServices: Vaults'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.recoveryservices.vaults.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.recoveryservices.vaults.yml) | +| [registrationDefinitions](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ManagedServices/registrationDefinitions) | [!['ManagedServices: Registrationdefinitions'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.managedservices.registrationdefinitions.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.managedservices.registrationdefinitions.yml) | +| [Resource Group](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Resources/resourceGroups) | [!['Resources: Resourcegroups'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.resources.resourcegroups.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.resources.resourcegroups.yml) | +| [Role Assignments](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/roleAssignments) | [!['Authorization: Roleassignments'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.authorization.roleassignments.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.authorization.roleassignments.yml) | +| [Role Definitions](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Authorization/roleDefinitions) | [!['Authorization: Roledefinitions'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.authorization.roledefinitions.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.authorization.roledefinitions.yml) | +| [RouteTables](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/routeTables) | [!['Network: Routetables'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.routetables.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.routetables.yml) | +| [Scheduled Query Rules](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Insights/scheduledQueryRules) | [!['Insights: Scheduledqueryrules'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.insights.scheduledqueryrules.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.insights.scheduledqueryrules.yml) | +| [ServiceBusNamespaces](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ServiceBus/namespaces) | [!['ServiceBus: Namespaces'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.servicebus.namespaces.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.servicebus.namespaces.yml) | +| [Shared Image Definition](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/galleriesResources/images) | [!['Compute: Galleries Images'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.compute.galleries.images.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.compute.galleries.images.yml) | +| [Shared Image Gallery](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/galleries) | [!['Compute: Galleries'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.compute.galleries.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.compute.galleries.yml) | +| [Software Update Configuration](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Automation/automationAccountsResources/softwareUpdateConfigurations) | [!['Automation: Automationaccounts Softwareupdateconfigurations'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.automation.automationaccounts.softwareupdateconfigurations.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.automation.automationaccounts.softwareupdateconfigurations.yml) | +| [SQL Managed Instances Database](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Sql/managedInstancesResources/databases) | [!['Sql: Managedinstances Databases'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.sql.managedinstances.databases.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.sql.managedinstances.databases.yml) | +| [SQL Managed Instances](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Sql/managedInstances) | [!['Sql: Managedinstances'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.sql.managedinstances.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.sql.managedinstances.yml) | +| [StorageAccounts](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Storage/storageAccounts) | [!['Storage: Storage Account'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.storage.storageaccounts.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.storage.storageaccounts.yml) | +| [TrafficManager](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/trafficmanagerprofiles) | [!['Network: Trafficmanagerprofiles'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.trafficmanagerprofiles.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.trafficmanagerprofiles.yml) | +| [User Assigned Identities](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.ManagedIdentity/userAssignedIdentities) | [!['ManagedIdentity: Userassignedidentities'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.managedidentity.userassignedidentities.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.managedidentity.userassignedidentities.yml) | +| [Virtual Machine Scale Sets](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/virtualMachineScaleSets) | [!['Compute: Virtualmachinescalesets'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.compute.virtualmachinescalesets.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.compute.virtualmachinescalesets.yml) | +| [Virtual Machines](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Compute/virtualMachines) | [!['Compute: Virtualmachines'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.compute.virtualmachines.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.compute.virtualmachines.yml) | +| [Virtual Network](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/virtualNetworks) | [!['Network: Virtualnetworks'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.virtualnetworks.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.virtualnetworks.yml) | +| [Virtual Wan](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/virtualWans) | [!['Network: Virtualwans'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.virtualwans.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.virtualwans.yml) | +| [VirtualNetworkGateway](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/virtualNetworkGateways) | [!['Network: Virtualnetworkgateways'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.virtualnetworkgateways.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.virtualnetworkgateways.yml) | +| [VirtualNetworkGatewayConnection](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Network/connections) | [!['Network: Connections'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.connections.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.network.connections.yml) | +| [Web/Function App](https://github.com/MrMCake/ResourceModules/tree/main/arm/Microsoft.Web/sites) | [!['Web: Sites'](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.web.sites.yml/badge.svg)](https://github.com/MrMCake/ResourceModules/actions/workflows/ms.web.sites.yml) | m&S+ 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 E0GO3meEYfZY?FNLAv9(f(NHlc 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 O3t((uai&DiJ>nmL<2&{M literal 0 HcmV?d00001 diff --git a/docs/wiki/media/pipelineStart3.png b/docs/wiki/media/pipelineStart3.png new file mode 100644 index 0000000000000000000000000000000000000000..eb5e03f27fd54f12b4d51893d2a4afadf7d3897e GIT binary patch literal 95912 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ⅅ&Bt`Zw_VYitg({&K(n@9_s^!o6Oa}{>jd$_=Gz4HSXekRG* z9c=Ds|Gd&uiZ4N9gl=^MYUIO99!Ymlx>XBu!L994C#HZ44*GfcP8_Ot`MyKG<^S_+ z(l{9TIR-zNtA(P#pc9glnf5~=aQPn8IRTX(0&kulLz;ra;>}7dykLiR2UHl<$esPd z^NOJV50kn~ThTECBXsW*%2;G~Lol!iRsdGxtMUXQ?;8>0rslSuytbhgGu^3Uz53et`yCVv zz3kU(e*Z1&zvOY+UcI{9{TnAe_I4rspma43q|!l)0~C3x0Rdw=H789yqLI0~e<@Z+ zx{70_+ZvevJ?B8%0f3ylg!XJ3qY|?#G;l`tB^7 zL$@Yfs!xu*b1yk%(8@NNtHY}Z8W0Hdg*h!KSPc=TkvE?G>9fj~pB_>K1|JinAhQL= zXjMRAABQZ*Ah2$hp~^aDZ^GE8F)^!~N?C?4`#dUFCWg@7hHkA|cO5yqlzgsZJc5(| z9(aDcM%><2;g$eJREF`61crdEs1$9LD9q+Swe7XxgRyBw|r76D+TYt7vmL&H-(*ROHk({$GyVwr{c5ANy zs{Q@lU@ydAozES`Vht|2G!txyM%}5H#C)pT7L2i(ooZgC&e^zH+Gu021T09^QN(~n zDs9ZJrWe${RAhZB0o^9Mv9TLkEn%f`%lnsG`XPjTA_FQJp^*XoVtEzz+tvF<<~GQM zKFoKGIqelP*C(({D(92E=h}gBn{uDI1;7QM!-RG0$@vUtSI9~S6^tU(W#CYaYD=R% zc;jp&Gsf(Zy)t*WN1V5p=~SE5Dwm38wUjrG@i@*wz4EYM-_WKTEZ3Rb70A9IIa(<)4iB}!OT7s$BYcetdr;I~{6e0o zqSz&iv&^1!PtXhdfVFUkeTDAJJ=EzB9E#aY@$}KEyFZV}VST3drCtbYN{y-p*2A$R zBTxxbq8Zcn?^X8Q-{)9!Az%1IE%kUw^HKks=!~dv#V*U52f1LHII=R=?ZP8&@&nAL zRN}H~4o+6wc}AJQiZlylIq5L!>7dZ?j3MgQK#3hz+&#mC9z|IufxIgoa104R7_vs3 z{uNeXnZ9}PfM{e4kYvFHNXnc2Ld5A078KaOp_P-k5BoZzz`62*RB|8%ad z%A3?&!1~*3|M1;;usmn`-g5*kyq$D^}X9g?FOl+g~0P`#uV4YnwNJ z1t)-Y_bnJK<=uLF4;bGAvP=9GDSmQ(VaEY#%cpl%J6_aFW3-IguWT?QZfc{db%QKz zUE72D=Mri0!cx_3^T#(?u=m7+fGAW43TjhDObpyU4~x~h4V?oYNwPl$*UQ-=)C(;9 z^F-?wuQaF?54oHP+LM$Z?8HCiv8tm`i;oI|}DqJI=4a}QPide>QfiDQE=*YhR-DLci$3;$2h@rjA5 zax?xH{NPG(C1e?1U&fPyYuR+c%&Ho)(Qb!Mc0}Tiefh%;s>a09L5VNO-N=2n&J1S< zmV@hF+aLx^*_unQ;Y~*pneCZqYKIX1t~95qaIwQ9w$cwPXzLSdzk7%7qJM3qdy}_* zKZoaU|7#RMT1x8Rzk9i_U;e)qHvR8N228t;R%^Y3rID>_ygVs*)IEs50McEcnd;XY zHt4mnOprzHhVsj=@In_17_TR;mX_bfFBeb(Cj?q`DLTy}8p zw*-)_Xc%zIgP&6;Kk*#3zq&p?1!eWt=TMg!frq^RYY157Vqs=ZiWa!8J_fFHqF@t~ z)w!#5p^5pZzD5z*VNO|I8Mm{m%{Q-@l*^L7N!-9|i9J_;@Dc zsNZ{R@T&8_|JeQs^YHf9vd7Zr{*5A^Z1``8;Qmj#ng6|%PW}Jj5EP%hHy*hDDZ2m@ znoR#^eNR28XYT)Jk@ccrBnBMvMI(Q|>Pw(sNqd=eYWd+~5pYWdZgU@|9SC;>3~Gs3 zcEz40c>G$956iU^q&!7{G>iSwc5vDMufX@MasL9S8UR`r4FKlbzqhU|m%IQS13!mC z&bBBt)wtn7sLC4@e*s6LkB{?jU6`q0%m7(b>xu_YLFi->+}s?4SEhgd!@$y1q`kf3 zO;iHthKCG*WZtzg0m)zRC|%z_?V4shhfo^u#Ac&R1yyRebvsvm^ygML*1 z4`-tOTk`e)9hbcSw;=QW*BkPGZXx{}uDe)Odso=nJ}cc*!eU^3T5P^w7u5t0wD=|< zQ8L_KZ|3{~_3v)>gU){qo%8bYPVs5u4<=%e?zRrE!~?5!)!d!0CZDm2NX&I|pRoE3 z)nKXA1C@mwYdvV6T2D!n0aV;p^*!|CjNe}k)lq0e=#y)FDOcUdz4{RP_db!uQW)Ga zXm5{pr)X)pf%N~cZwt$9=tkoIK5gVsyTb45!XXWCOLDt{DG9hR`r_S8g1P-K&J~iY z7WDJsq1YrUk4vpLRSpBvMHTj-pb&z&q2R8K;5cI|2mqo;q+Yu~6d8(%o}$0fQWcZf z*3%X*9xG(a=7`c_hS7E-4)J?Ykw3ou&Ho#J#PST2?EhKdpa8#VWxtoZOUH=RVt-fI zgJ9%Sj$_sP0MClBG3f#Pz`8rX;bbh&o}c74FuFh<(Xq047Ll;@+SwEsPe}2F#w7sr zcK``m+&(~RlK( z(o{lq0L_A%H56i1hj!w5H)xiE{O5`~*S*e~o70-3QRQ<%Y>dE>Cmb+|Q zjQZd2sl0vdA<>y(sIt?l2TY^AeTZw#So(Jtby3j%M1YeJ>l7wpPGQCD8S#V0PV7Aw zqLv1G<9yaD&o6SM2I_+TPzrAyr~)~Xh;BhW`?ID)5IKpKlea1zEz|q-*pu&PwMasj4?MtL)~5#Nbp57Z-fN1FLA zd@02)D@Xv$9<%U%b(%dw=9D977@BHklo;m^D{6uc=Z9;H|1%zacLXL8ILFTE&`}_W;Oy0CQeo z2pD>|e5Z2fg3b`U5&BzmTfBDFfG@C(;t+X|b4AjA%dC4?$rHa{C@j952?E4^iyXu; zSrKL4tOIdlaS9-SX_L+orSnD)lH8at_K=h3$6c#s!4_Qi4QlZ6b(`~jztX6hTEDk? z0Bu?8eOsFS_c1L!A!S7G{t<4cF&SetG?AkH!)fVATe${~O1&VgRf z+xhUPRtRUz1{UNAtt+zB&_4$>tRIE5m*^x(1pxO&!$u$lH`AOQ)#fo$N&yT1#P?Zt zldnxcuW9mZ?m^pk?@q^SpH=fRJ5PuwSc9E$QwD5> zDoF0pnWTcUWemtQPAq}LMz0+4{%SZa4WvrU^8DN|)a_RwlIMmiFuYT2U6#&}^?GM* zZsqz`Uzzbb&1d%QFT@~-n^M-+ZM)B#m%fu(<@gE52IpdFYKqR#M%Nb6D`Qr8TMeYT zQS{PZ`w7rn91~ETR136#YLLF&Bwc`Jk!TPQtbH&dzBpWHeBIs>=ZwIV2i_|-MK46n zf!0^3es>x1LMeT!gXs(jJ*mfLxG3FPA~k`FB>sER7{+I59to3j$OFzXE$sjx7QQ6Q zmN0CM7Xhc8B<@uIV6IXKxiiokZ2}7N6gQeyOA3?S;VbO-@o;VN-z5U24j%uoUd8U*0r}z z@SZ1rL&){vWo0})2XkH|Inzr*>sO>up{u|;Co%S6*n$3X~<3XxB z#4B@P$KF9*5xC}-%K1e2-)~-COaErY%Gu~DKd7;9biS3 z89h~Y*Xpnm!;z~T4Zw2s`Z(M3b}IZN5apwBhj*ZUJT`YgYzx@B^d@~OlQR5A z1V?h=o{-$QK^@Z2`T~3g%P@N=ffY9|{a(9KGiK+%Wk@HrFh!Ov#5IHP6pXd0Hv`lv z57sVRhIBf#6&9CvP@qXEt@@Z*$ZCU4=+Co6S-%I5@=pMyS>IUaRORhY9K3gXwJWYB zLAQ@nl9lH(OsXC1y5kg+WJ;_C?ON9A?mpI*mrVA%w|d8xJMJqG80|6KxEkLY!DhxR zKRnl5ni=;qBJd^ed z1)cf^&!QH+Q2`>&#)*-l1K~VHGgWuHZkxaN8m@~;<<)XCu6Df$KBY9>w@ROShqg@` z)tkZK5l$O1KeB#tOvqt_7n849bvaJ zv6lMdLEc8tUVPz0VCW8;9TfX3RKN8E1>O)$8VOiX;%EY47g^73zwQ}b35#5%Vt;mg ziSIWIslA?-c;50ez?RO<>Zq?YtZ32W@Qr?(;1smf45w!16<{uXxr6qL3H=;*A**`UKCu*?Q}3|saW+j>CMqBl3W?jjz0O|2IdjZ)jC#~X;h0}_8YPh<_dL76?9J99P( zHFz69+zg|;zN@{miBlgj8Qh8;4&OR>FDbAo{?OLy-0Gb3`7()9*?h*@E#Q)+#sCe~ z0291hJpSra{V%MATf$7*1A7wu`gH>`MZ(IeQFuyGQIGFd1HEdKPjZ6r&rTA!*F@-G zbYuIsMQc2eRma%($BG-DQ+b|P?QA?vf{>ah!`0fHVJ_|JfGBYr>IAlf{avCIo@B1C zdacwIQ2>e5E5YpE?5RinwEKz@Bs}q>=tO&ll4-%$ei={%SyFsB*WuN=*!?A+4olz@ zvHhl88EjgvB4Zgs8yU-5Mn(%N+kDlzR&!d-h-zSg&!%X53XPW8&*@Xl>y4bofE%(3%+hp1|9B?i)Ui4s2(=Ji6XKMjc>}l9a1U&fl4`rJa5@_=99zg?Q$dEbL`6E zW+n6eGN~$_4c&WW+=n$ygta@=J2YFLk;7VaV!^$&Uq>5XA4X8Xr?;u(ID_qntkcR} z=1AD*MR!~QpUbPHlR;7iq)Y6Ev7a^V$_%j)#f1C}bT|em@eA)WoJu}^w}DRN533bK zvzyqj=?-9i>GO2wpz(1@ZQZAU(4GDr<^Cy0 zW3u^2?`xY3@wXYzZ>1^7xW`=_`FtPrpt5;1kOl*_!r%H8+ZXIb3K2g0qrUSRaHeP6S-Vh86|-!(67tZXcXhPX zb`cbCol*D#j80=3!zg5*QpS2p&PGs9ZCXW6Upb8zx@wEM7C$r#IP%K(*R00K*MLp? z$O)5>slj&ww_dIRb_K3H^9G^7gl|MkU`su_*?&0LOB=aC3Pdr<<3pOB1KayK3M@@y zPOI5mE=It)dB2Z5(bjzwZgtV!%GcyW#QrN~FF}avl43Fat>K2^X5)O@LCOXRxzQ4% zK!ayDd&R~nny*aQ$^;6A{&-Y?KfL1xkMl4}Iw|vZ(AB%>VwHyrZjTN)E3M>b{mNEd zoKc6p`lCqHA}1q8A)H7%JuI1ExI-R=_B&wP4&W8B&i+w;`Oj9~eB{yEM;=jB$ z9r!f^x4Crevzr&hG7hDT^uJ2c@~4dUx{pqh4%BWB#VB;WzM44l3o3dQa#2HF2`G5R zXVap(>$UE>g)ID90$#;alnk?57g8(+XHAck=nH?SxflFZ^Da44HIhvhFtvPd^k`(W zgsTgHWmfQQzJ_wm_(S>Uc&WI1r-}i!)N39|BUg2Ha~B?1(WqG%G5Rygw8UV5U48gG za0q|YJvnl%+TB>}c}_Djyl()wBK%Z6E7k;~35`>a@0b>!6G|?$LpSiZ!5TX??Z%$N zi_-EK17T-Ha@XFRwo@@ist+6$z3;$17XP2ibbe(2QIm!B@6T_XOFnauSE@Sm#i22o;?b6|VYKF{WXO8rrr8dGDX5O@bD!@oL>e}RrTeHYBFpD( z|9SbZx1)?&ZVsfF7jk>ED;~Wo-zAhOp6$%MjOW>e001JW!B$jiviglzOLVaeie-!A zN6ZZR{;Puzo`gMynmvmc~3Sj+?fAK5OUV_y{^T zTDy0)nCJY01dl7b#{**1Fc>c_sO0wz@LUF#KMsJdXq$>Qo?Ft5I~iW-nI9Sxd7_~JJbI{ zlJ@AzE{0??B*re39=cL^Q>F-T{JlY4YIQMdX7j@cPN8EpTA~xkyyY+awokZ>H&U@KN%lTZVImbf>>T5{Nw$fi_ehEyzNq;QNhS~{n}vnQuUDDD(OZ4htC?3{6cByZAzD> zoq3BkG*rEIMZj19-{}XT-6@|X%KUo&$~F}F3OK9&h)B1)t(|M`_|i06|B(?XmgDOG zo^*?W&bzYQyRGNJ)vjQibsZb7ohs{H`~B0)2>}0C<_Hqc2m`DRuP|ufzP$)K?@NX6 zfvMOpvNe!q7IC?+iq&FF?T`$a)T=&Osb=rLgTw#50*oXsPr8NgYxosDQ=QgwE+UeI zkSfeDdtGZS^E7txwKWkjCjiEi=@OxVS92d*KO4<$0iwY4;LRJ=`3Zv!-Yw0ww`a6@ zpUW51E!V*xQxo%%pe^{e91cf9YH-arZ4eu!95PgrQ{+6nys-?uw%zDWryK&jA8RK4 zboM^D!_WphmiiQ_+E){C`P@y{n{TBkO@wUhcIxJS|s6M+kP+itKH$^77exiu4= zWVh@D^&hmp1M%hK{^OxD{{`2V^!KEsk?GiLjG{1_#A3JaHRlRla z56`Dfo`Y+oDi{1}zp{t45^6`*?Zi+XVCOtExjftd7P(D5sj186-Aq>J|1n}-I{P~1 zvm3KUB{D;16<8MlANVZ)o0sa35;}z7R}53yy_r&DI|g)2p!XW?5^lY5x#m^T&E1~FG;yZ9P1}C8Rc5oUGJ#aTP zN&je_QA6=;{JJ&bg_GQgu0`#9I<;}kzoG15IoOmah_w`~ZfOVwk6VYW4SdVdrxK-X zj>+uuJ3Gmq5&Fn-2`^FB zypR%K=$)?U)j~j}B9xeIuL43BM`c}>Pd3iXrruz$fi~eR6ZZdAe$6*ifaZPg^X-bZ;dn>J#5y~?s`uFm`nidnAUkMnDsic-X8o`_?Xzcm!>;nrz{+EZ+W?89g^ za%VhqF%)^rv_LzZq*=gjufc;aJ%37=Z6E>Z*)#4V8`5LZxcOa=Xz+D9R#E&jk(trb zn=JneO7HF3?q5l8(c?KmIkAuBO~tz(4`Z313T`5qY-1CKHoilkYb6=a`ef!F@KCZGo%eK_CKc zQPFltP-#ArmF1LE+K-2W(Xd@tFy*NN)0a;>{^ZFCaO9-6a|tM1>AT7x4CGevKZ~<| z9Kngc`Qk{T46rKwp%)o$hyzl$8`@XKvB@V*TZhCL(8{(RnWTwHF0CDuzHDmto#2kh{uhx-; z{@k^`;*DRJTDJ*#G%-SGb$9m@l^z*1F6;Wwkt2NX&i&~O{|~c3t6rn|*fj!KG+Uf4 zZK)TCPH)Z@)o=Q)8oPG%4&3(v&JE|?jfJg_eytJEZ?Xb;5HEVLj&I<23Ff$H?hI1K;2;ZU%S_4jQ5zEF7jifiw{yuI?=nSEXr+7S}@e9X!6o z&$A{CfS8A)t|^UH%DSVK;-Vj$hdS*7gwmk$o>vs<#q}@1u1^FeOAp51d`bZsfdu%>=iTZREBW2 zXL9@JcLLO0aD|4|fcyIB9zqAGkbOABWr^xF!W0kaY4~2R(pi$+Ik7C$LLKfkT{EeR zQeCL{uQhYQp#LERl*xeT`4b^C0t9|EH6#I0Q2y%9kG;#p39Cl~LS-(}wwr@icXTqE zzZX^pv_nJW&YICpX`om`uQk9hx4*2ht#{Wgia8j84+c>fq;)A|c7O!Uw#zAjqh{2< zcu+E1Q(eljjtX#rjN6}rIy|P*bweR#4-m=9*yc^ZWVV)X;o8IbE|p3+4|OEEpmN?e zj=tWyCW#F;BaKsWk60j1)@`xwjDIhs^!SxH!z)Q_s{s*>LaB~`xAID@5fCGAYQha? zP=P_~@&BSb7%uSF!m(lv-YX{LnYr|prlXwAbDmlquoCMnciSeEGROuSFGQS{(+$Oe6=;3{haDE=4>lrZ%HTLqDOj=n^067B>C(uAV&9S_y{<}l7rb?tH6PBSXWEd zPY?ZYg1qiB55}7GS_RPJ)>&l`-N8V=J)T&k2=A65fn?Lvi=LD{jDIyyM|1h4zZagz zn0>9`(b**5(C9)^&4Vz58%6&tqKJ|0K#_Y@=nmi9>};p$sHmTO`#+7r*Q+BQTapr| zQ!LiG=Qu7<*!wnnm6kI@IK0WRVvYvM_xvirX<_U(cB-q#{j^;E)iGD8kcL-Y8ii80 z@;>vqy}`^C84?J}de|DhYJSb%yB{M*xuc-d$O5O3+_QV!H@lUnqdSrt%iCLc*Sdwt zao3l!P1n5wjvTq9)ZgRd;i17G6LZ6GetlzFFf&K^u{A}g_NP4QL(cmwj#^L=aKf5- zmeQ1z$s+L$_2cvVd63KgcY9wYb1-ahmsu}7)wZau@zFGgY2@q63C6ar&AxmDQ^041 ztOE%&9&|$%kTZy$SKAPu@f8kjQS)%~#TT<3+Rc>pRjt|%rvOCez|rHS{oDz)@55O2 z2eur{t!0xXn`EfWYE99Zn>CrX8UcP$@@7VLn1gDE09yqgs)M) z#jMu8Z8T?>U~dG?a=|b3`ED-B3gqIQ&5Y|5#O>85#T+c)urFyF$S0EWPN5Y%*% z1MR)i#biCd=0&2X)(Zjkb9?P#19jO`W?2pkVYy@8uKzO=tk_$6yp@+**HcKUo^T0= z9se@VFI1NS?|YkG%TlD(a9J&{J<)I^WG*9k0Xj~ZUos`-P&iM2I?XOs`y@JuQMpxH z5pDK*t!ye61YHS}s(_Fl_oe4{zf@e*5Jt5H7(0=f#NU3v{27m?+Q~sF^8tpRu2FV8 z>q)PL;eQ1q_s%}ssj)R?LY;BiBz10iTvz(hP&)K-G8pbu3Ak4k`SW28p?sq|| zA4quT+%zsz$+Z=Rw=5Xh!Kz&_{3~&qz%94wWXn`Gv$U#s9T-m2q1H((s-VqXc3FuyJ$)yw(hBi*8B^dT*Hlw0*f9OaC}cdBq6LqwpOv` z?80#fKY)$F)I|%~&QGAncINPaL28!dSU0hd@dT9krG0fp(j2wG!Akdi$xAECl zSBW{Lt6_(mRJ-r6UeNwsRbKcCbq zoJb0esKzJsq!Wr+{&l~RqZiuv62!?nBbOsc=TLqzeS+rH+D~r zd{HCRhL+DiVw#Ov!D_8Ux4mt51P@F)F-wO+slY3o=8^K1!eUxxTIDXS7 z23xT4zhGXttc931W6SD0smf#B;iYLuttwTGq3N?}$YtsCIKp=91fc<*Oom$6XZY=j z0#Au2ujgo&byvgo`dv`sIJ z4g^xR@b^fm8S4~`LRW$ATmg~f+YN(DESl#5ICM$!ZJ z%JEupCH}u&(2w2{E1*23QUJ^q@S%ZZ13cr7{(&@u^I`{dRdD2oT)?98Zz!t^LTmJUcP%Y;Do;E<&D83y;!|mGxqy-R?GNF;WvG$1W zw-<$%5v1C=k}#7I)^<{<(kLdHI!1#{sIL3gks~>IG2$6H^sleHq6cD~`ZdPew6<0I zr^PEmT7-H8mUSHXnPxb?>ets{moSs(Hx0_&WbV424DVO)TpIc!qKUg`{hlztiGmfJ z6VzqGF);Az7FpzitqbPk zTcM|~z!c2C$jN7wcG>@kzDoE!eb=Qe;3q&?&A;pVanC8{#-lQ{U*+tJpio^YfadIz zso!ZITKB!}b&s+)#Z)uOug{O3kd@gpC#5^C#HGnVqG0JrC8qt|3l>M;6zLcFTUpw} z*~Fbbv81h?%}4blV_^6V`~FdK5jX<@%+MH2GObGOebFV}f=d5Q2iVmOx69@N=4*}H zlb$ugZLhtS&)kb~7hvFe4`LAg8}=&jOpjUr`S;dm$hF;E$OASDhm;V|y!IdkXJv-C zSet$2<1!VDmF#!d*VhSRizGEDHmT=<*w??BVosG@#|;2H{SDNWfKWd5iEB1=2ASze!1Zy<>CcSTHmsGm#8(aFb>3t zo*LXwy;kdciw)ILcF9nV1p`wlQC;*@&c*ee%nI0Ha7k_Bax|88 zHZ8+iXvJ}S(bG{NaRIJ+{N1jBav%~;pBlZU-|0pety_h!PjXwT`nIl* zwomCwRXg_&rLv%0CdYNFOHtUu5QWsTsAC~uh$NopgTIgF|FILNL*mspO%{hIL6>l1 zn!DU@8iMrvm9aIP181E>(&*y_O&9wzjfu5`bg{u;jO;%qoo83rf5KaIl|A;DAHxm% z@#=_QYZnrNGgksi@V&V+UX3UJ`zprp^Pz*4LZkN0S4AOwakak|4Dakm7lbtadY`J5 z*ty9zgr<+II9sHCx!sjG%f9)clDA55k=0mF{t87Ql;dwbL-W}6jfJQBgB}~dGUyw@ z7jI)@PT+WdF+}9fI_FhZal82~=p#G8*Y#D_kK>TJ-vVyQO~aW-Q(o#WVir7(L zdf2v+`&ad=+^o5_XK*kru3q7brs;E>-*MhjXOIcdN)-{y%Zb%m(t-UQE$yQh&G`vS zK@aUu7Si`#HFx8ZwN`B6OoQ{E%~@%^(02Et&^c4wylU}KCDP}Ti!%tE?p^6t29N0-g~Us7+C9|EKMjShO`zX=vWNNaC`_;%O;d$Eg zRPYTEn$rWn+qdV>q0Pq)nR*m<9;&|>EzjNcNWZp8?Jeg!)zA8f^N?!q?O*A~R$}@D zxYM74F#D4{&i7Rq@y%47xTcWPX!=*%OpE>*XT|s>9k){61`QTt-TGhC`$WqpGSJmd z_HWsz@G_qdwZO`nb@n@=EG}-+9+7X`Ok#kiAL&=X2QbsHK?Q4hCf8(f7Y`=8^*BCA zvvr2PIwjFIE!;O{6|*MG;@k7eDx#-~?*Y@g|3||cYKf( zg_8IXuQII!Ps%)58U_~rYeQ6^bZAPpYL2Ls824|#a9itbU*KTdj|Bu$$SbW`F1RJe z`{a5z51q5#fUHhZ;Kn)+0`qYjtD*Y1S#hvyvR`)buJSfCfpsoZWYggj{BO0{q8(To$a&vJfS9Rj1OL_yM_a~RmB1&Z$H;j=+rB=R1 zginL1Y9iq;qqC?oMHGqWVY^AWWgUr6h`PNXwTdsZ__l%h-BvsbJ!?;8s@;&;_eqH}D+rY>dsj>Utp7A74|deg3>?yMSGMOjwUmNQ}?z>;lJpdgShe z@|XJUJtEJQ*1Ck2x%`-8ybL+lALeF>hOc6*+b%<*xywE8@aZi5%YEbEG2rc_Vk=%p zLM_jsPQy)V@> zUe81kfBCjx6J@~Vp?_50Tqf?GPP5XBtjex1M0{qEdQo5Y=4**&cA+{_xI*R%Er}Og z*G~iH$T9Ny#Jtehyon$O zZD~mo`dY{kr?=4U_qjOS{TdvLDR@G>MMe4B99DwBWW|r8@z+c)X-}1XIHvD_<8;4(2F-;O$ zZJfInaV>MI=*ignFx#%?2vQ977s%b?sniw95S_$YKoo)xF674j#*IS3@Neh&&3^1( z&3*DpXlL9{X|A18D`^{j^PMvTtUUDQ9Og=sAGS_AUgr&QRA z81`S^DMiMyO$nQhe5!*>QMHT*yxk>u=EXI4&JZ+Z4SGl3jRVJXoxG zq7cfli1imkm0GM0lB01#MV^XYR{ca4fxC;?J!a^*HXFYWq4zt-($HY_yQ~e&&#$NI z%TKCBVl^Dr`{ft%yuawY4BDgl)NRw@ND0xEoWXsGzs0f;=HFNAiKlg$-k{2=oCf(J zHTdX0l80QXmxjJ(&e>=BWx7zWF;|1q2(#~ZvelSKymXYXi)yvbB_1>FbwpqM)(XPi z@v*`r>hz%OkYLTI69_c4PeE2hvkh-`vx~LC{jathKk_{0J0G*QNyW2rSb^@~MQD3U zTA@*GnD*MDh?OE$X zri)ZVi+-lSR_plU-B0BcOeT|M;XtK{8kG4A0coix5r&Y^;-}{N*FMU?;w40(1@Ln+ zZ~2)gYxFN@UebR+a(~}^ey%DtEk|1g72BbmH|tmMK8JPO!1W;u(shj$ zJ2^!) za1%7G_R`Neua_uo8zHeV5Y4grc(+%BJL76@jDKwZUHBUR{YAreVx!gIJKH@@)~d^! zqdo#r4J*TjD&09cV+~5y9uZN05P$0U# z&iS8oMMkS4cp@md)Tw_FmZM%S4=ISP0=O`2*Nd)8aTj~Vx3eObxcSWG7r<`ncH`c? zQKTz=)_>gZ=NI}2hwS_ZO~G3@D#exx!z4&tx8Ji!zi@qECt62`cyFK%DeBc(>-~;3 zeW6bx&}y_{0OiUXv%W_Z9^PU3Cio@?z5%<7L#_<#yY)>$V@v|~Cg`!Ic_Nk$*A4YQ ze!Y{=5WBTRB0O#py?ssT{iix&7Fyf2ck&)=JvU*>Y|f;iZx4_on5ssnRXd5Yw*w1L zuDI@PhIYBr=`}^xM8x2(=(L{J59%lB`^SOdLdUK*rk!gKSPPcjve>3E1-O(Z1P%2} z<@&LGl3CMk^V`OCnbGX3RS^)@e5YHMWp2-)JF3XMgyZrihCIbouAf%p67EvGQnffZ zwf8Y&2Q9b$+SFYB9NB!JE}K7_Qb*i7C5&46wctBH>c_{fFGGKX>vq2SeHA8NPDa*w zk-=T=-)XS5>Q>!6-0PFfkVtliziXx*vD6*W^v^iKPu^UaghpReKB zxLEju5_0@RFvs5tOm8xG^3_vqwC=6vIHrj3HokrU8Y9awT5_K4zn(+Q>>5gSaCJd;1Dvv^z*wEjJq;qIVY_N>tl^K#+tKl`h&8bMY1YPPKVX{bys zm6l}hlaFm|ek3T2dH{>aRD3Z}xqYx$WU}o;@oV`rl(O!&0-5cf3NC)vfU^n+*kQWY zEgVuqvQ~zUV~Q>om1AGC0$vk2Sk;sF_^v$foe5#BpnbW^KSfLzG4^i5)lna5E6c^P zDX+4A8Ldm+baCLJWskYo7F)!i694=Gp@tC953MUbC&0g1Xf>PPGF(1omXx4*o%pd& zhgh%m*1|!)<-VM`9ei=W#B)x_C7{!!dKp-N!X*j2{rjIDygGrnG6RN-RNgZs|5#Si zZ(8Jnqw2W5)S4I5=Gvf?<|4cH7ja0k3@i=zXHT4UUQfS{}UnD zdp?~50hl71FzMKGa1sp~EraogArLN`M{-W^Z{FXaz}EacuWL{#`;e(-hx7Wm3RN-_ zGShY#2i|I*HHp#V4M@C2*|96Tn++|V-6oM7-F}`q4WN?V*T5z zOaz~n8@cRSIBvyuI0#OJe0WICnB101-)P?hZN0Ib4YT>}6Pcc_z~O*=+H|7kGCSwK zNb)(%K<Uzm`nMxr>I(H{Sa=54`_(y;uS| zc`#jgH7um%d+O_3nd#pY7WC5E3mm=$q;~Tzeay@R#jyCo`w{6JC^^vh?S@3kF>$VT zMgh?wcr0E%;0*ZnKwVpTso%Y4N60}!rA2XNcc(>hF413Od8oSBaarzQYl7f|n4+4! z5Zfd@K{ad^LIskn+OKQuU#rv!lK6JF7N%C2Re9iL4r9Br0UNzaE11CjdcN$11`22) zjzoWdXVnn0Ir!hc6)EM*V}G~B8G5g6}f9K2W*2MhC~L-3?*hf zzXA2a`lx$Ls&`Yk1geiyOJ*nMW_WU1;WS9s3U>k>U2mm?F0dQPkJjtnoPX+>6q!Kk0P@(-E#IJ6uU3N$BprU7Fdh z%xWw@Efev>d46ZT96PVICq?Ig$?Jx zuK8z_*9O*`(C}T<(h?{yS1%vMEB$qZtMJd?t@P>vqz*`3cL1CfATi){xJ+%kiKqe{ z%Mn}DY0 zhjIJS?URU_QY|_1C^*sCT3fcHm!+HKGvXyC`~Tvmd_!M~2Ai2na78rqfkuVh6Z)Hjy~ zWhOCNKFHZpOX;k(k=4=f&KAgH-nTqYOWa$UfX7dLHfYDdQfJ1h+ZdLO7K0BVBq{t! z;*PVJQ!ahqLJ8=f5tmg$j^-*PR^m}t8J(@ZNO|8<({#0)tl+>oK0PO{mW#5a*K znTNOJlA+0o*gk!bQAOu4^0laD7w zAJ$WT>l5M=8hVh^a-HP!?8^M*E-z;YwLPaf?mnSsVrOt(K1)gfx(HH&nA*kmB*A3s z?zA!F#d~8z7bS0MJ}LZ(A7^S;Db zke|P8DDG~{&_(CvV3i%QYbC#i=m>w9KJO=D1u}C8qZB^EDEXOz)5`VsYKQt$H`ssZ z_6?=ESC-1{%ONX`*rh*KKJmJxB44&!GQnE5Ac~pA1A)Q?3u#$R74A}nC3!at!MEv# z`p0?m!_OXIe^J}SFz2bdmW#t3zVWaq1b?zB_r7jEFn1dEhD%@6$X^gkpB=AuOo-d} zi8al$15(1n3#X%)L>DW5@%>6~>9=$ROVt~tW$sWX`zQ0s!d;zYDlggyh?y(njpGbX)P6Q*pVY&TuG~QT{VvET%r+k0!cQt9jOx5>OnF6r z+K4b#JO(>y@yDPZEv&om4~_I))A~5BiN2QCW}3^_Jv^Zhvb+||q)3|ePN`TOv$VEp za7nyli!8XB>l|2(&ko_lIob*=OcC;th%uCL$QHZPPS}N^T;hs%yI_q;yFqCQ(CEZ- zS3zK;l}bQx#f9vXX$&Y#oh1Okj03LOGw9M_C76PZhXjn(LvzfR^E4AJX(ly*`$XGU zFH_BYQmxyQ2H_E|vn7c%2`nrS5=Z*M(>Oa zCf$bS(50?;LG%h^XEw(s0}KE3mInS1M4-uTKh%ydyw7NjEj7gk?#!^DXBUf0K+4}x z9`xoC^$R`HYVI@(*P>TzE+Pc!ChfEQDJokLw^B1^1ClhoiI9NDN@VD_zgd110;@lC z(JM50YbsK<;`EAeRSODQ-I*+2XTI97z2_+rNkKtZ7V~0~T^dHDyq4#WnFLWlmhfKB ztK033i)}YYrAW&oQyT1Q+=*c|`tGzpUdVW5oUOL5ye*{_n&*|*#4hRO5!q9OI?`aPBX5MbXv$35z(!)FJ$aPEd;fGXEm38*c;RuP~*2;EvL zYxGUG6g00Nu3n-kbZ#2`+{QN^egvKn+D9N@x?r|QIae~pU|4eX~AW1aO zM3`WBRiT%sp^PAD_Itc1*~8WDw_Tv1QhR%v4BEMq1^?L#+`jYGKCwn?w&0=LAbi)c z!V8m@?bo&ztguv)Ki1bfH!RLwBMqIw6+otk@i|%!_LT+XiLjDZ{ZX^?W_}14A!HN^+ znsP~3RfRhgX=uj|@wXvb-jpe`h%RolmjdgKXpo*>Y^l%)zvjaA(wlc~_p1HZOy$_TTuEL$dG~{(A`K`T77In`82dOuXeI>7>wT`C0#K-%lchJ2y7-(pUh;^Pn#>LRUo00W7 zYFbu5X#u`$YP$emw6o4${NF5@np4JLdU)K%%IJexJAt?wQ5u zOP0VaX_4|IdSh`D1>bGuK|Y;QtSL)UI+|Xnn-8QG4U@<8PF@mq%jo=gyNNE;WA?|> z5&0H7EMnMvcHp8eR*AE`0ZyRtR72vSKRjkS?Ca#0w3~kF=4(`21nmqavmSgIt_o4% z%;|R)Iw~HkcuP7Y)!xsi>@;TlnK6?hz0zr$PG^|sc_e#XJ8mdI-wLPpJ6FH;db)+Y zJ=lDB?+29;gAXUioD^LY?J8vac2xW(Iv~h!zElu5Oc4l5>@4#}cS`ODlJZHcdF~Tm zu6Gt&=RjMpAH4nZ_X1;o#pZxrsR1CF7+6kK-F=a3)mxRMM0B`x@Eb>zWfu5BT_mb> zV7Jw~Ia=1he)E+$o(@aY=7c{EjkhFZwc=_&U%;DHQtR_~1N;w3{FV4L3HzcNch&?o)~+ zNj}k)>DCx0AObfi3xv~b!f^t|eKs8*S2g~eqRL}$8g{{0Mi=#q>wQ{dW{+~msq5Ub zCm|q1;LA)g94m}k1)`lXKpmQYsY*+C2a-I0tHZw*iKzOA*Lusm|20nicX1tnb1or$ z-TR7aL0zk-;$i!c)Zr8Q!J|(g1019Vj?@$+nX3L36JQb_&qte&&!%{G)opc3jN{%$ zWiK};yZrt$TvCj{l#luZhha^VS$~3}d=9hW{Ck;PuaGJAmiqreu}V zf{tkw?@STudp^yyl`!O2!6p}&0`%nEwEZdD-6zi_0Q(;N{QRaG^IWGisd{t?ka)%% z9e!gc%9s!S>qrZa#xYf}Q}QYc+AIHt$-5E6PWi*vati>PNWBtYcM{5`la-W|v(*T-T{mK8s$MO&+t*Ht8Y?*V};vwZxf@#Qv@25i6QIpx*Dd3EF$kG;+@3 zSKj+vu6_WNwI1VujXLO+xr|iW`ruL0qOPExTxvGrF;u65X)WenO6 zqE>?FOY}N3kNPKCD(pm0J;;f#;@2-iO{nCad(;%P+X_6ssUNL{Kp&p2!h3m?MrN$` zhc4Ak=zz2xX|%nrL^^V2y@kWGpGIlrtEhezO+{%r|Y6s`|~(t z0(UIhov96Q1j-0J8TFYeU|%Fo+gg$MhCqoJ=&4tFUzB`(lSLn#0ySW!@yu36>zV?= zLFyxyUI2e?jynzE#0qdw3RdhV_xHtJ(}2V2s{i5e{PBr)F@f)iWKxQ=Uln^RAoL@; z>PhtW(l4yv)x!O}#5*?NWW)EtYx>7o8sojx1k=XG>WD?8B3|owIE|q?Z)hY&nTqtar!30ld@%x&boEz|Zsd zwCMq`h}_CRF~R50VA`1eG10UtETet!_XUF2={}$HxLd^u5_dOb59U~~{)4~cug>n1 zjw{v+HG=c!+Kref$#cIsa}zL&LdB0DR;h!!X>A(pvazx+pB%gymvfHFeHE}~EtpGt z&Ci?bzG`#|g51S*u}ec>n!v?Y*U_m!8})A zZu33tLM3Rve4#15v1r2EsB2CWU*8an4!)QhziQ?4=z^QO;Hj@AG0AQ}3HvLq>K{Qh z07E<;3L|zB0HHyY)Bt+a;%+@kTT5@Fw%W_CIsN(|3|Y9osY(LJ*J1J+W{ws_0)Fxl zqKv$)pI;m|JDE88_%W@I$YHoC0XATE#wL03;a0jQ5r{}xOE|gS5pdyrWEy7L68ixJ zZH6FhQa=pzo6(rQ%6y5#HTiCwb&*9GLTXjjlO}+vcIj`%q)Yf9Kn}ny(<-|ta)7{M zrv{^2ap(2Nt=C_w9DD?>YmNu~hFZ|k@?U!??QxwQID_?zX(c5Z%AZ^hmM73yLxRkK zbEcIx;f_yCMH}=Abqv5`j2KI&Avi$QQ9Pz#_ONO%B6Upl=|IfzpG}O_F}0Sg`+WtE zuR&a0L_Z%UglN+J6??Ad)8lK!`jzqEpx+yILD=Q-#>g&o$q8(AkWVI#B}-ZbvmMTCZbgTkq5t7dorv|A>v9GX3sXK3Y-4jdJykJ0S`}cyGr@oztIkZDLB%tbWRPC{XGOZ-tb;I=s~E;3vPU6i>$gE2z*8(3VRFU-HQPHWe_+{XKP$k7hZz01N(adoUV74IEpzJTm7$ z{PDI`DK&(XX0iNFGo&@f=4kFIe2ovLy71^KP{jWCISX5;ikZ+aH5sh1>2v_Tyy|`} zxiPlG@&Dl-*kuCuYBfyX)ur&e1+o#L+Y3(p%iVI+s#o+(0Ao?+?W}&d+r1nKYA|9> z13%&}({7%iNvwzd*kpf2_32WzrF;4^`vWoF1V6!L;9Eh0f-+3u@Xw-Y6F*>9c$9$+ zwfEt~uX*@IFQqh6;P`fBT^(+er75ly%uy}R7{{a zeAlZOY=i9fAO>aTG7^-Yi6)xmn7mtDwhS%|@FNzRV|IrMb$N=}l4LELB3(pxp91ZQou&v-=&RWB6t~`*Mf4k{x+s1_OGYbl z$I`}R@v)1Ao&OK_o&ikvwx8HF#2b8i@<7`6=W`nA6-X^?cYe=S0}8)M4FG|HqaRF{ z)3kE7b7f2xUTOt~QjXhGtZz-DI^BMkEZGS*1IF%|n^%l0o>ha8-tHB{_>M$DUAvF| zafi>-CEcXW-|=SuYg^AJh5zeY&v!^qFsn#9Pis4T@JjmI0{r5Z~HE{Xo|+_`oa)AJ>$)kdr-C{Wi+PVpO8 z@ z`Ne|)byo~*1MRU{tJ={Vfug;d%i6)jTu z2%PlK@$-3A)KOp1n_(#q0kFO8by^7&d>d!TaU6@e+l&3Bxa$n^n07v{xPQe25Q{$i zcXG{t9=zh`LP0P`iU1@X374rb9h|27lD1*xxufq{Y+93c>PTVc+Ugjm&kEa4xL@&x z&TNN@mZn%*DF?B_rqyz$ErArQXi((EhYjuv(X{Tn2I^s=!oeLW@YHAdwbTpTQhXu0!4^}wg6p>8+c`kK_Z ztl%4+f&2fw=e>4KJ2YznfMLu>_zjDmxi%6J`@fg|#-j1r5H!fO!Y{8i8p3pW z!u@U7emxDss+oQ{Mz=zMtwP&RS-1dpvGeA5kSUlYoWQo5kn*3m%L8u*X#4=@IpU%8 zXoMMf!OaH8Ma$wdt?d&{ycPS3u}fPEJn6&1;cQ_1(8{uyDveaBK^pi++KYEVrgw3oM?sUSA8^@=o3nW*Y6oqi3!dpHf)0FS3)-jVR9EBY_%frXpiv|B zpHoNT|Fni!#{Z{AHUOq~=l;BK#8JCVDQ^&6W|Are6$qm20dU6++JTO&+nPda{sOe^ zL8jMAH5T_hRj8bn(RZR&4p`(H$SwsndOv``_bInpeAP_QzO@|n-sqo#pr*}CTO5%< zSK~j(zXti8lYCB978(@vl)Nhno|ff4C2q>?4};v427s zKCAq<(82#oB=i3gY6g7e=l?(O=itWw?{pWGeY&K}av7;REXnt*i-4+og`oZH{C`9K zTyBh6@D&G)AP625hH9i&Yx~)fe$%ENGUrCkr8~AGrml@sjNxki_sC{UY=>>OA|QA`5qJhp zFi0DXZttLOx$&mtt23$ZN!0`2WbW*spsJ^NZ25QIedz#KVu1JIxfIkZt2&$%9j zZYzU4^-HuVQ3Hg~(K^Je17$2knu{7=@HpFvyyZ+VDww;;;KABN)eoG4CZopd&eso?AuNXO@Fnr?fag-g%s z%W`k5Cbs6!#es>}2q*{YukdhmYk-&+9kC3rotXrDHI~v6rwnSwr7}aM#bbU-EM&iJ zH`g#bh8uhZUW0Ll9Ghw)00_hf+q#U9N>RPVF6%XXFiCU0)jP#ocz1*5*vI7?0c161 z`zul0d)dfU;9$@k(KILoCqj@K0cJh|fFl6`!kz;#~Uz}&*FHIUFYl6+N&TF;nnj!i^JS6xS0Ofk@Y7BI0f1|0jym|zUXi!^ z?m~Wu$hMX-C^JKvOYAFcTxyYOVHX7*Qqf-JK%Q3H-6CQ?`4B6v3>XWg<`{oMPpwJS z-ENtG9N3w8zUOIq^~`CY?`~uiafI$oWx@vni*IXJzq=61Y7(>^rL@vf+2z5MxLacQ zc(VmWtF$KppiLI2&C3wnyOYF<9WB(pwB#sYGTcNPea`(a}A zoO}yt^qQ>h_M$dTa+J^3$N}7mL)HQp5F^z15ohamiu4dEKaq>|0PB(9Y}81|(@LIY z)L_H$q*_T~z2tiL703;sy+O;B&@a>(1el<{Ml!P&ifAB;>0*P}q6p^jO;El!UwZtR zgg~z$K@X`V#lj&H;W5L%1>^_@x4a_NB0vdm7?@E^^3{ag7jiuZ$MfnlJs)6;5F_9E zEU;#4J))oi0$qa=_}FPwB5K{L6l`%JAH&Bi?mxgw_UUBxDYNVO^g=>Zh`kb!@X^+^ z0yQAQErg#`BzXmKe$P!_eU$kW#q-9ZtVO3nk1wHh2x%`1k?6&==~n|e(yiX9i|KvF z*ft;(^)g#n9>;=1t=9ltFq3@Wqf0HlZ!fAx#$x;_&Sy-^OG``r11!%jaWP7Z6myT@ z6Vj(aDn2Dt+XH9$*4Q%Yw$C^;6CrKJrh!ZQwU(TdqooR$yR7yBR)dzsSmj&YzzI=@ z?Hk-4^otdes<>#gJJ*z2^>dw(o>w3DfaHv)9+E>tY={{Z7I{bB+xsBqIwTq^>0rYy zT~z}nyx}1laDxP@mqWknFK+!j&U8@0JdWq#3|ajX`P+cfSHaDE`DYfu-;ggN?2+dK+>YQNeM-%Jx;N|;@GMCTkEL4&ygwu=NT8=rg$zz$Ob^*YDz(Gf`Nztl@QON`g1@X}@-DU6&+D zoQ()iggD>hc17n~7gP0VE1Pk6Y@>?oU-;wP?Y(;fWRewuX%IjH0SYJcVyN-{{pd9$thtA>(#> z@1e>?)|=KfQ<4Ahb&_3~8(V9n!zKkw4&GEC!r~TvdhyIecqAF6Ib&-S2jlhGM1qba zPh1C>X*PV1q@yd>yJ`)c#s_wd8o05ml(BqQx2tcSB~in@SU8QqK+sa=DZBl91pQ8@ zoUE}KBipA!YXx}2RL|ZmdWkpy<1xF$({se_5^FbUbX$zA;VxFli@R8GfzItDIxs2+344!5S`_fZWch zL7JF-w3#c>uH{9kwdd;Ll2RMos(F7d1jIrYuR5`dpw7mjlYjrgd*gJxq5BdE@%tN| z>WicbnU0-OrInNeJA2M^=c><%EO_rN`Oz7bS zsvID0s`>dd#n{V)MUiwTYrl?kg8B+9&OLOYj`SeUQ?qL+UU%D|M?w^ZSYjeaiGhZt zp2LFbHp=Xu!%vxrMiwMd%*`1$-Oii0 z&G%6q@pgGrLgP7#xzwU{oXhY1vWB<2yc3 zyz?8I6FRcO`+k8iPC*BR# zM}LqAo*j8F;`F+zBg>^w?rAsG)~>DC#=?s$LI%%AdSFBDk*Rf?jSEOCUC%?aoG$Q4 z@MWLq0No$W%t3(>;0YRB|0U+Og2NkLU$J#pjTI9XT$#`-c=(c|KJTkr%91yi-t-}d zmM1gEOtL~BP6wPvqLDZ94gLdIat5tE?eYBu=~(BWVk|>i-)AQeGBwbBjNSYe#iiX& zN2@?&$jr@oS6_Kle;M4}RB|AQi@*LR^Z!RE7R>I zf5|ib6*r0vmJXi=FQk!;@$CUU4+O4q@YHCLBS!eFNyZt@?$xE|*T~4S*;9g4+~v>- zs6J_S&#E86%nKu5&a}Lz;Z_@@i@7Ed=j1gzc1B*UTW6yrQ$4LQ+;9nxQ!}S0t;H~J zRG)CUlvPY%NR7Wg38JcMz1sGU`j>B9rGl**w#gU7!>&5gQ*)f%m69!|+T9HaF&?d= z3LSAIw^xD6;ICBFEpx!tEuaq-nRqoE{K zU%`u(`v!#9p&YF0Nq6LJ%s6*rL_nOosLrXWcehb*CGTEEJ?J?gXWjVT?v06e%8b{LNXvB@vg1BBukux!%W+nZyFcLku%4%Dgp6No_E(yATQhTRfmdq zN$lEJz7Cn{yx(}3^5Yb=gpodvCXsO=o3Za$g_xN10Y^=*aJzo-D~%n!)3Aqqn5Lx} zGkNsdojNwAlCl*KkBI??AwAw<1!0U4w3i4#EY~}O`HQK9KwzoCG z)HmiKu+Y+Bv8O}4Xwi?{f!r~hEWJjS(mtt{F%-S1EN9;%@Z~0`3_ikomHI0nBTMrR zJ9|RR>Kmf*Xyp*(&FP!dl4wAE;?n8|L9sf9kATy8B^P})f$@|a_st88;?$hB;pb`% zXh~kTi*SfMUodT7Bbc}vk4)6lZ7a_5s5Qir1+dLucAJSS%bfuyYL;g9$nzZ9G(b!b zJoyr3B>mIw>h;XHlbO=zpQOq@-060b%y_%XbA+NmmSNt);@2)@Jvf->F{K=m@$V8& zUse3lPVdhsE3tCHpZ6J=?v;pcrP}u#$Lt^!&{e99B#QcxT0>jbw*4iOHrf_f;L$53{;ha@9D_lT|B?dN`(p^g zV5SyzR`6K%dVl`ihS_e7mFdr!-($M2IPWVeHQ(ehA+FDcrsLZ_)5vagrun>f|I$No z5lYtflgk?(&42^(T+=XpTzJhP>vMgq`CFeIL8st0V($B&@-gPHv3orA{Oa$6B z2?3e~UL&~0!sIqt29XLP20wAfq6MvDS~K8CG9+-)W7KJXEls2}jEml5Ti`}F4}OB| z%+EjnW5F8Ve*lg;e;>OZV|fZ|$4ZswNXz#)K*(e{!+=Lvi;0s`U@*H_ z&DR8cFd))p`;w^`f=jrY+{kXCIukIvj#A6IzOZJ9zGT7k<6fT@DvE7>{ecbZ^ODPk zwo3D%8J?jEJorbz8=&5I}ET z3mYFr%TLwIjAp?Z` zrfzhhi9Y&hR?N!ATrD=yT(Fft20Ibv81A3hsrXiJyz$DhFzq?R&xrE_f||-7xM=Un$Z5U_H_X)_Xmm=6lP6QKSD2`@}fRb;Mi<^52cH(^PiV&ImGYcobMTK(!Zn%<=`Sdl34?m1{M1o-gu9YSsQ zDa^0TN>)IK*}Ch-!qaD{tiA8rvFdD*o3#OWhh&*R{WMm#RYIA2k(vx|;yOif4#0rj z5*{igh_{u#6NYK>}0Vxc{QAl@cHhGYMC@9p_=S6R_eu;E?&sjM8ll}iT%k8la$Fv!l>q6=E6G3J)1Q5++l`c)cNfpa|+W*+&)QDcxjIsQJTXZ*Y zQm!5IjGEn6zpqAr`$dm9yIDGuov!E@x-7%AZ&QuefT}Y6rNV3lI2Yd2s&Rd|!ss

QkiNA>Cqg^NJLqS$kfajcRK>~N$gAYBVz3)2?4(=*~cJTF@! z1Xb38-4EX0Hgesp*aYuA5^YcB_bA0J<~z`~oin5gi|?u9xtV%&2lrrp{}t~qvV0jK zl;P)i&pbZ?vvYcsk~4as`O&XpK`qC$%JHgbWf{&D}%JI9#;|HRD|^KLdH0@KZLv23{mB}8pkK%;OU4;q0-!VwFHzq0*$!uPZ`XjDw4|Roo+E@bBNjT+GH?fSz9Z z6_w3i2IE2QFprWxh?$ZXB%756m^S!@`yD{p4;l)K zTk@aFswDQx31mhTuG=J9%nH4PnDOB+2%F}yYHdnprOFM7p5#z^ByS1|IxR{Pt5u5z zn#UqyUiIe5w*7&rkl)M*cJ3jrWF%@wlx~9dZ8H4bvHj16wPZo(u6M5;S?M2MbX9+c zUB_7p4z>2OH;B1@iL$2ULf>O;7%4R2*f@~>A%OOSvI_Mn)oW4)yV(;67e?#XRI=n@ zD`Ke?ckV*Ph9S~l80v87`m|>PUOnQQs`|JvO;hlv@TsjQ%h~v%{ zJoLv3NyEoK~M$@~|E?V)kv93X#3QUgfFvPn_rMHm=Qo->2?NdcRBnyb3Z`eLo6 z{-RFVh`psE&J68{HAj0<7|<-P5oVO=qt>NU{bAcR-JiZ@v5RnGvQequK1Lax^gkDX z3Sj(4^9+;8Au5Z2Do`^cX~){%^Fg(lSFEIlUF(k(Y#>}$JTElLQ@mJt)pM(FzX;|`FrKa#jjjvrogpHvd6FdRfen%dqv;uzTq_8QeD~-mMOJ zi9w@rVKDpjZrRvR`gC?>ixo7HgC3=4pmH7yi;E)6UhQttYC%pNig{49FQ1&+&`Mj; zY3<*5?)Bsyr8|TF-?691yk1N(b$cA2;ISP&EI~5h*(^WsVWT)jOz0p;$9Xglqmn8& zkyt4w;Owi)Ja|o@72b)`B8ll0f9-w+y@)M8FNF18ZoX>p`1aFN5rxg?-8VHf(`r1o z2j369&6dmftBaLLRgymX^&h5ifwUhEd(VP zR2|y>Y}k{zSr(aVgkQbiH(6ntD;t~=6@KGx_<3!S*{DzC;E6xl_9DZt8vcA!iT0!m z7Gs>DeWp#jIr4CaZg-Rz;%yV{X~= z+R4>qK3Ui(TM)#~pgNC)+x+^LBG4ZcAc-~jt!Kup_wm}p0nZ(~C9w3l28R{wK(9)L4Tx4_DM7=7}Pq@;kwBq33v( zyN(8h-kg9!lhjT7Ord%p+6#0s(13W&hbqu;41O_uDc}B=$m0`scAsKWk*l2jfBY=#kNst_Fk z6p~z}x{7u9Kx`hyqP#jr;_~B_&c6coy91EQVc@wYpangE(T`TJ(e2_k=VcH2yQV<=dZX+8yY zOWum5xw^t(l;ig|d|cXwn&oIVqsuLve1uQv_<@ZedeM=8|MQJ?iC<7{w_(=5PY-dH z{{Qeq|GnN*a=zrOQ$eo_)8pN7jY0ILK=LdmIqqE+UG#VuX=)}n24XWqq2bxGUb~OA zhQKbn)}HZR^PXI7jL=B=~pNjXc@q-p% zbHuUAnRv85Tbgkfe;h0zrM5Ujvl?wo>D(nvGi2VET}7$9D=}*`?y*}U)c7-3XuKHNS=?8h=WEZ0CbFwB zrOW3C?IGqUeT$dJX`Cf7(ATg4G4^`nUmv>7dF~I6i2M;WPEQ(q$=4z32^@2Q^rDS{ ztk z*;$%lEJcIIQT+WgEjpnmw)2dcy83DvxRHt(eisb*@7Dgc1Yh9Qzm+LBQNOSTSyj%M zw>#j5LbpNV-LixAVu@v+Gr3Ln>ycW^y)|D3CFb~)J4=)cXMSH0)8$sxgQTA#{f+XU$9?;@$~zj2SVJHn|;*MzD8HO zuwAz7=loCKLV~F4@i-Z{P10}9tbiL&?roBF3>=Mzc1TvRiLwyjkf3K+`ecZ5zAo3b z;QNBpWZH{ioj(`zg_TzWwB650kS@yvtTIw*POry&F zbB%#U{-VtYu7q^spFbk`kh_n{*=-;r&K83hVi2jw#st6OWN+s>Ovu%VZ`p2@09~*Z zr0j@shK^Pn(%bd(%^|d`^ojZR)<2@%FUR0{m;*!$aXE3^O?u(WRyJn6@f{lT0EGC^SxCoyBBiRn{uo~OG9%f5Vq|uK%(hALzU7)CaD?9* z^Vs?cti1y0zPTHJMNUJOqm_Y{rsm-2EVY+*#Itt&N!a{jl!IHS4>R?pH8dvS_@PX8 z9PIzip%ZQI?QWEzdJ!>>V;N&u^hZUU;L%))ppt*tsiv#-2ifS z5Q+G*%+Qm}hDKef=wkI`MkBUFj7vdtqA|e#KmM9d+VUuqo z+p1malwxjlfph8Y<;Obk#Fqj#gr&LeT^sMu)3XE>Q4um_Msn)>74#pFPZtb};{zqQ_ZnW$n^LJDfDgd|H6nvw4k2L zc+>0NjH`<_U=m$wJd_>;lDwE<#Ah1T$1KQdJXT&VOR3FCrzbjm$*Iz8C$S# zPlYrjxxeaN_%P(GneHlYRgdU}Kiz{h5TT?kIKUdJpHF%t!UNzaqaG_t2$!eG6eQnB z0Mh@w5#+202M}cE6&q;h#ZtunHLVmoV#=mnQ{9)N)AJXG>9acff+QRj&iddCyO!-d zb2E63kRZrX$04-==YSs_2^|&#X}I61&~VC)MCOsMuJ;=KiBdd(!B;CYm%;-t>UXg!Q>>%pk7Q@`})?M^T)MVe7lngz5HZ zV+?jZ3(Z4203oA@-bi|?ecpXO6ghJto~ag~Xzy-}S6CfSpC^n=o#fES2qD4*`xrK* z!LaF;DE6ee2Tl}ye{PbA-u8B=+5L>QsVN=zBDN_doGQ^woy4Uy4{24qULSZ9ADK7_ zW>*I7+_{;F1_L_rB}5tt0aqTPyQ@81U|X{`+SvjFs#SyE{v$rqufNiQI4kg>`nYMq z#NC^@+vW&2OxshfSA3v7PSgtS2aNxgkwcxlPP0jmMRUj)Sm=5ER#K2`C&v2sEV=+dS@KD5F;C7(KgE ztd*M_M9dqln#a`c6(Z7|NbcPp^546w6waxcP>#fEQ?(a`fxq2H@^8j2q`%>=yumqH zJs=ZIYXuj6!sLaE9+<4TFas-k;CzIg_}V(Sj>|jVvO0JJk7Sr+#^^qYRP;|y!y`J9 zR3;X0fDq$E=q<4tF7xAUo_csllCB?9=1&Ef`q~bX9A3Se8(3I{3 z8F`c(_wqjwbC}+q+y?8nez4PAokHD}67q=4#q-hCPV%rOaRLD~E6zE_(srjqVy~E9 zv=nXJW@Xyo8_21hH+w(knIJ)GcypY9agn4XIk7`&fNKJYmtVh*5dWw(jo7O@S9>7W zZL%_j2Ldq6#tT1lHb{uSlxpp&gstcbNF=s5nx(7;N zF4$E5le)G$BQa1hsafz)Ix1ddTHLC3Jy~(KTHRKOc+<4~g3S|7l8$hhiQ!}`EU;~y zm8)B-6Jkq$8VZPzXSHprwbA!_3$ib#u(vDMPi4XHpKnF!WZU* zxA)V;+-)%6uv_OVHW(_J$p-;}-lR+*VsjU~TI|8aqo1;yb0KEEyOrC4_=AVf-EGLg zC-ZTeF4P@EZ_MQCyW>rq307q~eOY~%7&kgg-~)RR9q^d`GXcy?O)iE`G#6g8IZ z;Y9&KZd#0wAIh9rhFKO@w)pLtwg`i+Z>>a4hM3#Wk+U&96U zO1bt5>)GBp{w8?LZocWSg~SJhEpdE%3!iMI(TVD5a;e5shW8I-IT7B4iinqC3>Tk@ zlRVRX5fuB3w<%P}NL(A$$|I0IwMAU)5g9HuCj?boIDzCPW4p|2ZH(UI8#<2f(hqun zqzmI0>1St4Ev88K>@94-4{~&FLEfW`m~8zSc70Yy?h@N38GP~zmq(S;Nw$n$5yyZA z^8_c49S7-R`r$Gwhtz1t3*Q-ekd@;WyPWkH2g&l2t0^zkVE>)Fe%`b^^mL0E!ms%) z<`ZZ&Vyf-SxO+2=Un#QF5zNOTSub89_BULqC4sjtDIg!^U%hWAp&d9o3}I*UqNRF( z`Zs6}{zWM@!Tca8Y1x(Vb*?}2fM4Thqx7sG&0MWErDP|7$c?fnzcTc_^t7eg2FgXg zlCo^&4l^7WZfJ8kpuOVVTz{oVR7 zODa{P@=65i3#6g6q$aSIFB6lby9mTv1Y*BduHhMxy;M%`*>{`fAJkCnR>|FVHJi*X zjvj@+>z5xBrCRCsdQ=uhRAYz-bDkt>Yp!)yxUBKlbAvu9P zfXkn{#~j`cBp4)k{knNF!F1~N8KAJ-LW8_!zA8})rtxuuGdD=YcXu5nn;T@mYplE} zPC$W>-ez?UKI&2hmtJLWgzAdI2@4${w*M>}pRSmDZa<}|tpjkTQFNOGxS-IfrYb~O z;`AfFEY=d+=K(JiEj3)pTbGrBj1Zqm^%S|g+Gv)H(W;H|&5uj3+WOKjndI%Rzt(Vn z(9EbXf*uDzf$=j=wQ2|$4CD-Lg!U}+>pRg9C#dL+8Q7<}Iw@xV=@?LHiKL~wmsV!> z&ze?eg_#dcP>*D)RiG4)=-=$&(y1QAMj42@48a2MFj%6$&Fh@t*ZN_(Zgh!6@_m1m z=+)3vlv~0jbxlE&_TAksLGVvsRSuEti*1Q~)80u0MIeJZmx_i{o=t*_0TY{t#8s8} zCx}n$2t;6zleP^P>nP%BB4pHvw~U*DoDw`i6I%j&xJqMgWRFzoL@3_~Rl|o;XZiO3 z_{n1TOdE#*tHZ_i?cPXLP!I=ZMzY{KplgOspiE=BySW@5Z&8c#7V+~0IDkW4b+0|t zfErT*g9wYqX)0Hb+gz0&&amneB;0!yqy&HfO0Lut^QNHl#*FKWjA1MmG#1d-E$=oL zj~IkxkkAb_$6V?FtE(3Kd!7K5SWWKM7*4r0GEyO{{Ra=762PSw8da;j;4z_g^Fs=| zF?;Hy`Zu|QDYoo&A3{%vldxRUlvHnMl9oE}nt=Kia6y z1IlQfPSVs?4nsYC{t%70No4H>-Yeg?r3r(@Zebg2y8W(wb@iDoU90Bm!MgF{*%!?c zP=OhqR}y%Mnps+Q4blgLjl38Zg6axp-$im5jS(N^)mhW`$bksywEAZh^Yfi8&<=zq z>CTR*-fAs_s0C1Szk^&XtLLbQ%&cgPV|2IOp({&PCsT)B8OgdPeBTE1@As6KI5RQ{ zFE+L>b`i~CEJN*`{Niy{{v=gEA2LHUk3}1*OE@uqLN;~UaeSK`g7@U zQt3NtPPs3UZL#yJ)uoR0V5%Eld(5nB`f~Zq_wd;px$aH_X<->6p;>2{?`V$qzFLu@ zka&W?Y!RO&#nBVRJu1Og6e!JY4NtC%bD5UX_wIAO=iQ&^TLQ}21eR~0J_H8*EP)xRm68WzmFr#nsn?XZ#p#*gCOZZP}B~eB&l1CIz@7=%qo!l*^l-J z(Jn_-eBLK_mg6?p4C~HnW-5?N24_EWBJ^Wc#HF>H6`n|(dG)6E6!wr7>T&{V_N5Wc z8yc=4QqH-`yWa?)>b!?AOrW`IeFJ%snbu&}*&!fH^&)M+qlp7Lpi7YUfg|`+=af%0 z(ivwd`n!`Nn3)Z>7}}5P+3n5TJmW6iV&>V22((f4j3 z@5hXz*MD6OMsnougS66RzLoVORc*nnv9QPHD8HVl#8?YvdTJ`S5=D$dW8Mmxqa z7ue#sn?gm|UEcfFmia}b`QJJC_1As<$Q&JgI(gE&!%}!j`yj%eXF*_H6U9HDqegZ$ zN@}5jQSO}WVetWY4tzgrhzn(i1@9!isJk)p@eX8~k5-nHu6Cq0ac5E^)Ob&nT%S)U zt`Euj+h99KVw|Oonear>lT~IswUsc=>6T+pygbo2s&P}nU=NhN_Tcc-A@o~)U#&?E zrL*v!PJp6lYF@7buK7;gc}+a3#mLqC+aHG<{t7-5F?*v7CGWyC$TWLw05$59Y| z@7C{@M+h(Vl^DoWek1*JtVC3>oZ7w5lzd<_oQy?2>qt1zMLhM-qe_&L=lDsR!-bdf zW*X3x3SWTk^3WZl<{tznfyxcIE^5~pM$G8dwY@aMq8&=bEEWOVZwIRIjdTzxGn{KV zAZzfvb3)Tktu;~ASG-y&>8Eh0Auoz}mf_SUaj`G&?NZ84=JgplwMzz+$<`YUWx}TS znoH$0oVpjul{H?=lIL8F8s~^*J%{J+*El6%6&jj1(Q`q>v9r`lp?bA{=^emkA?mjL z=E|yiUV8cbaOvmweqEXq78M_Vw`rKxGHHi_vZ%izj^wMl31a7peADj;l-YveQ;o%N zo{7zv&BAv3O@~AgVb8(pnKy;R>IZ_?Xga$D8EQ)dC)>J|IlRlRnRNKp+i)Ijab>29 zlqI4_$SaJtwdf>YXT^=T@Im>-v_|*;|yrf!RSuL`a zWYDJ}=6(i`Uk78w+|(3LDGsQt(e{m^kpXzCG1TH9v!;u>_D&6SU0GuMX-b@utyerP zBpNZ#SX#;#j#=`gt0va>1C|_iptOeb#mVT`Z|?Ms?a25#OtqLewP#SNk1C~#^>XO! z2>REfOGG?2LyoI`O1F};j;Lj#rao?S990*#G8~tX5?}VcBik64W<|HC-kqXVdF2tD z-Ae^>-p+sjtZ*+~ISM9Mwfh-hM&ve-W;W9>;PGGR#oAx>>!e4j+J!epZeaHjlV02~+k9awcNy$~fa!;Sr+iML zuGDYsP?WHG*62gz(;qNr?XyQiKvB_?2jq;|)T${Aso#$;&MWmM4?v_QevIQ=ipgf5 zg~p-Vss12o8+&&mk9QccAQ{+wj>t>=mU1uuevPH0UhiPhA%?k=h8iZUUQR-!6iizN z>3*i*G5>Z5vi({^tI3_A01T+|_MDl}r7Ow4gR zbL#FlMMuS0fPyoitE>7lPM48$aLFD_q%m~uvaZIn*qF_wD%>v48!CGIdFb)H_KuYn zTkcgzZqlUk%zAdi`R6$xX^Yr6jr4x2^!`cxzG^E{FGtgCf7iEAlhU+qheUQwH^ZTE zT=1?x3m1DT z(2Tsste-D|qx&Gk(cN2I$Q@)d{$05mY;;k3l{MzLU@xmkdftS+c6XYN2#2zfnNJz0 zuFJt<7N4=~iY>*#=lO6)JT?=FIawMmqn=S`xOBgIuCu*MT+3jO;O&dC*)sCh*&;jh zFiRVH4Id5N@zNXOHK3{(CXw7>cdw~%m>#smVCO(HP01OhZ*TrSex%rogi?cD%Ahpc z^g2n_j#b|bqpzn8lvN{$7xr&t7Aw@&cwUNRuh>~`&6R3;Lpd77ooEs_T5PVUT9E_P#Rr&E#kD#2p4pC&mWUQZ6v=eF#V8#g$ zcD{+Od6?RI=jiDA!l?1#BPVRv^c$GN^KgRnYP%aCe{~f3emDTmKt!!+Y{2>Gx?>^;fu?YDC$Z6b+XZ zY4-V~^?;qwOLOM)VZjomN)P&q@0@osc`SgP)-)bop}AmC$a+y>@0A`eD!eX1)FuyN zVNciYS=46x-N0ba-8~>R&u-H3wjt<+Z?@$cB>bU`)e~q*7$vOVw|?>KDY(m)wRw;< z0mYU%kOw6ouJ%1R)hDdZbYLdYtU0Z&^0|)kuSzR`%w#aEH8DEyrk_UQU9lBGi;nlv zue)_A$PR3(R2{ixuGi!n&M2yd@OfR6r#=W9CO)A9%O9BHd8A^c31e6CL#xXG^w9UJURGMYktVTa1G)*Y)& zu$2B>0XG92)T(5%q!0Q63!0Kjzvq`PIo;>tMWiGaE8y_>lT3VAAlJqK5VsB2`rE1Hz(0C)&y7&D} z$2@Se92*)^Wh$@85Jf$4{CaQ-&0AW@$QZd!p!W9eI~&e*9>p#&+_O#5p`b3 zhf?$~6jT0%aLOT!9i&hO^TWfT!p9}LC6;bdRQ=$uM(X*)SacaUAVvZ0gRGz2)!z;g zI`?i9mzo&=*WVB$(7LBz*^9+!WERG`_3JEnUIFO5vt;_$Xx<@-{T-{x#-O#vKevx5 zH?C8r0s)~SsZJhlE4tXqwdzD!gj~%5fJ1t5`%h=T8ht~t{h@I(dEQ7om`Y03I1JTP zE)W4Z%fyL**duc{1=Jrnq?NNA-faC2#f6lmhd{lA!(5iZLGY=;^U-9P-~wo*7Xn+S z9A6KCE$v=gPA`Z(MDzl7U~P6<=%nG*V)CVQQf)}gs+w#UokzTFr!UJ^Y^|nmcoNr& z;E$r!Wzwu_Kua_~oH#x-Xg7JdEjA<@Q-c%Vo;60;MtbqUNo%!P92v^x5ucaZxEi0o zSi^X>h&)D{=sjPuzm)c;4=q1k)GBb2e=9Zr?d{9!O!OE=3rzNG~Ra9p3A)d^jZH0$>+1D z9~6s4n7J=hm|E>@+KqJ@6Z!~Fgpn<0I!Kccx)M|R08*tEJn`KoBbFYzGk-Iz@z zmTH4Sq?wWTS_%CP*K7PX=9XhS7i<*kE&6lJeCBz>Yxd9uOQXt{Y9%Q>ek1JUa zP|?u%#MEDErDp|4?6LH61kjEPRXdPz`!g9#UU7dh@rb%J&D9F^x$Fs^*F~{pzb|{h zwgGB&vxXpevq7ZIf5w@dRaTqB!05)HrnZq)u=D&JxwMQuTqdvQHb0H+-G*UuI{sDP zn7(YIak8_VvpBZx`Lc0QxBH${FX^&F;&Wkt5#N_A{-qX-<%;bqUvXVUwMRyAH;w}Yc&RGa2g`+(x z(;494(?QFHfIm4XnRU>4>+{`@A&b`pWWqGqoA_%+dRJ=N)%YVye8qvVBPMIUds?5amHOo7~P zPr%jO6k!TKmCILcVd(KYOpAH6PRdU|8Rx$XGfh)Oe<*0{aC|BfCf+++eh7sS33vz= zTh8!YTNBD_`XiB2Yv8zv#&t+gxU^wUX|%ipYX237#~pT8wYri%Bjv$7*+LMhRooBE z`tT;rRDw9cY)4lQ(BeHt;*zJDyU0apyR7ZQx4kq*hCu<>>j=+ zeQM*F+cPM`aSs)mMol&aMU!PVr(jn&wze#d(l<3rEHwEXM&iBqBi82)!=P!xt$#Aj z$L9bs-sbLibFP8LD}J>p1H!NG%FM1<3bP={fC&X2$*H{aM?xzHBWwtwNGC zGXAZnj&cK$ToY7ImWHXzQ!TNt&nNJArt+V5{*-75qX+EXTqY9BO3x)g6kfvkQhVjC zZYZ1jV?GTVs70@LXCRZ_1u4MP{CI#aEi3P~H!65ov2_hSqxX9)WV(1t0~K!#fdl5> z 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 Date: Thu, 2 Dec 2021 00:12:50 +0100 Subject: [PATCH 057/112] Update to latest --- docs/wiki/PipelinesUsage.md | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/docs/wiki/PipelinesUsage.md b/docs/wiki/PipelinesUsage.md index 2ef28dd7e0..ddbf1e4197 100644 --- a/docs/wiki/PipelinesUsage.md +++ b/docs/wiki/PipelinesUsage.md @@ -90,7 +90,7 @@ Depending on the pipeline you selected you may have additional input parameters ### Register a pipeline -To register a pipeline in _GitHub_ you have to create the workflow file (`.yml`) and store it inside the folder `.github/workflows`. Once merged to [main\|master], GitHub will automatically list the new workflow in the 'Actions' tab. +To register a workflow in _GitHub_ you have to create the workflow file (`.yml`) and store it inside the folder `.github/workflows`. Once merged to [main\|master], GitHub will automatically list the new workflow in the 'Actions' tab. ## Azure DevOps pipelines @@ -98,7 +98,7 @@ This sections focuses on _Azure DevOps_ pipelines. ### Trigger a pipeline -To trigger a pipeline in _Azure DevOps_, first navigate to the 'Pipelines' section on the platform (blue rocket) and select the pipeline you want to trigger. +To trigger a pipeline in _Azure DevOps_, first navigate to the 'Pipelines' section (blue rocket) and select the pipeline you want to trigger. Pipeline start step 1 @@ -112,16 +112,32 @@ Now you can trigger the pipeline by selecting the 'Run' button on the bottom rig Depending on the pipeline you selected you may have additional input parameters you can provide aside from the branch. An outline can be found [here](./PipelinesDesign#module-pipeline-inputs). -### Register a pipeline +### Register a YAML pipeline + +To register a pipeline in _Azure DevOps_ you first have to create a workflow file (.yml) and upload it to a repository of your choice (e.g. in _Azure DevOps_ or _GitHub_). + +Then, navigate to the 'Pipelines' section (blue rocket) and select the 'New pipeline' button on the top right. Register new pipeline step 1 +Next, select the repository-type you stored your template in. _Azure DevOps_ will then try to fetch all repositories you have access to. + Register new pipeline step 2 +Now we have to select the particular repository to get the pipeline file from. + Register new pipeline step 3 +Following, choose 'Existing Azure Pipelines YAML file' on the bottom of the list. + Register new pipeline step 4 +The previous action will open a new blade that asks you for the branch you stored the pipeline file in (e.g. `master`) and then asks for the relative path (from root of the repository) of the pipeline file. + Register new pipeline step 5 +Finally, _Azure DevOps_ should show you the pipeline fil you created. The last thing you have to do is to either select 'Run' on the top right (which will save & run the pipeline), or click the little arrow next to it and just save the pipeline. + +Once saved you can also re-name / move the pipeline in the same view. However, this only works once you saved the pipeline at least once. + Register new pipeline step 6 From bcf52e2db4e9c51d17df89a7c4d34a490fbd0f75 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Thu, 2 Dec 2021 00:16:07 +0100 Subject: [PATCH 058/112] Update to latest --- docs/wiki/PipelinesUsage.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/wiki/PipelinesUsage.md b/docs/wiki/PipelinesUsage.md index ddbf1e4197..ac9f8abd91 100644 --- a/docs/wiki/PipelinesUsage.md +++ b/docs/wiki/PipelinesUsage.md @@ -100,15 +100,15 @@ This sections focuses on _Azure DevOps_ pipelines. To trigger a pipeline in _Azure DevOps_, first navigate to the 'Pipelines' section (blue rocket) and select the pipeline you want to trigger. -Pipeline start step 1 +Pipeline start step 1 Once selected, click on the 'Run pipeline' button on the top right. -Pipeline start step 2 +Pipeline start step 2 Now you can trigger the pipeline by selecting the 'Run' button on the bottom right. -Pipeline start step 3 +Pipeline start step 3 Depending on the pipeline you selected you may have additional input parameters you can provide aside from the branch. An outline can be found [here](./PipelinesDesign#module-pipeline-inputs). @@ -118,26 +118,26 @@ To register a pipeline in _Azure DevOps_ you first have to create a workflow fil Then, navigate to the 'Pipelines' section (blue rocket) and select the 'New pipeline' button on the top right. -Register new pipeline step 1 +Register new pipeline step 1 Next, select the repository-type you stored your template in. _Azure DevOps_ will then try to fetch all repositories you have access to. -Register new pipeline step 2 +Register new pipeline step 2 Now we have to select the particular repository to get the pipeline file from. -Register new pipeline step 3 +Register new pipeline step 3 Following, choose 'Existing Azure Pipelines YAML file' on the bottom of the list. -Register new pipeline step 4 +Register new pipeline step 4 The previous action will open a new blade that asks you for the branch you stored the pipeline file in (e.g. `master`) and then asks for the relative path (from root of the repository) of the pipeline file. -Register new pipeline step 5 +Register new pipeline step 5 Finally, _Azure DevOps_ should show you the pipeline fil you created. The last thing you have to do is to either select 'Run' on the top right (which will save & run the pipeline), or click the little arrow next to it and just save the pipeline. Once saved you can also re-name / move the pipeline in the same view. However, this only works once you saved the pipeline at least once. -Register new pipeline step 6 +Register new pipeline step 6 From 0a1732f563c233fe313a4bd00a9c95cda922144f Mon Sep 17 00:00:00 2001 From: MrMCake Date: Thu, 2 Dec 2021 09:06:03 +0100 Subject: [PATCH 059/112] Update to latest --- docs/wiki/PipelinesUsage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/PipelinesUsage.md b/docs/wiki/PipelinesUsage.md index ac9f8abd91..db5d1d1d40 100644 --- a/docs/wiki/PipelinesUsage.md +++ b/docs/wiki/PipelinesUsage.md @@ -136,7 +136,7 @@ The previous action will open a new blade that asks you for the branch you store Register new pipeline step 5 -Finally, _Azure DevOps_ should show you the pipeline fil you created. The last thing you have to do is to either select 'Run' on the top right (which will save & run the pipeline), or click the little arrow next to it and just save the pipeline. +Finally, _Azure DevOps_ should show you the pipeline file you created. The last thing you have to do is to either select 'Run' on the top right (which will save & run the pipeline), or click the little arrow next to it and just save the pipeline. Once saved you can also re-name / move the pipeline in the same view. However, this only works once you saved the pipeline at least once. From c3b142a6bc064c6daa8402122a7299fa2453a591 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Thu, 2 Dec 2021 10:33:23 +0100 Subject: [PATCH 060/112] Update to latest --- .azuredevops/pipelineVariables/global.variables.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.azuredevops/pipelineVariables/global.variables.yml b/.azuredevops/pipelineVariables/global.variables.yml index 7938b33cd2..c93aa8a3a9 100644 --- a/.azuredevops/pipelineVariables/global.variables.yml +++ b/.azuredevops/pipelineVariables/global.variables.yml @@ -25,7 +25,7 @@ variables: defaultResourceGroupName: 'validation-rg' # validation-resourcegroup-name ###################################### - # Components template spec settings + # Publish: Template-Spec settings ###################################### # Set to true, if you would like to publish modules as template specs @@ -35,7 +35,7 @@ variables: templateSpecsDescription: components ###################################### - # Universal Packages + # Publish: Universal packages settings ###################################### # Set to true, if you would like to publish modules as Universal Packages (in ADO Artifacts) @@ -45,7 +45,7 @@ variables: vstsFeedProject: '$(System.TeamProject)' ###################################### - # Nuget Packages + # Publish: Nuget Packages settings ###################################### # Set to true, if you would like to publish modules as Nuget Packages (in ADO Artifacts) @@ -55,7 +55,7 @@ variables: vstNugetFeedUrl: 'https://pkgs.dev.azure.com/$(vstsOrganization)/$(vstsProject)/_packaging/Nuget-Modules/nuget/v2' ###################################### - # Private Bicep Registry + # Publish: Private Bicep Registry settings ###################################### bicepRegistryDoPublish: true From 790cb89d43bf13807b34fae8ec19fc6baefca067 Mon Sep 17 00:00:00 2001 From: Msanzdelrio Date: Tue, 7 Dec 2021 16:58:33 +0100 Subject: [PATCH 061/112] initial version --- .../platform.updateReadMe.yml | 50 ++++++++++++++++ .../platformPipelines/platform.wiki-sync.yml | 59 +++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 .azuredevops/platformPipelines/platform.updateReadMe.yml create mode 100644 .azuredevops/platformPipelines/platform.wiki-sync.yml diff --git a/.azuredevops/platformPipelines/platform.updateReadMe.yml b/.azuredevops/platformPipelines/platform.updateReadMe.yml new file mode 100644 index 0000000000..5bf2470b5c --- /dev/null +++ b/.azuredevops/platformPipelines/platform.updateReadMe.yml @@ -0,0 +1,50 @@ +name: '.Platform: Update ReadMe Module Tables' + +trigger: + batch: true + branches: + include: + - main + paths: + include: + - 'arm/**/deploy.bicep' + - 'arm/**/deploy.json' + +variables: + - template: '/.azuredevops/pipelineVariables/global.variables.yml' + - name: pipelinePrincipalGitUserName + value: 'CARMLPipelinePrincipal' + - name: pipelinePrincipalGitUserEmail + value: 'CARML@noreply.github.com' + +jobs: + - job: Update module tables + pool: + vmImage: 'ubuntu-latest' + steps: + - checkout: self + persistCredentials: true + - task: PowerShell@2 + displayName: 'Update general ReadMe' + inputs: + targetType: inline + pwsh: true + script: | + # Load used functions + Write-Verbose $(System.DefaultWorkingDirectory) + Write-Verbose $(Build.Repository.Name) + # . (Join-Path '$(System.DefaultWorkingDirectory)' 'utilities' 'tools' 'Set-GitHubReadMeModuleTable.ps1') + + # $functionInput = @{ + # ModulesPath = Join-Path '$(System.DefaultWorkingDirectory)' 'arm' + # FilePath = Join-Path '$(System.DefaultWorkingDirectory)' 'README.md' + # Organization = ($(Build.Repository.Name)).split('/')[0] + # RepositoryName = '$(Build.Repository.Name)' + # ColumnsInOrder = @('Name', 'Status') + # SortByColumn = 'Name' + # } + + # Write-Verbose "Invoke task with" -Verbose + # Write-Verbose ($functionInput | ConvertTo-Json | Out-String) -Verbose + + # Set-GitHubReadMeModuleTable @functionInput -Verbose diff --git a/.azuredevops/platformPipelines/platform.wiki-sync.yml b/.azuredevops/platformPipelines/platform.wiki-sync.yml new file mode 100644 index 0000000000..43a0df63c4 --- /dev/null +++ b/.azuredevops/platformPipelines/platform.wiki-sync.yml @@ -0,0 +1,59 @@ +# NOTE: +# This pipeline requires a secret 'PLATFORM_REPO_UPDATE_PAT' set up in the GitHub secrets. +# The secret's value should be a PAT token with the permissions to push to the repository's main branch. + +name: '.Platform: Sync Docs/Wiki' + +on: + push: + branches: + - main + paths: + - 'docs/wiki/**' + +env: + wiki_source_repo: '${{ github.repository }}' + wiki_source_repo_dir: '${{ github.repository }}/docs/wiki' + wiki_target_repo: '${{ github.repository }}.wiki' + github_commit_message: 'Wiki Sync from docs/wiki' + pipelinePrincipalGitUserName: 'CARMLPipelinePrincipal' + pipelinePrincipalGitUserEmail: 'CARML@noreply.microsoft.com' + +jobs: + sync-wiki: + name: Sync docs/wiki to Wiki + runs-on: ubuntu-latest + steps: + - name: Checkout Source Repo + uses: actions/checkout@v2 + with: + repository: ${{ env.wiki_source_repo }} + path: ${{ env.wiki_source_repo }} + token: '${{ secrets.PLATFORM_REPO_UPDATE_PAT }}' # Sets general GIT credentials up + + - name: Checkout Wiki Repo + uses: actions/checkout@v2 + with: + repository: ${{ env.wiki_target_repo }} + path: ${{ env.wiki_target_repo }} + token: '${{ secrets.PLATFORM_REPO_UPDATE_PAT }}' # Sets general GIT credentials up + + - name: Configure Local Git + run: | + git config --global user.name '${{ env.pipelinePrincipalGitUserName }}' + git config --global user.email '${{ env.pipelinePrincipalGitUserEmail }}' + working-directory: ${{ env.GITHUB_WORKSPACE }} + + - name: Sync docs/wiki Into Wiki Repo + shell: pwsh + run: | + rsync -avzr --delete --exclude='.git/' "${{ env.wiki_source_repo_dir }}/" "${{ env.wiki_target_repo }}" + working-directory: ${{ env.GITHUB_WORKSPACE }} + + - name: Stage & Push Files Into Wiki Repo + shell: pwsh + run: | + git add . + git commit -m "$github_commit_message [$GITHUB_ACTOR/${GITHUB_SHA::8}]" + git push + working-directory: ${{ env.wiki_target_repo }} From ff0ba4aa38e75e66671255c0e2dd6492c331b187 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Tue, 7 Dec 2021 18:59:05 +0100 Subject: [PATCH 062/112] Update to latest --- .../pipelineVariables/global.variables.yml | 4 +- .../tools/Register-AzureDevOpsPipelines.ps1 | 213 ++++++++++++++++++ 2 files changed, 215 insertions(+), 2 deletions(-) create mode 100644 utilities/tools/Register-AzureDevOpsPipelines.ps1 diff --git a/.azuredevops/pipelineVariables/global.variables.yml b/.azuredevops/pipelineVariables/global.variables.yml index c93aa8a3a9..8478ac4cec 100644 --- a/.azuredevops/pipelineVariables/global.variables.yml +++ b/.azuredevops/pipelineVariables/global.variables.yml @@ -5,13 +5,13 @@ variables: vmImage: 'ubuntu-latest' # Use this for Microsoft-hosted agents poolName: '' # Use this for self-hosted agents - serviceConnection: 'CARML-Dev' + serviceConnection: 'CARML-CSU-Tenant-Connection' ###################################### # Source ###################################### - vstsOrganization: alsehr + vstsOrganization: servicescode vstsProject: '$(System.TeamProject)' modulesRepository: ResourceModules # The repository hosting the deployment code (i.e. 'Components'). MUST be provided as a variable with every pipeline modulePath: arm/$(moduleName) # only use in module pielines diff --git a/utilities/tools/Register-AzureDevOpsPipelines.ps1 b/utilities/tools/Register-AzureDevOpsPipelines.ps1 new file mode 100644 index 0000000000..9f176e513d --- /dev/null +++ b/utilities/tools/Register-AzureDevOpsPipelines.ps1 @@ -0,0 +1,213 @@ +<# +.SYNOPSIS +Register or update all specified DevOps pipelines in a target DevOps Project + +.DESCRIPTION +Register or update all specified DevOps pipelines in a target DevOps Project +If this scripts is run within an Azure pipeline the environment variable AZURE_DEVOPS_EXT_PAT needs to be set with $(System.AccessToken) within your pipeline. +Since tty is not supported within a pipelune run, az devops login is using the token which is set via AZURE_DEVOPS_EXT_PAT. + +.REQUIREMENTS +- Azure CLI 2.13.0 +- Azure CLI extension devops 0.18.0 +- Repository for which the pipeline needs to be configured. +- The '' Build Service needs 'Edit build pipeline' permissions +Reference: https://docs.microsoft.com/en-us/azure/devops/pipelines/policies/permissions?view=azure-devops#pipeline-permissions + +.PARAMETER OrganizationName +Required. The name of the Azure DevOps organization. + +.PARAMETER ProjectName +Required. The name of the Azure DevOps project. + +.PARAMETER SourceRepository +Optional. The name of the source repository. +Defaults to 'Azure/ResourceModules' + +.PARAMETER SourceRepositoryType +Optional. The type of source repository. Either 'GitHub' or 'tfsgit' (for Azure DevOps). +Defaults to 'GitHub'. + +.PARAMETER GitHubPAT +Optional. A PAT token for the GitHub soure repository that contains the pipeline files. Only required if files are hosted in GitHub. +Needs at least the permissions: +- admin:repo_hook +- repo +- user + +.PARAMETER AzureDevOpsPAT +Required. The access token whith appropirate permissions to create Azure Pipelines. +Usually the System.AccessToken from an Azure Pipeline instance run has sufficent permissions as well. +Reference: https://docs.microsoft.com/en-us/azure/devops/pipelines/process/access-tokens?view=azure-devops&tabs=yaml#how-do-i-determine-the-job-authorization-scope-of-my-yaml-pipeline +Needs at least the permissions: +- Release: Read, write, execute & manage + +.PARAMETER BranchName +Optional. Branch name for which the pipelines will be configured. +Default to 'main'. + +.PARAMETER PipelineTargetPath +Optional. Folder path in which the pipelines are created. +Defaults to 'Modules' + +.PARAMETER RelativePipelinePath +Optional. The relative local path to the folder with the pipeline YAML files. Make sure your workspace is opened in the repository root. +Defaults to '.azuredevops/modulePipelines'. + +.PARAMETER CreateBuildValidation +Optional. Create an additional pull request build validation rule for the pipelines. + +.EXAMPLE +$inputObject = @{ + OrganizationName = 'Contoso' + ProjectName = 'CICD' + SourceRepository = 'Azure/ResourceModules' + GitHubPAT = '' + AzureDevOpsPAT = '' +} +Register-AzureDevOpsPipelines @inputObject + +Registers all pipelines in the default path in the DevOps project [Contoso/CICD] by leveraging the given AzureDevOpsPAT and creating a service connection to GitHub using the provided GitHubPAT + +.NOTES +You'll need the 'azure-devops' extension to run this function: `az extension add --upgrade -n azure-devops` +#> +function Register-AzureDevOpsPipelines { + + [CmdletBinding(SupportsShouldProcess)] + param ( + [Parameter(Mandatory = $true)] + [string] $OrganizationName, + + [Parameter(Mandatory = $true)] + [string] $ProjectName, + + [Parameter(Mandatory = $true)] + [string] $AzureDevOpsPAT, + + [Parameter(Mandatory = $false)] + [string] $SourceRepository = 'Azure/ResourceModules', + + [Parameter(Mandatory = $false)] + [ValidateSet('GitHub', 'tfsgit')] + [string] $SourceRepositoryType = 'GitHub', + + [Parameter(Mandatory = $false)] + [string] $GitHubPAT, + + [Parameter(Mandatory = $false)] + [string] $BranchName = 'main', + + [Parameter(Mandatory = $false)] + [string] $PipelineTargetPath = 'Modules', + + [Parameter(Mandatory = $false)] + [string] $RelativePipelinePath = '.azuredevops/modulePipelines', + + [Parameter(Mandatory = $false)] + [bool] $CreateBuildValidation = $false + ) + + Write-Verbose '##############' + Write-Verbose '# Local Data #' + Write-Verbose '##############' + Write-Verbose 'Identify relevant Azure Pipelines to be updated' + $RelativePipelinePath = Join-Path (Get-Location).Path $RelativePipelinePath + $localPipelinePaths = (Get-ChildItem -Path $RelativePipelinePath -Recurse -Filter '*.yml').FullName + Write-Verbose ('Found [{0}] local Pipeline(s) in folder path [{1}]' -f $localPipelinePaths.Count, $RelativePipelinePath) + + $pipelinesArray = @() + foreach ($localPipelinePath in $localPipelinePaths) { + $pipelineName = (Get-Content -Path $localPipelinePath)[0].Split('name:')[1].Replace("'", '').Trim() + $pipelinesArray += @{ + ProjectName = $ProjectName + SourceRepository = $SourceRepository + BranchName = $BranchName + FolderPath = $PipelineTargetPath + ymlPath = Join-Path $relativePipelinePath (Split-Path $localPipelinePath -Leaf) + pipelineName = $pipelineName + } + } + + Write-Verbose '###############' + Write-Verbose '# Remote Data #' + Write-Verbose '###############' + Write-Verbose "Trying to login to Azure DevOps project $OrganizationName/$ProjectName with a PAT" + $orgUrl = "https://dev.azure.com/$OrganizationName/" + $AzureDevOpsPAT | az devops login + + Write-Verbose "Set default Azure DevOps configuration to $OrganizationName and $ProjectName" + az devops configure --defaults organization=$orgUrl project=$ProjectName --use-git-aliases $true + + Write-Verbose "Get and list all Azure Pipelines in $PipelineTargetPath" + $azurePipelines = az pipelines list --organization $orgUrl --project $ProjectName --folder-path $PipelineTargetPath | ConvertFrom-Json | Sort-Object name + Write-Verbose ('Found [{0}] Azure Pipeline(s) in project [{1}]' -f $azurePipelines.Count, $ProjectName) + + Write-Verbose '############' + Write-Verbose '# Evaluate #' + Write-Verbose '############' + [array] $pipelinesToBeSkipped = $pipelinesArray | Where-Object { $_.pipelineName -in $azurePipelines.name } + Write-Verbose ('[{0}] Pipeline(s) will be skipped' -f $pipelinesToBeSkipped.Count) + + [array] $pipelinesToBeUpdated = $pipelinesArray | Where-Object { $_.pipelineName -notin $azurePipelines.name } + Write-Verbose ('[{0}] Pipeline(s) have been identified to be updated' -f $pipelinesToBeUpdated.Count) + + Write-Verbose '##############' + Write-Verbose '# Processing #' + Write-Verbose '##############' + if ($SourceRepositoryType -eq 'GitHub') { + $env:AZURE_DEVOPS_EXT_GITHUB_PAT = $GitHubPAT + $azureDevOpsToGitHubConnection = az devops service-endpoint list -o 'Json' | ConvertFrom-Json | Where-Object { $_.Name -eq $SourceRepository } + if (-not $azureDevOpsToGitHubConnection) { + Write-Verbose "Create service connection [$SourceRepository]" + if ($PSCmdlet.ShouldProcess("GitHub service connection [$SourceRepository]", 'Create')) { + $azureDevOpsToGitHubConnection = az devops service-endpoint github create --github-url $organization --name $SourceRepository -o 'Json' | ConvertFrom-Json + } + } else { + Write-Verbose "Service connection [$SourceRepository] already exists" + } + } + + Write-Verbose '----------------------------------' + foreach ($pipeline in $pipelinesToBeUpdated) { + Write-Verbose ('Create Azure pipeline [{0}]' -f $pipeline.pipelineName) + + $inputObject = @( + '--repository', $pipeline.SourceRepository, + '--repository-type', $SourceRepositoryType, + '--branch', $pipeline.BranchName, + '--folder-path', $pipeline.FolderPath, + '--name', $pipeline.pipelineName, + '--yml-path', $pipeline.ymlPath.Replace('\', '/'), + '--skip-run' + ) + if ($SourceRepositoryType -eq 'GitHub') { + $inputObject += @('--service-connection', $azureDevOpsToGitHubConnection.id) + } + + if ($PSCmdlet.ShouldProcess(('Azure DevOps pipeline [{0}]' -f $pipeline.pipelineName), 'Create')) { + $pipelineresult = az pipelines create @inputObject + $pipelineobject = $pipelineresult | ConvertFrom-Json + } + + if ($createBuildValidation) { + $AzureDevOpsPAThFilter = $pipeline.ymlpath -replace 'pipeline.yml', '*' + Write-Verbose ('Configuring build validation rule for pipeline [{0}]' -f $pipeline.pipelineName) + $inputObject = @( + '--blocking', $true, + '--branch', $BranchName, + '--build-definition-id', $pipelineobject.id, + '--display-name', 'Check {0}' -f $pipeline.pipelineName, + '--manual-queue-only', $true, + '--queue-on-source-update-only', $true, + '--valid-duration', 1440, + '--path-filter', $AzureDevOpsPAThFilter, + '--repository-id', $pipelineobject.repository.id, + '--enabled', $true + ) + if ($PSCmdlet.ShouldProcess(('Mandatory repository build policy [Check {0}] for pipeline [{0}]' -f $pipeline.pipelineName), 'Create')) { + az repos policy build create @inputObject + } + } + } +} From 52ee0cc8ba53feab6d000aea847b19a6b14a9b44 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Wed, 8 Dec 2021 12:25:31 +0100 Subject: [PATCH 063/112] Update to latest --- .../tools/Register-AzureDevOpsPipelines.ps1 | 30 +++++++------------ 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/utilities/tools/Register-AzureDevOpsPipelines.ps1 b/utilities/tools/Register-AzureDevOpsPipelines.ps1 index 9f176e513d..d0077bf608 100644 --- a/utilities/tools/Register-AzureDevOpsPipelines.ps1 +++ b/utilities/tools/Register-AzureDevOpsPipelines.ps1 @@ -28,12 +28,9 @@ Defaults to 'Azure/ResourceModules' Optional. The type of source repository. Either 'GitHub' or 'tfsgit' (for Azure DevOps). Defaults to 'GitHub'. -.PARAMETER GitHubPAT -Optional. A PAT token for the GitHub soure repository that contains the pipeline files. Only required if files are hosted in GitHub. -Needs at least the permissions: -- admin:repo_hook -- repo -- user +.PARAMETER GitHubServiceConnectionName +Optional. The pre-created service connection to the GitHub source repository if the pipeline files are in GitHub. +It is recommended to create the service connection using oAuth. .PARAMETER AzureDevOpsPAT Required. The access token whith appropirate permissions to create Azure Pipelines. @@ -89,12 +86,15 @@ function Register-AzureDevOpsPipelines { [string] $SourceRepository = 'Azure/ResourceModules', [Parameter(Mandatory = $false)] - [ValidateSet('GitHub', 'tfsgit')] - [string] $SourceRepositoryType = 'GitHub', + [ValidateSet('gitHub', 'tfsgit')] + [string] $SourceRepositoryType = 'gitHub', [Parameter(Mandatory = $false)] [string] $GitHubPAT, + [Parameter(Mandatory = $false)] + [string] $GitHubServiceConnectionName = $SourceRepository, + [Parameter(Mandatory = $false)] [string] $BranchName = 'main', @@ -112,7 +112,8 @@ function Register-AzureDevOpsPipelines { Write-Verbose '# Local Data #' Write-Verbose '##############' Write-Verbose 'Identify relevant Azure Pipelines to be updated' - $RelativePipelinePath = Join-Path (Get-Location).Path $RelativePipelinePath + # $RelativePipelinePath = Join-Path (Get-Location).Path $RelativePipelinePath + $RelativePipelinePath = $RelativePipelinePath $localPipelinePaths = (Get-ChildItem -Path $RelativePipelinePath -Recurse -Filter '*.yml').FullName Write-Verbose ('Found [{0}] local Pipeline(s) in folder path [{1}]' -f $localPipelinePaths.Count, $RelativePipelinePath) @@ -156,16 +157,7 @@ function Register-AzureDevOpsPipelines { Write-Verbose '# Processing #' Write-Verbose '##############' if ($SourceRepositoryType -eq 'GitHub') { - $env:AZURE_DEVOPS_EXT_GITHUB_PAT = $GitHubPAT - $azureDevOpsToGitHubConnection = az devops service-endpoint list -o 'Json' | ConvertFrom-Json | Where-Object { $_.Name -eq $SourceRepository } - if (-not $azureDevOpsToGitHubConnection) { - Write-Verbose "Create service connection [$SourceRepository]" - if ($PSCmdlet.ShouldProcess("GitHub service connection [$SourceRepository]", 'Create')) { - $azureDevOpsToGitHubConnection = az devops service-endpoint github create --github-url $organization --name $SourceRepository -o 'Json' | ConvertFrom-Json - } - } else { - Write-Verbose "Service connection [$SourceRepository] already exists" - } + $azureDevOpsToGitHubConnection = az devops service-endpoint list -o 'Json' | ConvertFrom-Json | Where-Object { $_.Name -eq $GitHubServiceConnectionName } } Write-Verbose '----------------------------------' From 5eac6df05bf56f5ac05586f06fc76915b8c7cd26 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Wed, 8 Dec 2021 13:03:24 +0100 Subject: [PATCH 064/112] Update to latest --- .azuredevops/pipelineTemplates/module.jobs.validate.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.azuredevops/pipelineTemplates/module.jobs.validate.yml b/.azuredevops/pipelineTemplates/module.jobs.validate.yml index 026fb1b118..5bcbb745ca 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.validate.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.validate.yml @@ -150,7 +150,8 @@ jobs: Verbosity = 'Detailed' } } - errorActionPreference: continue + errorActionPreference: stop + continueOnError: true - task: PublishTestResults@2 displayName: Publish Test Results From 86f6c28a7cf7c3f8ed4b4c274250c0e2f43a8a29 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Wed, 8 Dec 2021 13:21:19 +0100 Subject: [PATCH 065/112] Update to latest --- .azuredevops/pipelineTemplates/module.jobs.validate.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.azuredevops/pipelineTemplates/module.jobs.validate.yml b/.azuredevops/pipelineTemplates/module.jobs.validate.yml index 5bcbb745ca..bd5ccccede 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.validate.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.validate.yml @@ -149,9 +149,8 @@ jobs: Output = @{ Verbosity = 'Detailed' } - } - errorActionPreference: stop - continueOnError: true + } -ErrorAction 'Stop' + errorActionPreference: continue - task: PublishTestResults@2 displayName: Publish Test Results @@ -246,7 +245,7 @@ jobs: Output = @{ Verbosity = 'Detailed' } - } + } -ErrorAction 'Stop' errorActionPreference: continue - task: PublishTestResults@2 From 20d4122c8c69d1b7217ca20a018279eb36e433e4 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Wed, 8 Dec 2021 14:25:24 +0100 Subject: [PATCH 066/112] Update to latest --- utilities/tools/Register-AzureDevOpsPipelines.ps1 | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/utilities/tools/Register-AzureDevOpsPipelines.ps1 b/utilities/tools/Register-AzureDevOpsPipelines.ps1 index d0077bf608..f600459b0c 100644 --- a/utilities/tools/Register-AzureDevOpsPipelines.ps1 +++ b/utilities/tools/Register-AzureDevOpsPipelines.ps1 @@ -68,6 +68,15 @@ Registers all pipelines in the default path in the DevOps project [Contoso/CICD] .NOTES You'll need the 'azure-devops' extension to run this function: `az extension add --upgrade -n azure-devops` + +The steps you'd want to follow are +- (if pipelines are in GitHub) Create a service connection to the target GitHub repository using e.g. oAuth +- Create a PAT token for the Azure DevOps environment in which you want to register the pipelines in +- Run this script with the corresponding input parameters +- Create any required element required to execute the pipelines. For example: + - Library group(s) used in the pipeline(s) + - Service connection(s) used in the pipeline(s) + - Agent pool(s) used in the pipeline(s) if not using the default available agents #> function Register-AzureDevOpsPipelines { From af798ba50f3a4fedfec2decf9681df0717989344 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Wed, 8 Dec 2021 14:27:18 +0100 Subject: [PATCH 067/112] Update to latest --- utilities/tools/Register-AzureDevOpsPipelines.ps1 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/utilities/tools/Register-AzureDevOpsPipelines.ps1 b/utilities/tools/Register-AzureDevOpsPipelines.ps1 index f600459b0c..fe3109be5c 100644 --- a/utilities/tools/Register-AzureDevOpsPipelines.ps1 +++ b/utilities/tools/Register-AzureDevOpsPipelines.ps1 @@ -14,6 +14,8 @@ Since tty is not supported within a pipelune run, az devops login is using the t - The '' Build Service needs 'Edit build pipeline' permissions Reference: https://docs.microsoft.com/en-us/azure/devops/pipelines/policies/permissions?view=azure-devops#pipeline-permissions +The script can be run as often as you want without breaking anything. Pipelines that already exist will be skipped. + .PARAMETER OrganizationName Required. The name of the Azure DevOps organization. From 74ef09046bb9814922c5442c8b18e50231cb9f88 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Wed, 8 Dec 2021 16:13:23 +0100 Subject: [PATCH 068/112] Update to latest --- .../ms.authorization.policyassignments.yml | 8 ++++++-- .../pipelineTemplates/module.jobs.deploy.yml | 18 +++++++++++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml b/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml index 0e8e577db3..7d949ef3cb 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml @@ -42,18 +42,22 @@ stages: jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml parameters: - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json + templateFilePath: $(modulePath)/.bicep/nested_policyAssignments_sub.bicep - path: $(modulePath)/.parameters/parameters.json + templateFilePath: $(modulePath)/.bicep/nested_policyAssignments_sub.bicep - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json + templateFilePath: $(modulePath)/.bicep/nested_policyAssignments_sub.bicep - path: $(modulePath)/.parameters/parameters.json + templateFilePath: $(modulePath)/.bicep/nested_policyAssignments_sub.bicep - stage: Publishing condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) diff --git a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml index 167b5002f7..cbd18c98f5 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml @@ -183,11 +183,15 @@ jobs: # Load used functions . (Join-Path '$(moduleRepoRoot)' '$(pipelineFunctionsPath)' 'resourceValidation' 'Test-TemplateWithParameterFile.ps1') + $templateFilePath = ([String]::IsNullOrEmpty('${{ deploymentBlock.templateFilePath }}')) ? + (Join-Path '$(ModuleRepoRoot)' '$(modulePath)' 'deploy.bicep') : + (Join-Path '$(moduleRepoRoot)' '${{ deploymentBlock.templateFilePath }}') + # ----------- # # INVOKE TEST # # ----------- # $functionInput = @{ - templateFilePath = Join-Path '$(ModuleRepoRoot)' '$(modulePath)' 'deploy.bicep' + templateFilePath = $templateFilePath parameterFilePath = Join-Path '$(ParametersRepoRoot)' '${{ deploymentBlock.path }}' location = '${{ parameters.location }}' resourceGroupName = '${{ parameters.resourceGroupName }}' @@ -214,11 +218,15 @@ jobs: # Load used functions . (Join-Path '$(moduleRepoRoot)' '$(pipelineFunctionsPath)' 'resourceDeployment' 'New-ModuleDeployment.ps1') + $templateFilePath = ([String]::IsNullOrEmpty('${{ deploymentBlock.templateFilePath }}')) ? + (Join-Path '$(ModuleRepoRoot)' '$(modulePath)' 'deploy.bicep') : + (Join-Path '$(moduleRepoRoot)' '${{ deploymentBlock.templateFilePath }}') + # ----------------- # # INVOKE DEPLOYMENT # # ----------------- # $functionInput = @{ - templateFilePath = Join-Path '$(ModuleRepoRoot)' '$(modulePath)' 'deploy.bicep' + templateFilePath = $templateFilePath parameterFilePath = Join-Path '$(parametersRepoRoot)' '${{ deploymentBlock.path }}' location = '${{ parameters.location }}' resourceGroupName = '${{ parameters.resourceGroupName }}' @@ -264,9 +272,13 @@ jobs: # Load used function . (Join-Path '$(moduleRepoRoot)' '$(pipelineFunctionsPath)' 'resourceRemoval' 'Remove-DeployedModule.ps1') + $templateFilePath = ([String]::IsNullOrEmpty('${{ deploymentBlock.templateFilePath }}')) ? + (Join-Path '$(ModuleRepoRoot)' '$(modulePath)' 'deploy.bicep') : + (Join-Path '$(moduleRepoRoot)' '${{ deploymentBlock.templateFilePath }}') + $functionInput = @{ deploymentName = '$(deploymentName)' - templateFilePath = Join-Path '$(ModuleRepoRoot)' '$(modulePath)' 'deploy.bicep' + templateFilePath = $templateFilePath resourceGroupName = '${{ parameters.resourceGroupName }}' verbose = $true } From f57be17a6a7b9e569339070bc96bf1efa2bcb0c4 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Wed, 8 Dec 2021 16:29:33 +0100 Subject: [PATCH 069/112] Update to latest --- .../ms.authorization.policydefinitions.yml | 8 ++++++-- .../modulePipelines/ms.authorization.policyexemptions.yml | 8 ++++++-- .../ms.authorization.policysetdefinitions.yml | 8 ++++++-- .../modulePipelines/ms.authorization.roleassignments.yml | 8 ++++++-- .../modulePipelines/ms.authorization.roledefinitions.yml | 8 ++++++-- 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml b/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml index 4139c37065..6f505f182a 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml @@ -42,18 +42,22 @@ stages: jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml parameters: - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json + templateFilePath: $(modulePath)/.bicep/nested_policyDefinitions_sub.bicep - path: $(modulePath)/.parameters/parameters.json + templateFilePath: $(modulePath)/.bicep/nested_policyDefinitions_sub.bicep - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json + templateFilePath: $(modulePath)/.bicep/nested_policyDefinitions_sub.bicep - path: $(modulePath)/.parameters/parameters.json + templateFilePath: $(modulePath)/.bicep/nested_policyDefinitions_sub.bicep - stage: Publishing condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) diff --git a/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml b/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml index 2acfbd7ee4..c147a75763 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml @@ -42,18 +42,22 @@ stages: jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml parameters: - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json + templateFilePath: $(modulePath)/.bicep/nested_policyExemptions_sub.bicep - path: $(modulePath)/.parameters/parameters.json + templateFilePath: $(modulePath)/.bicep/nested_policyExemptions_sub.bicep - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json + templateFilePath: $(modulePath)/.bicep/nested_policyExemptions_sub.bicep - path: $(modulePath)/.parameters/parameters.json + templateFilePath: $(modulePath)/.bicep/nested_policyExemptions_sub.bicep - stage: Publishing condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) diff --git a/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml b/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml index d469e9aa6a..303f58a02f 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml @@ -42,18 +42,22 @@ stages: jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml parameters: - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json + templateFilePath: $(modulePath)/.bicep/nested_policySetDefinition_sub.bicep - path: $(modulePath)/.parameters/parameters.json + templateFilePath: $(modulePath)/.bicep/nested_policySetDefinition_sub.bicep - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json + templateFilePath: $(modulePath)/.bicep/nested_policySetDefinition_sub.bicep - path: $(modulePath)/.parameters/parameters.json + templateFilePath: $(modulePath)/.bicep/nested_policySetDefinition_sub.bicep - stage: Publishing condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) diff --git a/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml b/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml index 9bf11d0753..5b4a37dc95 100644 --- a/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml +++ b/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml @@ -42,18 +42,22 @@ stages: jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml parameters: - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json + templateFilePath: $(modulePath)/.bicep/nested_rbac_sub.bicep - path: $(modulePath)/.parameters/parameters.json + templateFilePath: $(modulePath)/.bicep/nested_rbac_sub.bicep - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json + templateFilePath: $(modulePath)/.bicep/nested_rbac_sub.bicep - path: $(modulePath)/.parameters/parameters.json + templateFilePath: $(modulePath)/.bicep/nested_rbac_sub.bicep - stage: Publishing condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) diff --git a/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml b/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml index d2e78a0da3..9c9d46649f 100644 --- a/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml @@ -42,18 +42,22 @@ stages: jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml parameters: - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json + templateFilePath: $(modulePath)/.bicep/nested_roleDefinitions_sub.bicep - path: $(modulePath)/.parameters/parameters.json + templateFilePath: $(modulePath)/.bicep/nested_roleDefinitions_sub.bicep - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json + templateFilePath: $(modulePath)/.bicep/nested_roleDefinitions_sub.bicep - path: $(modulePath)/.parameters/parameters.json + templateFilePath: $(modulePath)/.bicep/nested_roleDefinitions_sub.bicep - stage: Publishing condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) From 682231d91b8c5a9ca2e0229dcb1fabc2d32801a0 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Wed, 8 Dec 2021 22:23:15 +0100 Subject: [PATCH 070/112] Update to latest --- .azuredevops/modulePipelines/ms.sql.managedinstances.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.azuredevops/modulePipelines/ms.sql.managedinstances.yml b/.azuredevops/modulePipelines/ms.sql.managedinstances.yml index 731bcefb2a..032343522d 100644 --- a/.azuredevops/modulePipelines/ms.sql.managedinstances.yml +++ b/.azuredevops/modulePipelines/ms.sql.managedinstances.yml @@ -42,16 +42,18 @@ stages: jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml parameters: - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json + defaultJobTimeoutInMinutes: 360 - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json + defaultJobTimeoutInMinutes: 360 - stage: Publishing condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) From 5d15f9818fccdd58f55206187bdc576242b6f17a Mon Sep 17 00:00:00 2001 From: MrMCake Date: Thu, 9 Dec 2021 08:53:10 +0100 Subject: [PATCH 071/112] Update to latest --- .../modulePipelines/ms.analysisservices.servers.yml | 6 +----- .azuredevops/modulePipelines/ms.apimanagement.service.yml | 6 +----- .../ms.authorization.policyassignments.yml | 7 ------- .../ms.authorization.policydefinitions.yml | 6 ------ .../modulePipelines/ms.authorization.policyexemptions.yml | 6 ------ .../ms.authorization.policysetdefinitions.yml | 6 ------ .../modulePipelines/ms.authorization.roleassignments.yml | 6 ------ .../modulePipelines/ms.authorization.roledefinitions.yml | 6 ------ .azuredevops/modulePipelines/ms.automanage.accounts.yml | 5 +---- .../modulePipelines/ms.automation.automationaccounts.yml | 6 +----- .azuredevops/modulePipelines/ms.batch.batchaccounts.yml | 5 +---- .../modulePipelines/ms.cognitiveservices.accounts.yml | 5 +---- .../modulePipelines/ms.compute.availabilitysets.yml | 5 +---- .../modulePipelines/ms.compute.diskencryptionsets.yml | 5 +---- .azuredevops/modulePipelines/ms.compute.images.yml | 5 +---- .../ms.compute.proximityplacementgroups.yml | 5 +---- .../modulePipelines/ms.compute.virtualmachines.yml | 8 +------- .../ms.compute.virtualmachinescalesets.yml | 8 +------- .azuredevops/modulePipelines/ms.consumption.budgets.yml | 5 +---- .../ms.containerinstance.containergroups.yml | 5 +---- .../modulePipelines/ms.containerregistry.registries.yml | 5 +---- .../ms.containerservice.managedclusters.yml | 6 +----- .azuredevops/modulePipelines/ms.databricks.workspaces.yml | 5 +---- .azuredevops/modulePipelines/ms.datafactory.factories.yml | 5 +---- .../ms.desktopvirtualization.applicationgroups.yml | 6 +----- .../ms.desktopvirtualization.hostpools.yml | 5 +---- .../ms.desktopvirtualization.workspaces.yml | 5 +---- .../modulePipelines/ms.documentdb.databaseaccounts.yml | 7 +------ .azuredevops/modulePipelines/ms.eventgrid.topics.yml | 5 +---- .azuredevops/modulePipelines/ms.eventhub.namespaces.yml | 6 +----- .azuredevops/modulePipelines/ms.healthbot.healthbots.yml | 5 +---- .azuredevops/modulePipelines/ms.insights.actiongroups.yml | 5 +---- .../modulePipelines/ms.insights.activitylogalerts.yml | 5 +---- .azuredevops/modulePipelines/ms.insights.components.yml | 5 +---- .../modulePipelines/ms.insights.diagnosticsettings.yml | 5 +---- .azuredevops/modulePipelines/ms.insights.metricalerts.yml | 5 +---- .../modulePipelines/ms.insights.privatelinkscopes.yml | 5 +---- .../modulePipelines/ms.insights.scheduledqueryrules.yml | 5 +---- .azuredevops/modulePipelines/ms.keyvault.vaults.yml | 6 +----- .azuredevops/modulePipelines/ms.logic.workflows.yml | 5 +---- .../ms.machinelearningservices.workspaces.yml | 5 +---- .../ms.managedidentity.userassignedidentities.yml | 5 +---- .../ms.managedservices.registrationdefinitions.yml | 6 +----- .../modulePipelines/ms.management.managementgroups.yml | 5 +---- .azuredevops/modulePipelines/ms.netapp.netappaccounts.yml | 7 +------ .../modulePipelines/ms.network.applicationgateways.yml | 5 +---- .../ms.network.applicationsecuritygroups.yml | 5 +---- .../modulePipelines/ms.network.azurefirewalls.yml | 5 +---- .azuredevops/modulePipelines/ms.network.bastionhosts.yml | 6 +----- .azuredevops/modulePipelines/ms.network.connections.yml | 5 +---- .../modulePipelines/ms.network.ddosprotectionplans.yml | 5 +---- .../modulePipelines/ms.network.expressroutecircuits.yml | 5 +---- .azuredevops/modulePipelines/ms.network.ipgroups.yml | 5 +---- .azuredevops/modulePipelines/ms.network.loadbalancers.yml | 5 +---- .../modulePipelines/ms.network.localnetworkgateways.yml | 5 +---- .azuredevops/modulePipelines/ms.network.natgateways.yml | 5 +---- .../modulePipelines/ms.network.networksecuritygroups.yml | 5 +---- .../modulePipelines/ms.network.networkwatchers.yml | 6 +----- .../modulePipelines/ms.network.privatednszones.yml | 5 +---- .../modulePipelines/ms.network.privateendpoints.yml | 6 +----- .../modulePipelines/ms.network.publicipaddresses.yml | 5 +---- .../modulePipelines/ms.network.publicipprefixes.yml | 5 +---- .azuredevops/modulePipelines/ms.network.routetables.yml | 5 +---- .../modulePipelines/ms.network.trafficmanagerprofiles.yml | 5 +---- .../modulePipelines/ms.network.virtualnetworkgateways.yml | 6 +----- .../modulePipelines/ms.network.virtualnetworks.yml | 6 +----- .azuredevops/modulePipelines/ms.network.virtualwans.yml | 5 +---- .../modulePipelines/ms.operationalinsights.workspaces.yml | 6 +----- .../modulePipelines/ms.recoveryservices.vaults.yml | 5 +---- .../modulePipelines/ms.resources.deploymentscripts.yml | 5 +---- .../modulePipelines/ms.resources.resourcegroups.yml | 5 +---- .../modulePipelines/ms.security.azuresecuritycenter.yml | 5 +---- .azuredevops/modulePipelines/ms.servicebus.namespaces.yml | 6 +----- .azuredevops/modulePipelines/ms.sql.managedinstances.yml | 4 ---- .azuredevops/modulePipelines/ms.sql.servers.yml | 5 +---- .../modulePipelines/ms.storage.storageaccounts.yml | 7 +------ .../ms.virtualmachineimages.imagetemplates.yml | 5 +---- .azuredevops/modulePipelines/ms.web.connections.yml | 5 +---- .../modulePipelines/ms.web.hostingenvironments.yml | 5 +---- .azuredevops/modulePipelines/ms.web.serverfarms.yml | 5 +---- .azuredevops/modulePipelines/ms.web.sites.yml | 8 +------- .azuredevops/pipelineTemplates/module.jobs.validate.yml | 2 -- .../tools/AzureDevOps/src/devOpsPipelineTemplate.yml | 2 -- 83 files changed, 74 insertions(+), 371 deletions(-) diff --git a/.azuredevops/modulePipelines/ms.analysisservices.servers.yml b/.azuredevops/modulePipelines/ms.analysisservices.servers.yml index a92de5077a..cdf8f96fb9 100644 --- a/.azuredevops/modulePipelines/ms.analysisservices.servers.yml +++ b/.azuredevops/modulePipelines/ms.analysisservices.servers.yml @@ -41,17 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/min.parameters.json - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json diff --git a/.azuredevops/modulePipelines/ms.apimanagement.service.yml b/.azuredevops/modulePipelines/ms.apimanagement.service.yml index eb2feb0aa9..c29b06854e 100644 --- a/.azuredevops/modulePipelines/ms.apimanagement.service.yml +++ b/.azuredevops/modulePipelines/ms.apimanagement.service.yml @@ -41,17 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/max.parameters.json - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/max.parameters.json - path: $(modulePath)/.parameters/parameters.json diff --git a/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml b/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml index 7d949ef3cb..2778b5f97d 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml @@ -41,13 +41,6 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/min.parameters.json - templateFilePath: $(modulePath)/.bicep/nested_policyAssignments_sub.bicep - - path: $(modulePath)/.parameters/parameters.json - templateFilePath: $(modulePath)/.bicep/nested_policyAssignments_sub.bicep - - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml diff --git a/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml b/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml index 6f505f182a..57cb4d5c4f 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml @@ -41,12 +41,6 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/min.parameters.json - templateFilePath: $(modulePath)/.bicep/nested_policyDefinitions_sub.bicep - - path: $(modulePath)/.parameters/parameters.json - templateFilePath: $(modulePath)/.bicep/nested_policyDefinitions_sub.bicep - stage: Deployment jobs: diff --git a/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml b/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml index c147a75763..89447cfde0 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml @@ -41,12 +41,6 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/min.parameters.json - templateFilePath: $(modulePath)/.bicep/nested_policyExemptions_sub.bicep - - path: $(modulePath)/.parameters/parameters.json - templateFilePath: $(modulePath)/.bicep/nested_policyExemptions_sub.bicep - stage: Deployment jobs: diff --git a/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml b/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml index 303f58a02f..2155f81a6a 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml @@ -41,12 +41,6 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/min.parameters.json - templateFilePath: $(modulePath)/.bicep/nested_policySetDefinition_sub.bicep - - path: $(modulePath)/.parameters/parameters.json - templateFilePath: $(modulePath)/.bicep/nested_policySetDefinition_sub.bicep - stage: Deployment jobs: diff --git a/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml b/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml index 5b4a37dc95..c094cb5992 100644 --- a/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml +++ b/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml @@ -41,12 +41,6 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/min.parameters.json - templateFilePath: $(modulePath)/.bicep/nested_rbac_sub.bicep - - path: $(modulePath)/.parameters/parameters.json - templateFilePath: $(modulePath)/.bicep/nested_rbac_sub.bicep - stage: Deployment jobs: diff --git a/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml b/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml index 9c9d46649f..6c39a12abe 100644 --- a/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml @@ -41,12 +41,6 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/min.parameters.json - templateFilePath: $(modulePath)/.bicep/nested_roleDefinitions_sub.bicep - - path: $(modulePath)/.parameters/parameters.json - templateFilePath: $(modulePath)/.bicep/nested_roleDefinitions_sub.bicep - stage: Deployment jobs: diff --git a/.azuredevops/modulePipelines/ms.automanage.accounts.yml b/.azuredevops/modulePipelines/ms.automanage.accounts.yml index d6ffa9ade1..a74903f597 100644 --- a/.azuredevops/modulePipelines/ms.automanage.accounts.yml +++ b/.azuredevops/modulePipelines/ms.automanage.accounts.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.automation.automationaccounts.yml b/.azuredevops/modulePipelines/ms.automation.automationaccounts.yml index 382adb8a2b..6f82d8c518 100644 --- a/.azuredevops/modulePipelines/ms.automation.automationaccounts.yml +++ b/.azuredevops/modulePipelines/ms.automation.automationaccounts.yml @@ -41,17 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/min.parameters.json - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json diff --git a/.azuredevops/modulePipelines/ms.batch.batchaccounts.yml b/.azuredevops/modulePipelines/ms.batch.batchaccounts.yml index 6beb6964cd..91b4af829d 100644 --- a/.azuredevops/modulePipelines/ms.batch.batchaccounts.yml +++ b/.azuredevops/modulePipelines/ms.batch.batchaccounts.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.cognitiveservices.accounts.yml b/.azuredevops/modulePipelines/ms.cognitiveservices.accounts.yml index 390858dfea..1aa0bb83bf 100644 --- a/.azuredevops/modulePipelines/ms.cognitiveservices.accounts.yml +++ b/.azuredevops/modulePipelines/ms.cognitiveservices.accounts.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.compute.availabilitysets.yml b/.azuredevops/modulePipelines/ms.compute.availabilitysets.yml index 4f4f95a063..49008f8de6 100644 --- a/.azuredevops/modulePipelines/ms.compute.availabilitysets.yml +++ b/.azuredevops/modulePipelines/ms.compute.availabilitysets.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.compute.diskencryptionsets.yml b/.azuredevops/modulePipelines/ms.compute.diskencryptionsets.yml index 1ffca061a6..5bc6babdef 100644 --- a/.azuredevops/modulePipelines/ms.compute.diskencryptionsets.yml +++ b/.azuredevops/modulePipelines/ms.compute.diskencryptionsets.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.compute.images.yml b/.azuredevops/modulePipelines/ms.compute.images.yml index ec168efcb7..1d50dfa421 100644 --- a/.azuredevops/modulePipelines/ms.compute.images.yml +++ b/.azuredevops/modulePipelines/ms.compute.images.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.compute.proximityplacementgroups.yml b/.azuredevops/modulePipelines/ms.compute.proximityplacementgroups.yml index 67a4da0776..51d3371894 100644 --- a/.azuredevops/modulePipelines/ms.compute.proximityplacementgroups.yml +++ b/.azuredevops/modulePipelines/ms.compute.proximityplacementgroups.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml b/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml index e9450089f9..0e48340bdb 100644 --- a/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml +++ b/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml @@ -41,19 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/linux.min.parameters.json - - path: $(modulePath)/.parameters/linux.parameters.json - - path: $(modulePath)/.parameters/windows.min.parameters.json - - path: $(modulePath)/.parameters/windows.parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/linux.min.parameters.json - path: $(modulePath)/.parameters/linux.parameters.json - path: $(modulePath)/.parameters/windows.min.parameters.json diff --git a/.azuredevops/modulePipelines/ms.compute.virtualmachinescalesets.yml b/.azuredevops/modulePipelines/ms.compute.virtualmachinescalesets.yml index c6d7422704..272b067109 100644 --- a/.azuredevops/modulePipelines/ms.compute.virtualmachinescalesets.yml +++ b/.azuredevops/modulePipelines/ms.compute.virtualmachinescalesets.yml @@ -41,19 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/linux.min.parameters.json - - path: $(modulePath)/.parameters/linux.parameters.json - - path: $(modulePath)/.parameters/windows.min.parameters.json - - path: $(modulePath)/.parameters/windows.parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/linux.min.parameters.json - path: $(modulePath)/.parameters/linux.parameters.json - path: $(modulePath)/.parameters/windows.min.parameters.json diff --git a/.azuredevops/modulePipelines/ms.consumption.budgets.yml b/.azuredevops/modulePipelines/ms.consumption.budgets.yml index 1986f2d888..2c4a5aac43 100644 --- a/.azuredevops/modulePipelines/ms.consumption.budgets.yml +++ b/.azuredevops/modulePipelines/ms.consumption.budgets.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.containerinstance.containergroups.yml b/.azuredevops/modulePipelines/ms.containerinstance.containergroups.yml index a877eb18cd..44bdb5c090 100644 --- a/.azuredevops/modulePipelines/ms.containerinstance.containergroups.yml +++ b/.azuredevops/modulePipelines/ms.containerinstance.containergroups.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.containerregistry.registries.yml b/.azuredevops/modulePipelines/ms.containerregistry.registries.yml index ee13b68e7f..302d4ccce3 100644 --- a/.azuredevops/modulePipelines/ms.containerregistry.registries.yml +++ b/.azuredevops/modulePipelines/ms.containerregistry.registries.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.containerservice.managedclusters.yml b/.azuredevops/modulePipelines/ms.containerservice.managedclusters.yml index 9ab82d848b..e5724ac56d 100644 --- a/.azuredevops/modulePipelines/ms.containerservice.managedclusters.yml +++ b/.azuredevops/modulePipelines/ms.containerservice.managedclusters.yml @@ -41,17 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/azure.parameters.json - - path: $(modulePath)/.parameters/kubenet.parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/azure.parameters.json - path: $(modulePath)/.parameters/kubenet.parameters.json diff --git a/.azuredevops/modulePipelines/ms.databricks.workspaces.yml b/.azuredevops/modulePipelines/ms.databricks.workspaces.yml index 70d9c29cdf..66829f7f92 100644 --- a/.azuredevops/modulePipelines/ms.databricks.workspaces.yml +++ b/.azuredevops/modulePipelines/ms.databricks.workspaces.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.datafactory.factories.yml b/.azuredevops/modulePipelines/ms.datafactory.factories.yml index 0572292e24..cedabcbc80 100644 --- a/.azuredevops/modulePipelines/ms.datafactory.factories.yml +++ b/.azuredevops/modulePipelines/ms.datafactory.factories.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.desktopvirtualization.applicationgroups.yml b/.azuredevops/modulePipelines/ms.desktopvirtualization.applicationgroups.yml index 2da39f2021..9fc7a5d730 100644 --- a/.azuredevops/modulePipelines/ms.desktopvirtualization.applicationgroups.yml +++ b/.azuredevops/modulePipelines/ms.desktopvirtualization.applicationgroups.yml @@ -41,17 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/min.parameters.json - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json diff --git a/.azuredevops/modulePipelines/ms.desktopvirtualization.hostpools.yml b/.azuredevops/modulePipelines/ms.desktopvirtualization.hostpools.yml index 43415920a2..c06f06bfc7 100644 --- a/.azuredevops/modulePipelines/ms.desktopvirtualization.hostpools.yml +++ b/.azuredevops/modulePipelines/ms.desktopvirtualization.hostpools.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.desktopvirtualization.workspaces.yml b/.azuredevops/modulePipelines/ms.desktopvirtualization.workspaces.yml index 8b619fd33e..b789fce4db 100644 --- a/.azuredevops/modulePipelines/ms.desktopvirtualization.workspaces.yml +++ b/.azuredevops/modulePipelines/ms.desktopvirtualization.workspaces.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.documentdb.databaseaccounts.yml b/.azuredevops/modulePipelines/ms.documentdb.databaseaccounts.yml index 16c4738368..10f12fc71a 100644 --- a/.azuredevops/modulePipelines/ms.documentdb.databaseaccounts.yml +++ b/.azuredevops/modulePipelines/ms.documentdb.databaseaccounts.yml @@ -41,18 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/mongodb.parameters.json - - path: $(modulePath)/.parameters/plain.parameters.json - - path: $(modulePath)/.parameters/sqldb.parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/mongodb.parameters.json - path: $(modulePath)/.parameters/plain.parameters.json - path: $(modulePath)/.parameters/sqldb.parameters.json diff --git a/.azuredevops/modulePipelines/ms.eventgrid.topics.yml b/.azuredevops/modulePipelines/ms.eventgrid.topics.yml index 4980c38ed5..e669f6e584 100644 --- a/.azuredevops/modulePipelines/ms.eventgrid.topics.yml +++ b/.azuredevops/modulePipelines/ms.eventgrid.topics.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.eventhub.namespaces.yml b/.azuredevops/modulePipelines/ms.eventhub.namespaces.yml index eee9f64b54..aa7304858a 100644 --- a/.azuredevops/modulePipelines/ms.eventhub.namespaces.yml +++ b/.azuredevops/modulePipelines/ms.eventhub.namespaces.yml @@ -41,17 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/min.parameters.json - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json diff --git a/.azuredevops/modulePipelines/ms.healthbot.healthbots.yml b/.azuredevops/modulePipelines/ms.healthbot.healthbots.yml index a9639f11da..eaf9c9bf7f 100644 --- a/.azuredevops/modulePipelines/ms.healthbot.healthbots.yml +++ b/.azuredevops/modulePipelines/ms.healthbot.healthbots.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.insights.actiongroups.yml b/.azuredevops/modulePipelines/ms.insights.actiongroups.yml index 5979840ab1..22511acc32 100644 --- a/.azuredevops/modulePipelines/ms.insights.actiongroups.yml +++ b/.azuredevops/modulePipelines/ms.insights.actiongroups.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.insights.activitylogalerts.yml b/.azuredevops/modulePipelines/ms.insights.activitylogalerts.yml index 4502e29b6f..dcbeacfd1a 100644 --- a/.azuredevops/modulePipelines/ms.insights.activitylogalerts.yml +++ b/.azuredevops/modulePipelines/ms.insights.activitylogalerts.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.insights.components.yml b/.azuredevops/modulePipelines/ms.insights.components.yml index 3ac3d6041d..fdd859571c 100644 --- a/.azuredevops/modulePipelines/ms.insights.components.yml +++ b/.azuredevops/modulePipelines/ms.insights.components.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.insights.diagnosticsettings.yml b/.azuredevops/modulePipelines/ms.insights.diagnosticsettings.yml index 86ae9a2af9..24f25fc544 100644 --- a/.azuredevops/modulePipelines/ms.insights.diagnosticsettings.yml +++ b/.azuredevops/modulePipelines/ms.insights.diagnosticsettings.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.insights.metricalerts.yml b/.azuredevops/modulePipelines/ms.insights.metricalerts.yml index 6a8b2c9bc2..4450a58b9c 100644 --- a/.azuredevops/modulePipelines/ms.insights.metricalerts.yml +++ b/.azuredevops/modulePipelines/ms.insights.metricalerts.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.insights.privatelinkscopes.yml b/.azuredevops/modulePipelines/ms.insights.privatelinkscopes.yml index 01019b9428..7233f2dc58 100644 --- a/.azuredevops/modulePipelines/ms.insights.privatelinkscopes.yml +++ b/.azuredevops/modulePipelines/ms.insights.privatelinkscopes.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.insights.scheduledqueryrules.yml b/.azuredevops/modulePipelines/ms.insights.scheduledqueryrules.yml index afb77706f7..056be441a7 100644 --- a/.azuredevops/modulePipelines/ms.insights.scheduledqueryrules.yml +++ b/.azuredevops/modulePipelines/ms.insights.scheduledqueryrules.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.keyvault.vaults.yml b/.azuredevops/modulePipelines/ms.keyvault.vaults.yml index a3f63126a0..4c0abce324 100644 --- a/.azuredevops/modulePipelines/ms.keyvault.vaults.yml +++ b/.azuredevops/modulePipelines/ms.keyvault.vaults.yml @@ -41,17 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/min.parameters.json - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json diff --git a/.azuredevops/modulePipelines/ms.logic.workflows.yml b/.azuredevops/modulePipelines/ms.logic.workflows.yml index 90d734dc9c..9970d4b3b6 100644 --- a/.azuredevops/modulePipelines/ms.logic.workflows.yml +++ b/.azuredevops/modulePipelines/ms.logic.workflows.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.machinelearningservices.workspaces.yml b/.azuredevops/modulePipelines/ms.machinelearningservices.workspaces.yml index 8c8d701912..054a94242d 100644 --- a/.azuredevops/modulePipelines/ms.machinelearningservices.workspaces.yml +++ b/.azuredevops/modulePipelines/ms.machinelearningservices.workspaces.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.managedidentity.userassignedidentities.yml b/.azuredevops/modulePipelines/ms.managedidentity.userassignedidentities.yml index b905bf9f7c..3591f61d88 100644 --- a/.azuredevops/modulePipelines/ms.managedidentity.userassignedidentities.yml +++ b/.azuredevops/modulePipelines/ms.managedidentity.userassignedidentities.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.managedservices.registrationdefinitions.yml b/.azuredevops/modulePipelines/ms.managedservices.registrationdefinitions.yml index 0442f4640f..fb37fc410c 100644 --- a/.azuredevops/modulePipelines/ms.managedservices.registrationdefinitions.yml +++ b/.azuredevops/modulePipelines/ms.managedservices.registrationdefinitions.yml @@ -41,17 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - - path: $(modulePath)/.parameters/rg.parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - path: $(modulePath)/.parameters/rg.parameters.json diff --git a/.azuredevops/modulePipelines/ms.management.managementgroups.yml b/.azuredevops/modulePipelines/ms.management.managementgroups.yml index 8b134aa101..2caeb40d01 100644 --- a/.azuredevops/modulePipelines/ms.management.managementgroups.yml +++ b/.azuredevops/modulePipelines/ms.management.managementgroups.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.netapp.netappaccounts.yml b/.azuredevops/modulePipelines/ms.netapp.netappaccounts.yml index 5bfb87daed..39e2aa6fed 100644 --- a/.azuredevops/modulePipelines/ms.netapp.netappaccounts.yml +++ b/.azuredevops/modulePipelines/ms.netapp.netappaccounts.yml @@ -41,18 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/min.parameters.json - - path: $(modulePath)/.parameters/nfs3.parameters.json - - path: $(modulePath)/.parameters/nfs41.parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/nfs3.parameters.json - path: $(modulePath)/.parameters/nfs41.parameters.json diff --git a/.azuredevops/modulePipelines/ms.network.applicationgateways.yml b/.azuredevops/modulePipelines/ms.network.applicationgateways.yml index aebc700c18..3d6a17392a 100644 --- a/.azuredevops/modulePipelines/ms.network.applicationgateways.yml +++ b/.azuredevops/modulePipelines/ms.network.applicationgateways.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.network.applicationsecuritygroups.yml b/.azuredevops/modulePipelines/ms.network.applicationsecuritygroups.yml index 680a0b504b..d8011cbd9c 100644 --- a/.azuredevops/modulePipelines/ms.network.applicationsecuritygroups.yml +++ b/.azuredevops/modulePipelines/ms.network.applicationsecuritygroups.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.network.azurefirewalls.yml b/.azuredevops/modulePipelines/ms.network.azurefirewalls.yml index 56915c37a4..dbed58d3ca 100644 --- a/.azuredevops/modulePipelines/ms.network.azurefirewalls.yml +++ b/.azuredevops/modulePipelines/ms.network.azurefirewalls.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.network.bastionhosts.yml b/.azuredevops/modulePipelines/ms.network.bastionhosts.yml index 2b9713b5e7..885d800f63 100644 --- a/.azuredevops/modulePipelines/ms.network.bastionhosts.yml +++ b/.azuredevops/modulePipelines/ms.network.bastionhosts.yml @@ -41,17 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/min.parameters.json - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json diff --git a/.azuredevops/modulePipelines/ms.network.connections.yml b/.azuredevops/modulePipelines/ms.network.connections.yml index 74d8f5c393..2637d52139 100644 --- a/.azuredevops/modulePipelines/ms.network.connections.yml +++ b/.azuredevops/modulePipelines/ms.network.connections.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.network.ddosprotectionplans.yml b/.azuredevops/modulePipelines/ms.network.ddosprotectionplans.yml index 0acf4943b8..314ebd5bfb 100644 --- a/.azuredevops/modulePipelines/ms.network.ddosprotectionplans.yml +++ b/.azuredevops/modulePipelines/ms.network.ddosprotectionplans.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.network.expressroutecircuits.yml b/.azuredevops/modulePipelines/ms.network.expressroutecircuits.yml index 4fa024e009..79c42c9f8d 100644 --- a/.azuredevops/modulePipelines/ms.network.expressroutecircuits.yml +++ b/.azuredevops/modulePipelines/ms.network.expressroutecircuits.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.network.ipgroups.yml b/.azuredevops/modulePipelines/ms.network.ipgroups.yml index 7b42fc3a36..875aa02da6 100644 --- a/.azuredevops/modulePipelines/ms.network.ipgroups.yml +++ b/.azuredevops/modulePipelines/ms.network.ipgroups.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.network.loadbalancers.yml b/.azuredevops/modulePipelines/ms.network.loadbalancers.yml index 8fe0ed58f0..8f40577d3e 100644 --- a/.azuredevops/modulePipelines/ms.network.loadbalancers.yml +++ b/.azuredevops/modulePipelines/ms.network.loadbalancers.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.network.localnetworkgateways.yml b/.azuredevops/modulePipelines/ms.network.localnetworkgateways.yml index 83cdc44ded..8a704de92c 100644 --- a/.azuredevops/modulePipelines/ms.network.localnetworkgateways.yml +++ b/.azuredevops/modulePipelines/ms.network.localnetworkgateways.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.network.natgateways.yml b/.azuredevops/modulePipelines/ms.network.natgateways.yml index c703302963..9ebca1a384 100644 --- a/.azuredevops/modulePipelines/ms.network.natgateways.yml +++ b/.azuredevops/modulePipelines/ms.network.natgateways.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.network.networksecuritygroups.yml b/.azuredevops/modulePipelines/ms.network.networksecuritygroups.yml index bf21a0128c..93c1235465 100644 --- a/.azuredevops/modulePipelines/ms.network.networksecuritygroups.yml +++ b/.azuredevops/modulePipelines/ms.network.networksecuritygroups.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.network.networkwatchers.yml b/.azuredevops/modulePipelines/ms.network.networkwatchers.yml index bac891f6b5..77b1c3f4cc 100644 --- a/.azuredevops/modulePipelines/ms.network.networkwatchers.yml +++ b/.azuredevops/modulePipelines/ms.network.networkwatchers.yml @@ -41,17 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/min.parameters.json - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json diff --git a/.azuredevops/modulePipelines/ms.network.privatednszones.yml b/.azuredevops/modulePipelines/ms.network.privatednszones.yml index d2fc97d9bb..139e9ae737 100644 --- a/.azuredevops/modulePipelines/ms.network.privatednszones.yml +++ b/.azuredevops/modulePipelines/ms.network.privatednszones.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.network.privateendpoints.yml b/.azuredevops/modulePipelines/ms.network.privateendpoints.yml index 4f4807825d..b36646cd20 100644 --- a/.azuredevops/modulePipelines/ms.network.privateendpoints.yml +++ b/.azuredevops/modulePipelines/ms.network.privateendpoints.yml @@ -41,17 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/min.parameters.json - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json diff --git a/.azuredevops/modulePipelines/ms.network.publicipaddresses.yml b/.azuredevops/modulePipelines/ms.network.publicipaddresses.yml index a22cf45a14..2de38b2674 100644 --- a/.azuredevops/modulePipelines/ms.network.publicipaddresses.yml +++ b/.azuredevops/modulePipelines/ms.network.publicipaddresses.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.network.publicipprefixes.yml b/.azuredevops/modulePipelines/ms.network.publicipprefixes.yml index 4f7c427241..25379822a1 100644 --- a/.azuredevops/modulePipelines/ms.network.publicipprefixes.yml +++ b/.azuredevops/modulePipelines/ms.network.publicipprefixes.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.network.routetables.yml b/.azuredevops/modulePipelines/ms.network.routetables.yml index 66e9d514ef..6e05f381e2 100644 --- a/.azuredevops/modulePipelines/ms.network.routetables.yml +++ b/.azuredevops/modulePipelines/ms.network.routetables.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.network.trafficmanagerprofiles.yml b/.azuredevops/modulePipelines/ms.network.trafficmanagerprofiles.yml index 448ecbdfb5..22ee91db40 100644 --- a/.azuredevops/modulePipelines/ms.network.trafficmanagerprofiles.yml +++ b/.azuredevops/modulePipelines/ms.network.trafficmanagerprofiles.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.network.virtualnetworkgateways.yml b/.azuredevops/modulePipelines/ms.network.virtualnetworkgateways.yml index 96a8125dba..6f3623ccf4 100644 --- a/.azuredevops/modulePipelines/ms.network.virtualnetworkgateways.yml +++ b/.azuredevops/modulePipelines/ms.network.virtualnetworkgateways.yml @@ -41,17 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/expressRoute.parameters.json - - path: $(modulePath)/.parameters/vpn.parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/expressRoute.parameters.json - path: $(modulePath)/.parameters/vpn.parameters.json diff --git a/.azuredevops/modulePipelines/ms.network.virtualnetworks.yml b/.azuredevops/modulePipelines/ms.network.virtualnetworks.yml index 347021368f..2231134453 100644 --- a/.azuredevops/modulePipelines/ms.network.virtualnetworks.yml +++ b/.azuredevops/modulePipelines/ms.network.virtualnetworks.yml @@ -41,17 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - - path: $(modulePath)/.parameters/vnetPeering.parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - path: $(modulePath)/.parameters/vnetPeering.parameters.json diff --git a/.azuredevops/modulePipelines/ms.network.virtualwans.yml b/.azuredevops/modulePipelines/ms.network.virtualwans.yml index 3b46349355..2ca6d848a2 100644 --- a/.azuredevops/modulePipelines/ms.network.virtualwans.yml +++ b/.azuredevops/modulePipelines/ms.network.virtualwans.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.operationalinsights.workspaces.yml b/.azuredevops/modulePipelines/ms.operationalinsights.workspaces.yml index 3001fa34bd..44bd5568de 100644 --- a/.azuredevops/modulePipelines/ms.operationalinsights.workspaces.yml +++ b/.azuredevops/modulePipelines/ms.operationalinsights.workspaces.yml @@ -41,17 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/min.parameters.json - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json diff --git a/.azuredevops/modulePipelines/ms.recoveryservices.vaults.yml b/.azuredevops/modulePipelines/ms.recoveryservices.vaults.yml index ca30045a1d..7415ea02fc 100644 --- a/.azuredevops/modulePipelines/ms.recoveryservices.vaults.yml +++ b/.azuredevops/modulePipelines/ms.recoveryservices.vaults.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.resources.deploymentscripts.yml b/.azuredevops/modulePipelines/ms.resources.deploymentscripts.yml index c2304106b3..1ca758f727 100644 --- a/.azuredevops/modulePipelines/ms.resources.deploymentscripts.yml +++ b/.azuredevops/modulePipelines/ms.resources.deploymentscripts.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.resources.resourcegroups.yml b/.azuredevops/modulePipelines/ms.resources.resourcegroups.yml index c81021ee26..85dd49c3fb 100644 --- a/.azuredevops/modulePipelines/ms.resources.resourcegroups.yml +++ b/.azuredevops/modulePipelines/ms.resources.resourcegroups.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.security.azuresecuritycenter.yml b/.azuredevops/modulePipelines/ms.security.azuresecuritycenter.yml index b977a72d67..c4f3c9cf6e 100644 --- a/.azuredevops/modulePipelines/ms.security.azuresecuritycenter.yml +++ b/.azuredevops/modulePipelines/ms.security.azuresecuritycenter.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.servicebus.namespaces.yml b/.azuredevops/modulePipelines/ms.servicebus.namespaces.yml index e5517e2fe4..c388e26c8a 100644 --- a/.azuredevops/modulePipelines/ms.servicebus.namespaces.yml +++ b/.azuredevops/modulePipelines/ms.servicebus.namespaces.yml @@ -41,17 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/min.parameters.json - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json diff --git a/.azuredevops/modulePipelines/ms.sql.managedinstances.yml b/.azuredevops/modulePipelines/ms.sql.managedinstances.yml index 032343522d..2554513966 100644 --- a/.azuredevops/modulePipelines/ms.sql.managedinstances.yml +++ b/.azuredevops/modulePipelines/ms.sql.managedinstances.yml @@ -41,10 +41,6 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - defaultJobTimeoutInMinutes: 360 - stage: Deployment jobs: diff --git a/.azuredevops/modulePipelines/ms.sql.servers.yml b/.azuredevops/modulePipelines/ms.sql.servers.yml index 84cc856a6c..46591fddfc 100644 --- a/.azuredevops/modulePipelines/ms.sql.servers.yml +++ b/.azuredevops/modulePipelines/ms.sql.servers.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.storage.storageaccounts.yml b/.azuredevops/modulePipelines/ms.storage.storageaccounts.yml index 6aa4968ba5..e39450f0db 100644 --- a/.azuredevops/modulePipelines/ms.storage.storageaccounts.yml +++ b/.azuredevops/modulePipelines/ms.storage.storageaccounts.yml @@ -41,18 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/min.parameters.json - - path: $(modulePath)/.parameters/parameters.json - - path: $(modulePath)/.parameters/v1.parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json - path: $(modulePath)/.parameters/v1.parameters.json diff --git a/.azuredevops/modulePipelines/ms.virtualmachineimages.imagetemplates.yml b/.azuredevops/modulePipelines/ms.virtualmachineimages.imagetemplates.yml index 9516d18c33..cca7f4643b 100644 --- a/.azuredevops/modulePipelines/ms.virtualmachineimages.imagetemplates.yml +++ b/.azuredevops/modulePipelines/ms.virtualmachineimages.imagetemplates.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.web.connections.yml b/.azuredevops/modulePipelines/ms.web.connections.yml index f5c4daa1c9..882fd6b451 100644 --- a/.azuredevops/modulePipelines/ms.web.connections.yml +++ b/.azuredevops/modulePipelines/ms.web.connections.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.web.hostingenvironments.yml b/.azuredevops/modulePipelines/ms.web.hostingenvironments.yml index 42b2794f57..404abae891 100644 --- a/.azuredevops/modulePipelines/ms.web.hostingenvironments.yml +++ b/.azuredevops/modulePipelines/ms.web.hostingenvironments.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.web.serverfarms.yml b/.azuredevops/modulePipelines/ms.web.serverfarms.yml index 069c5a4e3c..1f917c3ff1 100644 --- a/.azuredevops/modulePipelines/ms.web.serverfarms.yml +++ b/.azuredevops/modulePipelines/ms.web.serverfarms.yml @@ -41,16 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - stage: Publishing diff --git a/.azuredevops/modulePipelines/ms.web.sites.yml b/.azuredevops/modulePipelines/ms.web.sites.yml index 36f42ff8ed..2ae82227e5 100644 --- a/.azuredevops/modulePipelines/ms.web.sites.yml +++ b/.azuredevops/modulePipelines/ms.web.sites.yml @@ -41,19 +41,13 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - - path: $(modulePath)/.parameters/fa.min.parameters.json - - path: $(modulePath)/.parameters/fa.parameters.json - - path: $(modulePath)/.parameters/wa.min.parameters.json - - path: $(modulePath)/.parameters/wa.parameters.json - stage: Deployment jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/fa.min.parameters.json - path: $(modulePath)/.parameters/fa.parameters.json - path: $(modulePath)/.parameters/wa.min.parameters.json diff --git a/.azuredevops/pipelineTemplates/module.jobs.validate.yml b/.azuredevops/pipelineTemplates/module.jobs.validate.yml index bd5ccccede..368888f5f9 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.validate.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.validate.yml @@ -30,7 +30,6 @@ ## | defaultJobTimeoutInMinutes | 120 | The timeout for the job in this pipeline | 120 | ## | checkoutRepositories | '' | An optional list of repositories to check out at the beginning of this job in addition to the source | 'Components' | ## | modulePath | '$(modulePath)' | The path to the module to deploy. E.g. [c:/KeyVault] | 'c:/KeyVault' | -## | deploymentBlocks | | The parameter file(s) to validate with. Must be provided | 'C:/parameters.json' | ## | location | '$(defaultLocation)' | The location to validate with | 'France Central' | ## | resourceGroupName | '$(defaultResourceGroupName)' | The resourcegroup to validate into. Required only for Resource-Group-Level validations | 'validation-rg' | ## | subscriptionId | '$(ARM_SUBSCRIPTION_ID)' | The id of the subscription to validate with when using a Management group service connection | 'aed7c000-6387-412e-bed0-24dfddf4bbc6' | @@ -52,7 +51,6 @@ parameters: checkoutRepositories: '' # Logic-related parameters modulePath: '$(modulePath)' - deploymentBlocks: parametersRepository: '$(Build.Repository.Name)' location: '$(defaultLocation)' resourceGroupName: '$(defaultResourceGroupName)' diff --git a/utilities/tools/AzureDevOps/src/devOpsPipelineTemplate.yml b/utilities/tools/AzureDevOps/src/devOpsPipelineTemplate.yml index 309a7b2bd7..9b22d85453 100644 --- a/utilities/tools/AzureDevOps/src/devOpsPipelineTemplate.yml +++ b/utilities/tools/AzureDevOps/src/devOpsPipelineTemplate.yml @@ -41,8 +41,6 @@ stages: - stage: Validation jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - parameters: - deploymentBlocks: - stage: Deployment jobs: From 2e312e0e1ea91eb574a0f894faf197f0cf9d9613 Mon Sep 17 00:00:00 2001 From: Msanzdelrio Date: Thu, 9 Dec 2021 11:31:22 +0100 Subject: [PATCH 072/112] platform + wiki sync ADO pipelines --- .../platform.updateReadMe.yml | 72 ++++++++++---- .../platformPipelines/platform.wiki-sync.yml | 95 +++++++++---------- 2 files changed, 100 insertions(+), 67 deletions(-) diff --git a/.azuredevops/platformPipelines/platform.updateReadMe.yml b/.azuredevops/platformPipelines/platform.updateReadMe.yml index 5bf2470b5c..c4f560eee3 100644 --- a/.azuredevops/platformPipelines/platform.updateReadMe.yml +++ b/.azuredevops/platformPipelines/platform.updateReadMe.yml @@ -18,9 +18,12 @@ variables: value: 'CARML@noreply.github.com' jobs: - - job: Update module tables + - job: Update_module_tables pool: - vmImage: 'ubuntu-latest' + ${{ if ne($(vmImage), '') }}: + vmImage: '$(vmImage)' + ${{ if ne($(poolName), '') }}: + name: '$(poolName)' steps: - checkout: self persistCredentials: true @@ -31,20 +34,51 @@ jobs: pwsh: true script: | # Load used functions - Write-Verbose $(System.DefaultWorkingDirectory) - Write-Verbose $(Build.Repository.Name) - # . (Join-Path '$(System.DefaultWorkingDirectory)' 'utilities' 'tools' 'Set-GitHubReadMeModuleTable.ps1') - - # $functionInput = @{ - # ModulesPath = Join-Path '$(System.DefaultWorkingDirectory)' 'arm' - # FilePath = Join-Path '$(System.DefaultWorkingDirectory)' 'README.md' - # Organization = ($(Build.Repository.Name)).split('/')[0] - # RepositoryName = '$(Build.Repository.Name)' - # ColumnsInOrder = @('Name', 'Status') - # SortByColumn = 'Name' - # } - - # Write-Verbose "Invoke task with" -Verbose - # Write-Verbose ($functionInput | ConvertTo-Json | Out-String) -Verbose - - # Set-GitHubReadMeModuleTable @functionInput -Verbose + . (Join-Path '$(System.DefaultWorkingDirectory)' 'utilities' 'tools' 'Set-GitHubReadMeModuleTable.ps1') + + $functionInput = @{ + ModulesPath = Join-Path '$(System.DefaultWorkingDirectory)' 'arm' + FilePath = Join-Path '$(System.DefaultWorkingDirectory)' 'README.md' + Organization = ('$(Build.Repository.Name)').split('/')[0] + RepositoryName = ('$(Build.Repository.Name)').split('/')[1] + ColumnsInOrder = @('Name', 'Status') + SortByColumn = 'Name' + } + + Write-Verbose "Invoke task with" -Verbose + Write-Verbose ($functionInput | ConvertTo-Json | Out-String) -Verbose + + Set-GitHubReadMeModuleTable @functionInput -Verbose + - task: PowerShell@2 + displayName: 'Update module folder ReadMe' + inputs: + targetType: inline + pwsh: true + script: | + # Load used functions + . (Join-Path '$(System.DefaultWorkingDirectory)' 'utilities' 'tools' 'Set-GitHubReadMeModuleTable.ps1') + + $functionInput = @{ + ModulesPath = Join-Path '$(System.DefaultWorkingDirectory)' 'arm' + FilePath = Join-Path '$(System.DefaultWorkingDirectory)' 'arm/README.md' + Organization = ('$(Build.Repository.Name)').split('/')[0] + RepositoryName = ('$(Build.Repository.Name)').split('/')[1] + ColumnsInOrder = @('Name', 'ProviderNamespace','ResourceType') + } + + Write-Verbose "Invoke task with" -Verbose + Write-Verbose ($functionInput | ConvertTo-Json | Out-String) -Verbose + + Set-GitHubReadMeModuleTable @functionInput -Verbose + - task: PowerShell@2 + displayName: 'Push changes' + inputs: + targetType: inline + pwsh: true + script: | + git config --global user.email '$(pipelinePrincipalGitUserEmail)' + git config --global user.name '$(pipelinePrincipalGitUserName)' + Write-Verbose '$(Build.SourceBranch)' -Verbose + git add . + git commit -m "Push updated Readme file(s)" + git push $(Build.Repository.Uri) HEAD:$(Build.SourceBranch) diff --git a/.azuredevops/platformPipelines/platform.wiki-sync.yml b/.azuredevops/platformPipelines/platform.wiki-sync.yml index 43a0df63c4..aa5f86a030 100644 --- a/.azuredevops/platformPipelines/platform.wiki-sync.yml +++ b/.azuredevops/platformPipelines/platform.wiki-sync.yml @@ -1,59 +1,58 @@ # NOTE: -# This pipeline requires a secret 'PLATFORM_REPO_UPDATE_PAT' set up in the GitHub secrets. +# This pipeline requires a secret 'PAT' set up in a library named 'PLATFORM_REPO_VARIABLES'. # The secret's value should be a PAT token with the permissions to push to the repository's main branch. name: '.Platform: Sync Docs/Wiki' -on: - push: - branches: +trigger: + branches: + include: - main - paths: + paths: + include: - 'docs/wiki/**' -env: - wiki_source_repo: '${{ github.repository }}' - wiki_source_repo_dir: '${{ github.repository }}/docs/wiki' - wiki_target_repo: '${{ github.repository }}.wiki' - github_commit_message: 'Wiki Sync from docs/wiki' - pipelinePrincipalGitUserName: 'CARMLPipelinePrincipal' - pipelinePrincipalGitUserEmail: 'CARML@noreply.microsoft.com' +variables: + - group: 'PLATFORM_REPO_VARIABLES' + - template: '/.azuredevops/pipelineVariables/global.variables.yml' + - name: pipelinePrincipalGitUserName + value: 'CARMLPipelinePrincipal' + - name: pipelinePrincipalGitUserEmail + value: 'CARML@noreply.github.com' jobs: - sync-wiki: - name: Sync docs/wiki to Wiki - runs-on: ubuntu-latest + - job: Update_module_tables + pool: + ${{ if ne('$(vmImage)', '') }}: + vmImage: '$(vmImage)' + ${{ if ne('$(poolName)', '') }}: + name: '$(poolName)' steps: - - name: Checkout Source Repo - uses: actions/checkout@v2 - with: - repository: ${{ env.wiki_source_repo }} - path: ${{ env.wiki_source_repo }} - token: '${{ secrets.PLATFORM_REPO_UPDATE_PAT }}' # Sets general GIT credentials up - - - name: Checkout Wiki Repo - uses: actions/checkout@v2 - with: - repository: ${{ env.wiki_target_repo }} - path: ${{ env.wiki_target_repo }} - token: '${{ secrets.PLATFORM_REPO_UPDATE_PAT }}' # Sets general GIT credentials up - - - name: Configure Local Git - run: | - git config --global user.name '${{ env.pipelinePrincipalGitUserName }}' - git config --global user.email '${{ env.pipelinePrincipalGitUserEmail }}' - working-directory: ${{ env.GITHUB_WORKSPACE }} - - - name: Sync docs/wiki Into Wiki Repo - shell: pwsh - run: | - rsync -avzr --delete --exclude='.git/' "${{ env.wiki_source_repo_dir }}/" "${{ env.wiki_target_repo }}" - working-directory: ${{ env.GITHUB_WORKSPACE }} - - - name: Stage & Push Files Into Wiki Repo - shell: pwsh - run: | - git add . - git commit -m "$github_commit_message [$GITHUB_ACTOR/${GITHUB_SHA::8}]" - git push - working-directory: ${{ env.wiki_target_repo }} + - checkout: self + displayName: Checkout Source Repo + persistCredentials: true + # Create a variable + - task: PowerShell@2 + displayName: 'Checkout Wiki Repo' + inputs: + targetType: inline + pwsh: true + script: | + git config --global user.email '$(pipelinePrincipalGitUserEmail)' + git config --global user.name '$(pipelinePrincipalGitUserName)' + $repositoryEndpoint= 'https://' + '$(PAT)' + '@github.com/' + '$(Build.Repository.Name)' + '.wiki' + git clone $repositoryEndpoint + - task: PowerShell@2 + displayName: 'Sync docs/wiki Into Wiki Repo' + inputs: + targetType: inline + pwsh: true + script: | + $docsPath = Join-Path '$(System.DefaultWorkingDirectory)' 'docs' 'wiki' + $wikiPath = ('$(Build.Repository.Name)').split('/')[1] + '.wiki' + $wikiRepository = Join-Path '$(System.DefaultWorkingDirectory)' $wikiPath + rsync -avzr --delete --exclude='.git/' $docsPath $wikiRepository + cd $wikiRepository + git add . + git commit -m "Push updated Wiki" + git push From 8d0aba0ac8d73935d363e109d7fb0c53cf11435a Mon Sep 17 00:00:00 2001 From: Msanzdelrio Date: Thu, 9 Dec 2021 12:28:18 +0100 Subject: [PATCH 073/112] updated naming --- .azuredevops/platformPipelines/platform.wiki-sync.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.azuredevops/platformPipelines/platform.wiki-sync.yml b/.azuredevops/platformPipelines/platform.wiki-sync.yml index aa5f86a030..bb5085e0f5 100644 --- a/.azuredevops/platformPipelines/platform.wiki-sync.yml +++ b/.azuredevops/platformPipelines/platform.wiki-sync.yml @@ -1,5 +1,5 @@ # NOTE: -# This pipeline requires a secret 'PAT' set up in a library named 'PLATFORM_REPO_VARIABLES'. +# This pipeline requires a secret 'PLATFORM_REPO_UPDATE_PAT' set up in a library named 'PLATFORM_VARIABLES'. # The secret's value should be a PAT token with the permissions to push to the repository's main branch. name: '.Platform: Sync Docs/Wiki' @@ -13,7 +13,7 @@ trigger: - 'docs/wiki/**' variables: - - group: 'PLATFORM_REPO_VARIABLES' + - group: 'PLATFORM_VARIABLES' - template: '/.azuredevops/pipelineVariables/global.variables.yml' - name: pipelinePrincipalGitUserName value: 'CARMLPipelinePrincipal' @@ -40,7 +40,7 @@ jobs: script: | git config --global user.email '$(pipelinePrincipalGitUserEmail)' git config --global user.name '$(pipelinePrincipalGitUserName)' - $repositoryEndpoint= 'https://' + '$(PAT)' + '@github.com/' + '$(Build.Repository.Name)' + '.wiki' + $repositoryEndpoint= 'https://' + '$(PLATFORM_REPO_UPDATE_PAT)' + '@github.com/' + '$(Build.Repository.Name)' + '.wiki' git clone $repositoryEndpoint - task: PowerShell@2 displayName: 'Sync docs/wiki Into Wiki Repo' From 818777e86d9d6d5294727e7aa59241f4d1e70a5c Mon Sep 17 00:00:00 2001 From: MrMCake Date: Thu, 9 Dec 2021 16:35:37 +0100 Subject: [PATCH 074/112] Update to latest --- .../modulePipelines/ms.analysisservices.servers.yml | 2 +- .azuredevops/modulePipelines/ms.apimanagement.service.yml | 2 +- .../modulePipelines/ms.authorization.policyassignments.yml | 2 +- .../modulePipelines/ms.authorization.policydefinitions.yml | 2 +- .../modulePipelines/ms.authorization.policyexemptions.yml | 2 +- .../ms.authorization.policysetdefinitions.yml | 2 +- .../modulePipelines/ms.authorization.roleassignments.yml | 2 +- .../modulePipelines/ms.authorization.roledefinitions.yml | 2 +- .azuredevops/modulePipelines/ms.automanage.accounts.yml | 2 +- .../modulePipelines/ms.automation.automationaccounts.yml | 2 +- .azuredevops/modulePipelines/ms.batch.batchaccounts.yml | 2 +- .../modulePipelines/ms.cognitiveservices.accounts.yml | 2 +- .../modulePipelines/ms.compute.availabilitysets.yml | 2 +- .../modulePipelines/ms.compute.diskencryptionsets.yml | 2 +- .azuredevops/modulePipelines/ms.compute.galleries.yml | 6 +++--- .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 +- .../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 +- .../ms.desktopvirtualization.applicationgroups.yml | 2 +- .../modulePipelines/ms.desktopvirtualization.hostpools.yml | 2 +- .../modulePipelines/ms.desktopvirtualization.workspaces.yml | 2 +- .../modulePipelines/ms.documentdb.databaseaccounts.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 +- .../modulePipelines/ms.insights.activitylogalerts.yml | 2 +- .azuredevops/modulePipelines/ms.insights.components.yml | 2 +- .../modulePipelines/ms.insights.diagnosticsettings.yml | 2 +- .azuredevops/modulePipelines/ms.insights.metricalerts.yml | 2 +- .../modulePipelines/ms.insights.privatelinkscopes.yml | 2 +- .../modulePipelines/ms.insights.scheduledqueryrules.yml | 2 +- .azuredevops/modulePipelines/ms.keyvault.vaults.yml | 2 +- .azuredevops/modulePipelines/ms.logic.workflows.yml | 2 +- .../ms.machinelearningservices.workspaces.yml | 2 +- .../ms.managedidentity.userassignedidentities.yml | 2 +- .../ms.managedservices.registrationdefinitions.yml | 2 +- .../modulePipelines/ms.management.managementgroups.yml | 2 +- .azuredevops/modulePipelines/ms.netapp.netappaccounts.yml | 2 +- .../modulePipelines/ms.network.applicationgateways.yml | 2 +- .../ms.network.applicationsecuritygroups.yml | 2 +- .azuredevops/modulePipelines/ms.network.azurefirewalls.yml | 2 +- .azuredevops/modulePipelines/ms.network.bastionhosts.yml | 2 +- .azuredevops/modulePipelines/ms.network.connections.yml | 2 +- .../modulePipelines/ms.network.ddosprotectionplans.yml | 2 +- .../modulePipelines/ms.network.expressroutecircuits.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 +- .../modulePipelines/ms.network.networksecuritygroups.yml | 2 +- .azuredevops/modulePipelines/ms.network.networkwatchers.yml | 2 +- .azuredevops/modulePipelines/ms.network.privatednszones.yml | 2 +- .../modulePipelines/ms.network.privateendpoints.yml | 2 +- .../modulePipelines/ms.network.publicipaddresses.yml | 2 +- .../modulePipelines/ms.network.publicipprefixes.yml | 2 +- .azuredevops/modulePipelines/ms.network.routetables.yml | 2 +- .../modulePipelines/ms.network.trafficmanagerprofiles.yml | 2 +- .../modulePipelines/ms.network.virtualnetworkgateways.yml | 2 +- .azuredevops/modulePipelines/ms.network.virtualnetworks.yml | 2 +- .azuredevops/modulePipelines/ms.network.virtualwans.yml | 2 +- .../modulePipelines/ms.operationalinsights.workspaces.yml | 2 +- .azuredevops/modulePipelines/ms.recoveryservices.vaults.yml | 2 +- .../modulePipelines/ms.resources.deploymentscripts.yml | 2 +- .../modulePipelines/ms.resources.resourcegroups.yml | 2 +- .../modulePipelines/ms.security.azuresecuritycenter.yml | 2 +- .azuredevops/modulePipelines/ms.servicebus.namespaces.yml | 2 +- .azuredevops/modulePipelines/ms.sql.managedinstances.yml | 2 +- .azuredevops/modulePipelines/ms.sql.servers.yml | 2 +- .azuredevops/modulePipelines/ms.storage.storageaccounts.yml | 2 +- .../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 +- docs/wiki/PipelinesDesign.md | 6 +++--- utilities/tools/AzureDevOps/src/devOpsPipelineTemplate.yml | 2 +- 84 files changed, 88 insertions(+), 88 deletions(-) diff --git a/.azuredevops/modulePipelines/ms.analysisservices.servers.yml b/.azuredevops/modulePipelines/ms.analysisservices.servers.yml index cdf8f96fb9..2ab5389b0b 100644 --- a/.azuredevops/modulePipelines/ms.analysisservices.servers.yml +++ b/.azuredevops/modulePipelines/ms.analysisservices.servers.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.AnalysisServices/servers' diff --git a/.azuredevops/modulePipelines/ms.apimanagement.service.yml b/.azuredevops/modulePipelines/ms.apimanagement.service.yml index c29b06854e..c4111c9a1b 100644 --- a/.azuredevops/modulePipelines/ms.apimanagement.service.yml +++ b/.azuredevops/modulePipelines/ms.apimanagement.service.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.ApiManagement/service' diff --git a/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml b/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml index 2778b5f97d..dc6c445b19 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Authorization/policyAssignments' diff --git a/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml b/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml index 57cb4d5c4f..81ad9bfd6b 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Authorization/policyDefinitions' diff --git a/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml b/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml index 89447cfde0..f626e2f59b 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Authorization/policyExemptions' diff --git a/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml b/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml index 2155f81a6a..137c47345b 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Authorization/policySetDefinitions' diff --git a/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml b/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml index c094cb5992..6b27e78fe4 100644 --- a/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml +++ b/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Authorization/roleAssignments' diff --git a/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml b/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml index 6c39a12abe..04de12ed21 100644 --- a/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Authorization/roleDefinitions' diff --git a/.azuredevops/modulePipelines/ms.automanage.accounts.yml b/.azuredevops/modulePipelines/ms.automanage.accounts.yml index a74903f597..6701e547a7 100644 --- a/.azuredevops/modulePipelines/ms.automanage.accounts.yml +++ b/.azuredevops/modulePipelines/ms.automanage.accounts.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Automanage/accounts' diff --git a/.azuredevops/modulePipelines/ms.automation.automationaccounts.yml b/.azuredevops/modulePipelines/ms.automation.automationaccounts.yml index 6f82d8c518..c1b26f8308 100644 --- a/.azuredevops/modulePipelines/ms.automation.automationaccounts.yml +++ b/.azuredevops/modulePipelines/ms.automation.automationaccounts.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Automation/automationAccounts' diff --git a/.azuredevops/modulePipelines/ms.batch.batchaccounts.yml b/.azuredevops/modulePipelines/ms.batch.batchaccounts.yml index 91b4af829d..17d260a527 100644 --- a/.azuredevops/modulePipelines/ms.batch.batchaccounts.yml +++ b/.azuredevops/modulePipelines/ms.batch.batchaccounts.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Batch/batchAccounts' diff --git a/.azuredevops/modulePipelines/ms.cognitiveservices.accounts.yml b/.azuredevops/modulePipelines/ms.cognitiveservices.accounts.yml index 1aa0bb83bf..d56f541315 100644 --- a/.azuredevops/modulePipelines/ms.cognitiveservices.accounts.yml +++ b/.azuredevops/modulePipelines/ms.cognitiveservices.accounts.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.CognitiveServices/accounts' diff --git a/.azuredevops/modulePipelines/ms.compute.availabilitysets.yml b/.azuredevops/modulePipelines/ms.compute.availabilitysets.yml index 49008f8de6..ea7e2b5892 100644 --- a/.azuredevops/modulePipelines/ms.compute.availabilitysets.yml +++ b/.azuredevops/modulePipelines/ms.compute.availabilitysets.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Compute/availabilitySets' diff --git a/.azuredevops/modulePipelines/ms.compute.diskencryptionsets.yml b/.azuredevops/modulePipelines/ms.compute.diskencryptionsets.yml index 5bc6babdef..510648d3b3 100644 --- a/.azuredevops/modulePipelines/ms.compute.diskencryptionsets.yml +++ b/.azuredevops/modulePipelines/ms.compute.diskencryptionsets.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Compute/diskEncryptionSets' diff --git a/.azuredevops/modulePipelines/ms.compute.galleries.yml b/.azuredevops/modulePipelines/ms.compute.galleries.yml index bf71733da1..9a8fc78f75 100644 --- a/.azuredevops/modulePipelines/ms.compute.galleries.yml +++ b/.azuredevops/modulePipelines/ms.compute.galleries.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Compute/galleries' @@ -42,7 +42,7 @@ stages: jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml parameters: - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/images.parameters.json - path: $(modulePath)/.parameters/parameters.json @@ -51,7 +51,7 @@ stages: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' - deploymentBlocks: + deploymentBlocks: - path: $(modulePath)/.parameters/images.parameters.json - path: $(modulePath)/.parameters/parameters.json diff --git a/.azuredevops/modulePipelines/ms.compute.images.yml b/.azuredevops/modulePipelines/ms.compute.images.yml index 1d50dfa421..fb59ad8a46 100644 --- a/.azuredevops/modulePipelines/ms.compute.images.yml +++ b/.azuredevops/modulePipelines/ms.compute.images.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Compute/images' diff --git a/.azuredevops/modulePipelines/ms.compute.proximityplacementgroups.yml b/.azuredevops/modulePipelines/ms.compute.proximityplacementgroups.yml index 51d3371894..fac7d884b6 100644 --- a/.azuredevops/modulePipelines/ms.compute.proximityplacementgroups.yml +++ b/.azuredevops/modulePipelines/ms.compute.proximityplacementgroups.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Compute/proximityPlacementGroups' diff --git a/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml b/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml index 0e48340bdb..97233269e8 100644 --- a/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml +++ b/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Compute/virtualMachines' diff --git a/.azuredevops/modulePipelines/ms.compute.virtualmachinescalesets.yml b/.azuredevops/modulePipelines/ms.compute.virtualmachinescalesets.yml index 272b067109..83adaaa813 100644 --- a/.azuredevops/modulePipelines/ms.compute.virtualmachinescalesets.yml +++ b/.azuredevops/modulePipelines/ms.compute.virtualmachinescalesets.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Compute/virtualMachineScaleSets' diff --git a/.azuredevops/modulePipelines/ms.consumption.budgets.yml b/.azuredevops/modulePipelines/ms.consumption.budgets.yml index 2c4a5aac43..915a55f8a4 100644 --- a/.azuredevops/modulePipelines/ms.consumption.budgets.yml +++ b/.azuredevops/modulePipelines/ms.consumption.budgets.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Consumption/budgets' diff --git a/.azuredevops/modulePipelines/ms.containerinstance.containergroups.yml b/.azuredevops/modulePipelines/ms.containerinstance.containergroups.yml index 44bdb5c090..c7be790e10 100644 --- a/.azuredevops/modulePipelines/ms.containerinstance.containergroups.yml +++ b/.azuredevops/modulePipelines/ms.containerinstance.containergroups.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.ContainerInstance/containerGroups' diff --git a/.azuredevops/modulePipelines/ms.containerregistry.registries.yml b/.azuredevops/modulePipelines/ms.containerregistry.registries.yml index 302d4ccce3..444c07fa2f 100644 --- a/.azuredevops/modulePipelines/ms.containerregistry.registries.yml +++ b/.azuredevops/modulePipelines/ms.containerregistry.registries.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.ContainerRegistry/registries' diff --git a/.azuredevops/modulePipelines/ms.containerservice.managedclusters.yml b/.azuredevops/modulePipelines/ms.containerservice.managedclusters.yml index e5724ac56d..a01379b100 100644 --- a/.azuredevops/modulePipelines/ms.containerservice.managedclusters.yml +++ b/.azuredevops/modulePipelines/ms.containerservice.managedclusters.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.ContainerService/managedClusters' diff --git a/.azuredevops/modulePipelines/ms.databricks.workspaces.yml b/.azuredevops/modulePipelines/ms.databricks.workspaces.yml index 66829f7f92..13ebdee5da 100644 --- a/.azuredevops/modulePipelines/ms.databricks.workspaces.yml +++ b/.azuredevops/modulePipelines/ms.databricks.workspaces.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Databricks/workspaces' diff --git a/.azuredevops/modulePipelines/ms.datafactory.factories.yml b/.azuredevops/modulePipelines/ms.datafactory.factories.yml index cedabcbc80..671bd1ea82 100644 --- a/.azuredevops/modulePipelines/ms.datafactory.factories.yml +++ b/.azuredevops/modulePipelines/ms.datafactory.factories.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.DataFactory/factories' diff --git a/.azuredevops/modulePipelines/ms.desktopvirtualization.applicationgroups.yml b/.azuredevops/modulePipelines/ms.desktopvirtualization.applicationgroups.yml index 9fc7a5d730..0b28dd1c39 100644 --- a/.azuredevops/modulePipelines/ms.desktopvirtualization.applicationgroups.yml +++ b/.azuredevops/modulePipelines/ms.desktopvirtualization.applicationgroups.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.DesktopVirtualization/applicationgroups' diff --git a/.azuredevops/modulePipelines/ms.desktopvirtualization.hostpools.yml b/.azuredevops/modulePipelines/ms.desktopvirtualization.hostpools.yml index c06f06bfc7..d7f6661f73 100644 --- a/.azuredevops/modulePipelines/ms.desktopvirtualization.hostpools.yml +++ b/.azuredevops/modulePipelines/ms.desktopvirtualization.hostpools.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.DesktopVirtualization/hostpools' diff --git a/.azuredevops/modulePipelines/ms.desktopvirtualization.workspaces.yml b/.azuredevops/modulePipelines/ms.desktopvirtualization.workspaces.yml index b789fce4db..7de58d249f 100644 --- a/.azuredevops/modulePipelines/ms.desktopvirtualization.workspaces.yml +++ b/.azuredevops/modulePipelines/ms.desktopvirtualization.workspaces.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.DesktopVirtualization/workspaces' diff --git a/.azuredevops/modulePipelines/ms.documentdb.databaseaccounts.yml b/.azuredevops/modulePipelines/ms.documentdb.databaseaccounts.yml index 10f12fc71a..4a1d99be93 100644 --- a/.azuredevops/modulePipelines/ms.documentdb.databaseaccounts.yml +++ b/.azuredevops/modulePipelines/ms.documentdb.databaseaccounts.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.DocumentDB/databaseAccounts' diff --git a/.azuredevops/modulePipelines/ms.eventgrid.topics.yml b/.azuredevops/modulePipelines/ms.eventgrid.topics.yml index e669f6e584..84e81acefd 100644 --- a/.azuredevops/modulePipelines/ms.eventgrid.topics.yml +++ b/.azuredevops/modulePipelines/ms.eventgrid.topics.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.EventGrid/topics' diff --git a/.azuredevops/modulePipelines/ms.eventhub.namespaces.yml b/.azuredevops/modulePipelines/ms.eventhub.namespaces.yml index aa7304858a..4b0ad1399e 100644 --- a/.azuredevops/modulePipelines/ms.eventhub.namespaces.yml +++ b/.azuredevops/modulePipelines/ms.eventhub.namespaces.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.EventHub/namespaces' diff --git a/.azuredevops/modulePipelines/ms.healthbot.healthbots.yml b/.azuredevops/modulePipelines/ms.healthbot.healthbots.yml index eaf9c9bf7f..0b8d5bff4f 100644 --- a/.azuredevops/modulePipelines/ms.healthbot.healthbots.yml +++ b/.azuredevops/modulePipelines/ms.healthbot.healthbots.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.HealthBot/healthBots' diff --git a/.azuredevops/modulePipelines/ms.insights.actiongroups.yml b/.azuredevops/modulePipelines/ms.insights.actiongroups.yml index 22511acc32..d42ad000ab 100644 --- a/.azuredevops/modulePipelines/ms.insights.actiongroups.yml +++ b/.azuredevops/modulePipelines/ms.insights.actiongroups.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Insights/actionGroups' diff --git a/.azuredevops/modulePipelines/ms.insights.activitylogalerts.yml b/.azuredevops/modulePipelines/ms.insights.activitylogalerts.yml index dcbeacfd1a..6bd018ed0e 100644 --- a/.azuredevops/modulePipelines/ms.insights.activitylogalerts.yml +++ b/.azuredevops/modulePipelines/ms.insights.activitylogalerts.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Insights/activityLogAlerts' diff --git a/.azuredevops/modulePipelines/ms.insights.components.yml b/.azuredevops/modulePipelines/ms.insights.components.yml index fdd859571c..5de98773d1 100644 --- a/.azuredevops/modulePipelines/ms.insights.components.yml +++ b/.azuredevops/modulePipelines/ms.insights.components.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Insights/components' diff --git a/.azuredevops/modulePipelines/ms.insights.diagnosticsettings.yml b/.azuredevops/modulePipelines/ms.insights.diagnosticsettings.yml index 24f25fc544..8861693389 100644 --- a/.azuredevops/modulePipelines/ms.insights.diagnosticsettings.yml +++ b/.azuredevops/modulePipelines/ms.insights.diagnosticsettings.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Insights/diagnosticSettings' diff --git a/.azuredevops/modulePipelines/ms.insights.metricalerts.yml b/.azuredevops/modulePipelines/ms.insights.metricalerts.yml index 4450a58b9c..0cad4d32b8 100644 --- a/.azuredevops/modulePipelines/ms.insights.metricalerts.yml +++ b/.azuredevops/modulePipelines/ms.insights.metricalerts.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Insights/metricAlerts' diff --git a/.azuredevops/modulePipelines/ms.insights.privatelinkscopes.yml b/.azuredevops/modulePipelines/ms.insights.privatelinkscopes.yml index 7233f2dc58..f25a2b9c4f 100644 --- a/.azuredevops/modulePipelines/ms.insights.privatelinkscopes.yml +++ b/.azuredevops/modulePipelines/ms.insights.privatelinkscopes.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Insights/privateLinkScopes' diff --git a/.azuredevops/modulePipelines/ms.insights.scheduledqueryrules.yml b/.azuredevops/modulePipelines/ms.insights.scheduledqueryrules.yml index 056be441a7..8a893c6408 100644 --- a/.azuredevops/modulePipelines/ms.insights.scheduledqueryrules.yml +++ b/.azuredevops/modulePipelines/ms.insights.scheduledqueryrules.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Insights/scheduledQueryRules' diff --git a/.azuredevops/modulePipelines/ms.keyvault.vaults.yml b/.azuredevops/modulePipelines/ms.keyvault.vaults.yml index 4c0abce324..81b67151e6 100644 --- a/.azuredevops/modulePipelines/ms.keyvault.vaults.yml +++ b/.azuredevops/modulePipelines/ms.keyvault.vaults.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.KeyVault/vaults' diff --git a/.azuredevops/modulePipelines/ms.logic.workflows.yml b/.azuredevops/modulePipelines/ms.logic.workflows.yml index 9970d4b3b6..cad3393d07 100644 --- a/.azuredevops/modulePipelines/ms.logic.workflows.yml +++ b/.azuredevops/modulePipelines/ms.logic.workflows.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Logic/workflows' diff --git a/.azuredevops/modulePipelines/ms.machinelearningservices.workspaces.yml b/.azuredevops/modulePipelines/ms.machinelearningservices.workspaces.yml index 054a94242d..326a70855a 100644 --- a/.azuredevops/modulePipelines/ms.machinelearningservices.workspaces.yml +++ b/.azuredevops/modulePipelines/ms.machinelearningservices.workspaces.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.MachineLearningServices/workspaces' diff --git a/.azuredevops/modulePipelines/ms.managedidentity.userassignedidentities.yml b/.azuredevops/modulePipelines/ms.managedidentity.userassignedidentities.yml index 3591f61d88..c51bee014f 100644 --- a/.azuredevops/modulePipelines/ms.managedidentity.userassignedidentities.yml +++ b/.azuredevops/modulePipelines/ms.managedidentity.userassignedidentities.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.ManagedIdentity/userAssignedIdentities' diff --git a/.azuredevops/modulePipelines/ms.managedservices.registrationdefinitions.yml b/.azuredevops/modulePipelines/ms.managedservices.registrationdefinitions.yml index fb37fc410c..bfd8a7829a 100644 --- a/.azuredevops/modulePipelines/ms.managedservices.registrationdefinitions.yml +++ b/.azuredevops/modulePipelines/ms.managedservices.registrationdefinitions.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.ManagedServices/registrationDefinitions' diff --git a/.azuredevops/modulePipelines/ms.management.managementgroups.yml b/.azuredevops/modulePipelines/ms.management.managementgroups.yml index 2caeb40d01..d4f1be5a6e 100644 --- a/.azuredevops/modulePipelines/ms.management.managementgroups.yml +++ b/.azuredevops/modulePipelines/ms.management.managementgroups.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Management/managementGroups' diff --git a/.azuredevops/modulePipelines/ms.netapp.netappaccounts.yml b/.azuredevops/modulePipelines/ms.netapp.netappaccounts.yml index 39e2aa6fed..23625e0558 100644 --- a/.azuredevops/modulePipelines/ms.netapp.netappaccounts.yml +++ b/.azuredevops/modulePipelines/ms.netapp.netappaccounts.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.NetApp/netAppAccounts' diff --git a/.azuredevops/modulePipelines/ms.network.applicationgateways.yml b/.azuredevops/modulePipelines/ms.network.applicationgateways.yml index 3d6a17392a..dd3a99b6af 100644 --- a/.azuredevops/modulePipelines/ms.network.applicationgateways.yml +++ b/.azuredevops/modulePipelines/ms.network.applicationgateways.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/applicationGateways' diff --git a/.azuredevops/modulePipelines/ms.network.applicationsecuritygroups.yml b/.azuredevops/modulePipelines/ms.network.applicationsecuritygroups.yml index d8011cbd9c..fee389a364 100644 --- a/.azuredevops/modulePipelines/ms.network.applicationsecuritygroups.yml +++ b/.azuredevops/modulePipelines/ms.network.applicationsecuritygroups.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/applicationSecurityGroups' diff --git a/.azuredevops/modulePipelines/ms.network.azurefirewalls.yml b/.azuredevops/modulePipelines/ms.network.azurefirewalls.yml index dbed58d3ca..46ed556725 100644 --- a/.azuredevops/modulePipelines/ms.network.azurefirewalls.yml +++ b/.azuredevops/modulePipelines/ms.network.azurefirewalls.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/azureFirewalls' diff --git a/.azuredevops/modulePipelines/ms.network.bastionhosts.yml b/.azuredevops/modulePipelines/ms.network.bastionhosts.yml index 885d800f63..f5fbdd5f2e 100644 --- a/.azuredevops/modulePipelines/ms.network.bastionhosts.yml +++ b/.azuredevops/modulePipelines/ms.network.bastionhosts.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/bastionHosts' diff --git a/.azuredevops/modulePipelines/ms.network.connections.yml b/.azuredevops/modulePipelines/ms.network.connections.yml index 2637d52139..d59cc87d10 100644 --- a/.azuredevops/modulePipelines/ms.network.connections.yml +++ b/.azuredevops/modulePipelines/ms.network.connections.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/connections' diff --git a/.azuredevops/modulePipelines/ms.network.ddosprotectionplans.yml b/.azuredevops/modulePipelines/ms.network.ddosprotectionplans.yml index 314ebd5bfb..77ac5fed93 100644 --- a/.azuredevops/modulePipelines/ms.network.ddosprotectionplans.yml +++ b/.azuredevops/modulePipelines/ms.network.ddosprotectionplans.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/ddosProtectionPlans' diff --git a/.azuredevops/modulePipelines/ms.network.expressroutecircuits.yml b/.azuredevops/modulePipelines/ms.network.expressroutecircuits.yml index 79c42c9f8d..fc1522a0c8 100644 --- a/.azuredevops/modulePipelines/ms.network.expressroutecircuits.yml +++ b/.azuredevops/modulePipelines/ms.network.expressroutecircuits.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/expressRouteCircuits' diff --git a/.azuredevops/modulePipelines/ms.network.ipgroups.yml b/.azuredevops/modulePipelines/ms.network.ipgroups.yml index 875aa02da6..7f577a8a0a 100644 --- a/.azuredevops/modulePipelines/ms.network.ipgroups.yml +++ b/.azuredevops/modulePipelines/ms.network.ipgroups.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/ipGroups' diff --git a/.azuredevops/modulePipelines/ms.network.loadbalancers.yml b/.azuredevops/modulePipelines/ms.network.loadbalancers.yml index 8f40577d3e..28854fb9e9 100644 --- a/.azuredevops/modulePipelines/ms.network.loadbalancers.yml +++ b/.azuredevops/modulePipelines/ms.network.loadbalancers.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/loadBalancers' diff --git a/.azuredevops/modulePipelines/ms.network.localnetworkgateways.yml b/.azuredevops/modulePipelines/ms.network.localnetworkgateways.yml index 8a704de92c..f1a8c83a0e 100644 --- a/.azuredevops/modulePipelines/ms.network.localnetworkgateways.yml +++ b/.azuredevops/modulePipelines/ms.network.localnetworkgateways.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/localNetworkGateways' diff --git a/.azuredevops/modulePipelines/ms.network.natgateways.yml b/.azuredevops/modulePipelines/ms.network.natgateways.yml index 9ebca1a384..993af87743 100644 --- a/.azuredevops/modulePipelines/ms.network.natgateways.yml +++ b/.azuredevops/modulePipelines/ms.network.natgateways.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/natGateways' diff --git a/.azuredevops/modulePipelines/ms.network.networksecuritygroups.yml b/.azuredevops/modulePipelines/ms.network.networksecuritygroups.yml index 93c1235465..f7578a4601 100644 --- a/.azuredevops/modulePipelines/ms.network.networksecuritygroups.yml +++ b/.azuredevops/modulePipelines/ms.network.networksecuritygroups.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/networkSecurityGroups' diff --git a/.azuredevops/modulePipelines/ms.network.networkwatchers.yml b/.azuredevops/modulePipelines/ms.network.networkwatchers.yml index 77b1c3f4cc..3d10785508 100644 --- a/.azuredevops/modulePipelines/ms.network.networkwatchers.yml +++ b/.azuredevops/modulePipelines/ms.network.networkwatchers.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/networkWatchers' diff --git a/.azuredevops/modulePipelines/ms.network.privatednszones.yml b/.azuredevops/modulePipelines/ms.network.privatednszones.yml index 139e9ae737..765eea6573 100644 --- a/.azuredevops/modulePipelines/ms.network.privatednszones.yml +++ b/.azuredevops/modulePipelines/ms.network.privatednszones.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/privateDnsZones' diff --git a/.azuredevops/modulePipelines/ms.network.privateendpoints.yml b/.azuredevops/modulePipelines/ms.network.privateendpoints.yml index b36646cd20..1bc2908249 100644 --- a/.azuredevops/modulePipelines/ms.network.privateendpoints.yml +++ b/.azuredevops/modulePipelines/ms.network.privateendpoints.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/privateEndpoints' diff --git a/.azuredevops/modulePipelines/ms.network.publicipaddresses.yml b/.azuredevops/modulePipelines/ms.network.publicipaddresses.yml index 2de38b2674..60ce0b9049 100644 --- a/.azuredevops/modulePipelines/ms.network.publicipaddresses.yml +++ b/.azuredevops/modulePipelines/ms.network.publicipaddresses.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/publicIPAddresses' diff --git a/.azuredevops/modulePipelines/ms.network.publicipprefixes.yml b/.azuredevops/modulePipelines/ms.network.publicipprefixes.yml index 25379822a1..a4982fe1fe 100644 --- a/.azuredevops/modulePipelines/ms.network.publicipprefixes.yml +++ b/.azuredevops/modulePipelines/ms.network.publicipprefixes.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/publicIPPrefixes' diff --git a/.azuredevops/modulePipelines/ms.network.routetables.yml b/.azuredevops/modulePipelines/ms.network.routetables.yml index 6e05f381e2..64d4093fda 100644 --- a/.azuredevops/modulePipelines/ms.network.routetables.yml +++ b/.azuredevops/modulePipelines/ms.network.routetables.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/routeTables' diff --git a/.azuredevops/modulePipelines/ms.network.trafficmanagerprofiles.yml b/.azuredevops/modulePipelines/ms.network.trafficmanagerprofiles.yml index 22ee91db40..47253c81b2 100644 --- a/.azuredevops/modulePipelines/ms.network.trafficmanagerprofiles.yml +++ b/.azuredevops/modulePipelines/ms.network.trafficmanagerprofiles.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/trafficmanagerprofiles' diff --git a/.azuredevops/modulePipelines/ms.network.virtualnetworkgateways.yml b/.azuredevops/modulePipelines/ms.network.virtualnetworkgateways.yml index 6f3623ccf4..afb47d442c 100644 --- a/.azuredevops/modulePipelines/ms.network.virtualnetworkgateways.yml +++ b/.azuredevops/modulePipelines/ms.network.virtualnetworkgateways.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/virtualNetworkGateways' diff --git a/.azuredevops/modulePipelines/ms.network.virtualnetworks.yml b/.azuredevops/modulePipelines/ms.network.virtualnetworks.yml index 2231134453..e965cc48aa 100644 --- a/.azuredevops/modulePipelines/ms.network.virtualnetworks.yml +++ b/.azuredevops/modulePipelines/ms.network.virtualnetworks.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/virtualNetworks' diff --git a/.azuredevops/modulePipelines/ms.network.virtualwans.yml b/.azuredevops/modulePipelines/ms.network.virtualwans.yml index 2ca6d848a2..b997e32f19 100644 --- a/.azuredevops/modulePipelines/ms.network.virtualwans.yml +++ b/.azuredevops/modulePipelines/ms.network.virtualwans.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Network/virtualWans' diff --git a/.azuredevops/modulePipelines/ms.operationalinsights.workspaces.yml b/.azuredevops/modulePipelines/ms.operationalinsights.workspaces.yml index 44bd5568de..2357f84e9d 100644 --- a/.azuredevops/modulePipelines/ms.operationalinsights.workspaces.yml +++ b/.azuredevops/modulePipelines/ms.operationalinsights.workspaces.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.OperationalInsights/workspaces' diff --git a/.azuredevops/modulePipelines/ms.recoveryservices.vaults.yml b/.azuredevops/modulePipelines/ms.recoveryservices.vaults.yml index 7415ea02fc..63ef6ea2fa 100644 --- a/.azuredevops/modulePipelines/ms.recoveryservices.vaults.yml +++ b/.azuredevops/modulePipelines/ms.recoveryservices.vaults.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.RecoveryServices/vaults' diff --git a/.azuredevops/modulePipelines/ms.resources.deploymentscripts.yml b/.azuredevops/modulePipelines/ms.resources.deploymentscripts.yml index 1ca758f727..a5c210f7cd 100644 --- a/.azuredevops/modulePipelines/ms.resources.deploymentscripts.yml +++ b/.azuredevops/modulePipelines/ms.resources.deploymentscripts.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Resources/deploymentScripts' diff --git a/.azuredevops/modulePipelines/ms.resources.resourcegroups.yml b/.azuredevops/modulePipelines/ms.resources.resourcegroups.yml index 85dd49c3fb..b0bf8ca75c 100644 --- a/.azuredevops/modulePipelines/ms.resources.resourcegroups.yml +++ b/.azuredevops/modulePipelines/ms.resources.resourcegroups.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Resources/resourceGroups' diff --git a/.azuredevops/modulePipelines/ms.security.azuresecuritycenter.yml b/.azuredevops/modulePipelines/ms.security.azuresecuritycenter.yml index c4f3c9cf6e..2bd900bd7d 100644 --- a/.azuredevops/modulePipelines/ms.security.azuresecuritycenter.yml +++ b/.azuredevops/modulePipelines/ms.security.azuresecuritycenter.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Security/azureSecurityCenter' diff --git a/.azuredevops/modulePipelines/ms.servicebus.namespaces.yml b/.azuredevops/modulePipelines/ms.servicebus.namespaces.yml index c388e26c8a..2929e7bf24 100644 --- a/.azuredevops/modulePipelines/ms.servicebus.namespaces.yml +++ b/.azuredevops/modulePipelines/ms.servicebus.namespaces.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.ServiceBus/namespaces' diff --git a/.azuredevops/modulePipelines/ms.sql.managedinstances.yml b/.azuredevops/modulePipelines/ms.sql.managedinstances.yml index 2554513966..5f3ca3d79a 100644 --- a/.azuredevops/modulePipelines/ms.sql.managedinstances.yml +++ b/.azuredevops/modulePipelines/ms.sql.managedinstances.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Sql/managedInstances' diff --git a/.azuredevops/modulePipelines/ms.sql.servers.yml b/.azuredevops/modulePipelines/ms.sql.servers.yml index 46591fddfc..cc0d7a23ff 100644 --- a/.azuredevops/modulePipelines/ms.sql.servers.yml +++ b/.azuredevops/modulePipelines/ms.sql.servers.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Sql/servers' diff --git a/.azuredevops/modulePipelines/ms.storage.storageaccounts.yml b/.azuredevops/modulePipelines/ms.storage.storageaccounts.yml index e39450f0db..3661b53f24 100644 --- a/.azuredevops/modulePipelines/ms.storage.storageaccounts.yml +++ b/.azuredevops/modulePipelines/ms.storage.storageaccounts.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Storage/storageAccounts' diff --git a/.azuredevops/modulePipelines/ms.virtualmachineimages.imagetemplates.yml b/.azuredevops/modulePipelines/ms.virtualmachineimages.imagetemplates.yml index cca7f4643b..e8d8fbc6f1 100644 --- a/.azuredevops/modulePipelines/ms.virtualmachineimages.imagetemplates.yml +++ b/.azuredevops/modulePipelines/ms.virtualmachineimages.imagetemplates.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.VirtualMachineImages/imageTemplates' diff --git a/.azuredevops/modulePipelines/ms.web.connections.yml b/.azuredevops/modulePipelines/ms.web.connections.yml index 882fd6b451..3b1ac77510 100644 --- a/.azuredevops/modulePipelines/ms.web.connections.yml +++ b/.azuredevops/modulePipelines/ms.web.connections.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Web/connections' diff --git a/.azuredevops/modulePipelines/ms.web.hostingenvironments.yml b/.azuredevops/modulePipelines/ms.web.hostingenvironments.yml index 404abae891..b146a4840f 100644 --- a/.azuredevops/modulePipelines/ms.web.hostingenvironments.yml +++ b/.azuredevops/modulePipelines/ms.web.hostingenvironments.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Web/hostingEnvironments' diff --git a/.azuredevops/modulePipelines/ms.web.serverfarms.yml b/.azuredevops/modulePipelines/ms.web.serverfarms.yml index 1f917c3ff1..7266de9509 100644 --- a/.azuredevops/modulePipelines/ms.web.serverfarms.yml +++ b/.azuredevops/modulePipelines/ms.web.serverfarms.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Web/serverfarms' diff --git a/.azuredevops/modulePipelines/ms.web.sites.yml b/.azuredevops/modulePipelines/ms.web.sites.yml index 2ae82227e5..2f7d03e71c 100644 --- a/.azuredevops/modulePipelines/ms.web.sites.yml +++ b/.azuredevops/modulePipelines/ms.web.sites.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.Web/sites' diff --git a/docs/wiki/PipelinesDesign.md b/docs/wiki/PipelinesDesign.md index 46c64c58c2..b929538e64 100644 --- a/docs/wiki/PipelinesDesign.md +++ b/docs/wiki/PipelinesDesign.md @@ -316,7 +316,7 @@ The variable group can be set up under _Pipelines: Library_ as described [here]( ```yaml variables: - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' ``` ### **Azure DevOps Component:** Variable file @@ -383,14 +383,14 @@ While they look very similar they have specific areas in which they differ: | Variable | Example | | - | - | | Reference to the [shared variable file](#azure-devops-component-variable-file) | `- template: '/.azuredevops/pipelineVariables/global.variables.yml'` | - | Reference to the [variable group](#azure-devops-component-variable-group) with the platform secrets | `- group: Platform-Tokens` | + | Reference to the [variable group](#azure-devops-component-variable-group) with the platform secrets | `- group: PLATFORM_VARIABLES` | | Relative path to the module folder | - name: modulePath

  value: '/arm/Microsoft.AnalysisServices/servers' | Full example: ```yaml variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/arm/Microsoft.AnalysisServices/servers' ``` diff --git a/utilities/tools/AzureDevOps/src/devOpsPipelineTemplate.yml b/utilities/tools/AzureDevOps/src/devOpsPipelineTemplate.yml index 9b22d85453..18a4fcfda3 100644 --- a/utilities/tools/AzureDevOps/src/devOpsPipelineTemplate.yml +++ b/utilities/tools/AzureDevOps/src/devOpsPipelineTemplate.yml @@ -33,7 +33,7 @@ trigger: variables: - template: '/.azuredevops/pipelineVariables/global.variables.yml' - - group: 'Platform-Tokens' + - group: 'PLATFORM_VARIABLES' - name: modulePath value: '/' From 36f91c0a41e00834ae700618edd88e908a326348 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 11:24:27 +0100 Subject: [PATCH 075/112] Update to latest --- docs/wiki/PipelinesUsage.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/wiki/PipelinesUsage.md b/docs/wiki/PipelinesUsage.md index db5d1d1d40..fbc9192352 100644 --- a/docs/wiki/PipelinesUsage.md +++ b/docs/wiki/PipelinesUsage.md @@ -90,7 +90,8 @@ Depending on the pipeline you selected you may have additional input parameters ### Register a pipeline -To register a workflow in _GitHub_ you have to create the workflow file (`.yml`) and store it inside the folder `.github/workflows`. Once merged to [main\|master], GitHub will automatically list the new workflow in the 'Actions' tab. +To register a workflow in _GitHub_ you have to create the workflow file (`.yml`) and store it inside the folder `.github/workflows`. +> ***Note:*** Once merged to [main\|master], GitHub will automatically list the new workflow in the 'Actions' tab. ## Azure DevOps pipelines From dff2ab76b2b1e70381afc7f21d0e02d2ce5b3cf0 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 11:33:46 +0100 Subject: [PATCH 076/112] Update to latest --- docs/wiki/GettingStarted.md | 2 ++ docs/wiki/PipelinesDesign.md | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/wiki/GettingStarted.md b/docs/wiki/GettingStarted.md index 4ee2f8862d..8662ca4aaf 100644 --- a/docs/wiki/GettingStarted.md +++ b/docs/wiki/GettingStarted.md @@ -131,6 +131,8 @@ The platform principal is used to perform actions in Azure using a service princ If you want to be on the save side you can assign _Owner_ permissions to your principal on the management group scope. +> ***Note:*** By default, we're using this service principal's object ID (i.e. principal ID) as the value of the `deploymentSpId` [token](./ParameterFileTokens) to be used to test e.g. RBAC assignments. + ### Dependencies As the modules we test often times have dependencies to other services, we created a pipeline to deploys several standard services like VirtualNetworks and KeyVaults (alongside dummy secrets) for the modules to use. This _dependency_ pipeline should be prepared and executed before you start running any pipelines on your own. In case you need to rename any services there (for example because a certain globally unique resource name was already taken) make sure to update any references to this name in the module parameter files. You can find further details about this pipeline [here](./TestingDesign#Module-Dependencies). diff --git a/docs/wiki/PipelinesDesign.md b/docs/wiki/PipelinesDesign.md index b929538e64..87c5bb4751 100644 --- a/docs/wiki/PipelinesDesign.md +++ b/docs/wiki/PipelinesDesign.md @@ -26,7 +26,7 @@ This section gives you an overview of the design principals the pipelines follow - [Wiki pipeline](#wiki-pipeline) - [DevOps-Tool-specific considerations](#devops-tool-specific-considerations) - [GitHub Workflows](#github-workflows) - - [Component: GitHub secret](#github-component-github-secret) + - [Component: GitHub secret](#github-component-github-secrets) - [Component: Variable file](#github-component-variable-file) - [Component: Composite actions](#github-component-composite-actions) - [Component: Workflows](#github-component-workflows) From 3b14272f741f6a002b7f8ca6fb3a7832b9aef8df Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 11:36:20 +0100 Subject: [PATCH 077/112] Update to latest --- docs/wiki/GettingStarted.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/GettingStarted.md b/docs/wiki/GettingStarted.md index 8662ca4aaf..9034bb921f 100644 --- a/docs/wiki/GettingStarted.md +++ b/docs/wiki/GettingStarted.md @@ -129,7 +129,7 @@ The platform principal is used to perform actions in Azure using a service princ - To test **RBAC** with any of the modules you need at least _User Access Administrator_ permissions on the target scope - To test **subscription-level deployments** you need at least _Contributor_ permissions on the target scope -If you want to be on the save side you can assign _Owner_ permissions to your principal on the management group scope. +If you want to be on the safe side you can assign _Owner_ permissions to your principal on the management group scope. > ***Note:*** By default, we're using this service principal's object ID (i.e. principal ID) as the value of the `deploymentSpId` [token](./ParameterFileTokens) to be used to test e.g. RBAC assignments. From de0d2aef3e00fea5ce2ccc70b53356e37c4a1dbd Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 11:38:04 +0100 Subject: [PATCH 078/112] Update to latest --- docs/wiki/GettingStarted.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/GettingStarted.md b/docs/wiki/GettingStarted.md index 9034bb921f..797e5df272 100644 --- a/docs/wiki/GettingStarted.md +++ b/docs/wiki/GettingStarted.md @@ -106,7 +106,7 @@ Depending on the pipelines you use (e.g. GitHub workflows vs. Azure DevOps pipel ### Fork the repository -If you want to have a linked clone of the source repository in your own GitHub account, you can fork the repository instead. Still is also the preferred method to contribute back to this repository. +If you want to have a linked clone of the source repository in your own GitHub account, you can fork the repository instead. This is also the preferred method if the intent is to contribute back to the CARML repository. To fork the repository you can simply click on the `Fork` button on the top right of the repository site. You can then select the Account you want to fork the repository to and are good to go. From 9412ae3d4ccc792caa449a84a5717f16bfca3509 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 11:40:00 +0100 Subject: [PATCH 079/112] Update to latest --- docs/wiki/GettingStarted.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/GettingStarted.md b/docs/wiki/GettingStarted.md index 797e5df272..c3573a9cd3 100644 --- a/docs/wiki/GettingStarted.md +++ b/docs/wiki/GettingStarted.md @@ -124,7 +124,7 @@ Please refer to [this list][AzureNames] to check which services have a global sc ### Platform principal -The platform principal is used to perform actions in Azure using a service principal. Depending on what you want to want to execute, different permissions will be required. For example: +The platform [service principal](https://docs.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principals#service-principal-object) is used to perform actions in Azure using a service principal. Depending on what you want to want to execute, different permissions will be required. For example: - To test the **Management Group** module, your principal needs at least Contributor permissions on a management group - To test **RBAC** with any of the modules you need at least _User Access Administrator_ permissions on the target scope - To test **subscription-level deployments** you need at least _Contributor_ permissions on the target scope From 388c8d16902bbb5569c7d7d926fb2c833a2b052d Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 11:46:30 +0100 Subject: [PATCH 080/112] Update to latest --- docs/wiki/GettingStarted.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/wiki/GettingStarted.md b/docs/wiki/GettingStarted.md index c3573a9cd3..a0cafdd08e 100644 --- a/docs/wiki/GettingStarted.md +++ b/docs/wiki/GettingStarted.md @@ -125,11 +125,11 @@ Please refer to [this list][AzureNames] to check which services have a global sc ### Platform principal The platform [service principal](https://docs.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principals#service-principal-object) is used to perform actions in Azure using a service principal. Depending on what you want to want to execute, different permissions will be required. For example: -- To test the **Management Group** module, your principal needs at least Contributor permissions on a management group -- To test **RBAC** with any of the modules you need at least _User Access Administrator_ permissions on the target scope -- To test **subscription-level deployments** you need at least _Contributor_ permissions on the target scope +- To test the **Management Group** module, your principal needs at least _[Contributor](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#contributor)_ permissions on a management group +- To test **RBAC** with any of the modules you need at least _[User Access Administrator](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#user-access-administrator)_ permissions on the target scope +- To test **subscription-level deployments** you need at least _[Contributor](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#contributor)_ permissions on the target scope -If you want to be on the safe side you can assign _Owner_ permissions to your principal on the management group scope. +If you want to be on the safe side you can assign _[Owner](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#owner)_ permissions to your principal on the management group scope. > ***Note:*** By default, we're using this service principal's object ID (i.e. principal ID) as the value of the `deploymentSpId` [token](./ParameterFileTokens) to be used to test e.g. RBAC assignments. From ace72207d01290f4530251d794f1dcd17f8c6cf8 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 11:53:35 +0100 Subject: [PATCH 081/112] Update to latest --- docs/wiki/GettingStarted.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/wiki/GettingStarted.md b/docs/wiki/GettingStarted.md index a0cafdd08e..9edbb72252 100644 --- a/docs/wiki/GettingStarted.md +++ b/docs/wiki/GettingStarted.md @@ -135,7 +135,9 @@ If you want to be on the safe side you can assign _[Owner](https://docs.microsof ### Dependencies -As the modules we test often times have dependencies to other services, we created a pipeline to deploys several standard services like VirtualNetworks and KeyVaults (alongside dummy secrets) for the modules to use. This _dependency_ pipeline should be prepared and executed before you start running any pipelines on your own. In case you need to rename any services there (for example because a certain globally unique resource name was already taken) make sure to update any references to this name in the module parameter files. You can find further details about this pipeline [here](./TestingDesign#Module-Dependencies). +As the modules we test oftentimes have dependencies to other services, we created a pipeline to deploys several standard services like VirtualNetworks and KeyVaults (alongside dummy secrets) for the modules to use. This _dependency_ pipeline should be prepared and executed before you start running any pipelines on your own. In case you need to rename any services there (for example because a certain globally unique resource name was already taken) make sure to update any references to this name in the module parameter files. You can find further details about this pipeline [here](./TestingDesign#Module-Dependencies). + +> ***Note:*** If you want to contribute back to the _CARML_ repository, make sure to not include your local dependency-names in the PR. Instead, cherry-pick the changes you want to contribute (for example in a dedicated branch) and open a Pull Request for those. ### Platform variables & secrets From a5deea67347f5caa7aec908af0f5141ac0972b8a Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 11:57:36 +0100 Subject: [PATCH 082/112] Update to latest --- docs/wiki/PipelinesDesign.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/PipelinesDesign.md b/docs/wiki/PipelinesDesign.md index 87c5bb4751..e59bc3a1fe 100644 --- a/docs/wiki/PipelinesDesign.md +++ b/docs/wiki/PipelinesDesign.md @@ -126,7 +126,7 @@ There are several concepts that are shared among the phases. Most notably For both the [simulated deployment validation](#simulated-deployment-validation) as well as the [test deployment](#test-deployment) we should account for the following prerequisites: - A _"Sandbox"_ or _"Engineering"_ **validation subscription** (in Azure) has to be used to test if the modules (or other components) are deployable. This subscription must not have connectivity to any on-premises or other Azure networks. -- An Azure Active Directory Service Principal (AAD SPN) to authenticate to the validation subscription and run the test deployments of the modules. +- An Azure Active Directory [service principal](https://docs.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principals#service-principal-object) (AAD SPN) to authenticate to the validation subscription and run the test deployments of the modules. ### Pipeline secrets From ba0ab41311cda7dfe462f51f9e9cad04ba9282e3 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 11:58:25 +0100 Subject: [PATCH 083/112] Update to latest --- docs/wiki/PipelinesDesign.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/PipelinesDesign.md b/docs/wiki/PipelinesDesign.md index e59bc3a1fe..8efdd1317d 100644 --- a/docs/wiki/PipelinesDesign.md +++ b/docs/wiki/PipelinesDesign.md @@ -219,7 +219,7 @@ Depending on what DevOps tool you want to use to host the platform you will find ## GitHub Workflows -GitHub actions & workflows are the CI/CD solution provided by GitHub. To get the platform going, we use the following elements: +[GitHub actions & workflows](https://docs.github.com/en/actions) are the CI/CD solution provided by GitHub. To get the platform going, we use the following elements: - **[GitHub secrets:](#github-component-github-secrets)** We leverage GitHub repository secrets to store central and potentially sensitive information we need to perform deployments and other platform specific actions - **[Variable file:](#github-component-variable-file)** This file contains the configuration for all module pipelines in this repository. - **[Composite actions:](#github-component-composite-actions)** Composite actions bundle a set of actions for a specific purpose together. They are referenced by module pipelines. From e9feaa93cc3639dc65fe006a9864649b3685415d Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 11:59:54 +0100 Subject: [PATCH 084/112] Update to latest --- docs/wiki/PipelinesDesign.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/PipelinesDesign.md b/docs/wiki/PipelinesDesign.md index 8efdd1317d..6a1604ed37 100644 --- a/docs/wiki/PipelinesDesign.md +++ b/docs/wiki/PipelinesDesign.md @@ -253,7 +253,7 @@ We use several composite actions to perform various tasks shared by our module w | **validateModuleDeploy:** | This action performs the [simulated deployment](#simulated-deployment-validation) using a provided parameter file. | | **deployModule:** | This action performs an [actual deployment](#test-deploy) to Azure using a provided parameter file. Once a deployment ran it [removes](#removal) the resource | | **publishModule:** | This action is capable of [publishing](#publish) the given template to a location specified in the pipeline [variable file](#github-component-variable-file). | -| **getWorkflowInput:** | This action implements allows us to fetch 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. | +| **getWorkflowInput:** | This action allows us to fetch 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. | ### **GitHub Component:** Workflows From 3193ad668438a10483a99163228e2e0b2999d05f Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 12:01:55 +0100 Subject: [PATCH 085/112] Update to latest --- docs/wiki/PipelinesDesign.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/PipelinesDesign.md b/docs/wiki/PipelinesDesign.md index 6a1604ed37..9c0fe763f8 100644 --- a/docs/wiki/PipelinesDesign.md +++ b/docs/wiki/PipelinesDesign.md @@ -253,7 +253,7 @@ We use several composite actions to perform various tasks shared by our module w | **validateModuleDeploy:** | This action performs the [simulated deployment](#simulated-deployment-validation) using a provided parameter file. | | **deployModule:** | This action performs an [actual deployment](#test-deploy) to Azure using a provided parameter file. Once a deployment ran it [removes](#removal) the resource | | **publishModule:** | This action is capable of [publishing](#publish) the given template to a location specified in the pipeline [variable file](#github-component-variable-file). | -| **getWorkflowInput:** | This action allows us to fetch 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. | +| **getWorkflowInput:** | This action allows us to fetch 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`. | ### **GitHub Component:** Workflows From 92af432c8e84cba0735af63c91d3b95ea393989d Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 12:04:51 +0100 Subject: [PATCH 086/112] Update to latest --- docs/wiki/PipelinesDesign.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/PipelinesDesign.md b/docs/wiki/PipelinesDesign.md index 9c0fe763f8..6262f49dfb 100644 --- a/docs/wiki/PipelinesDesign.md +++ b/docs/wiki/PipelinesDesign.md @@ -343,7 +343,7 @@ To keep the amount of pipeline code at a minimum we make heavy use of pipeline t | Template Name | Description | | - | - | | **module.jobs.validate.yml** | This template perform all [static tests](#static-module-validation) for a module using Pester. | -| **module.jobs.deploy.yml** | This template performs a [test deployment](#simulated-deployment-validation) followed by an [actual deployment](#test-deploy) to Azure using a provided parameter file. Once a deployment ran it [removes](#removal) the resource | +| **module.jobs.deploy.yml** | This template performs a [test deployment](#simulated-deployment-validation) followed by an [actual deployment](#test-deploy) to Azure using a provided parameter file. Once a deployment completed it [removes](#removal) the resource | | **module.jobs.publish.yml** | This template is capable of [publishing](#publish) the given template to a location specified in the pipeline [variable file](#azure-devops-component-variable-file) | Each file can be found in path `.azuredevops/pipelineTemplates`. From e61b9caa68dc9280ddb1bc7688936eb1fb51c9d9 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 12:05:33 +0100 Subject: [PATCH 087/112] Update to latest --- docs/wiki/PipelinesDesign.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/PipelinesDesign.md b/docs/wiki/PipelinesDesign.md index 6262f49dfb..afeda1b7b1 100644 --- a/docs/wiki/PipelinesDesign.md +++ b/docs/wiki/PipelinesDesign.md @@ -259,7 +259,7 @@ We use several composite actions to perform various tasks shared by our module w These are the individual end-to-end workflows we have for each module. Leveraging the [composite actions](#github-component-composite-actions) described before, they orchestrate the testing & publishing of their module. -Comparing multiple workflows you'll notice they are almost identically, yet differ in a few important areas: +Comparing multiple workflows you'll notice they are almost identical, yet differ in a few important areas: - The ***path filters*** of the workflow trigger: | Purpose | Example | From 94e3003bb8f909a16eea33096cab646b6a511889 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 12:09:53 +0100 Subject: [PATCH 088/112] Update to latest --- docs/wiki/PipelinesDesign.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/PipelinesDesign.md b/docs/wiki/PipelinesDesign.md index afeda1b7b1..79481d1c40 100644 --- a/docs/wiki/PipelinesDesign.md +++ b/docs/wiki/PipelinesDesign.md @@ -261,7 +261,7 @@ These are the individual end-to-end workflows we have for each module. Leveragin Comparing multiple workflows you'll notice they are almost identical, yet differ in a few important areas: -- The ***path filters*** of the workflow trigger: +- The ***[path filters](https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions)*** of the workflow trigger: | Purpose | Example | | - | - | | Include the composite actions | `- '.github/actions/templates/**'` | From 04bdec9da848c7b8370c0e1506ac2362e0800a0d Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 12:13:37 +0100 Subject: [PATCH 089/112] Update to latest --- docs/wiki/PipelinesDesign.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/wiki/PipelinesDesign.md b/docs/wiki/PipelinesDesign.md index 79481d1c40..f376e2a6ee 100644 --- a/docs/wiki/PipelinesDesign.md +++ b/docs/wiki/PipelinesDesign.md @@ -282,10 +282,10 @@ Comparing multiple workflows you'll notice they are almost identical, yet differ ``` - The ***environment variables*** The environment variables are leveraged by the workflow to fundamentally process the module. We need: - | Variable | Example | - | - | - | - | Relative path to the module folder | `modulePath: 'arm/Microsoft.Network/virtualWans'` | - | Relative path to the workflow itself | `'.github/workflows/ms.network.virtualwans.yml'` | + | Variable | Description | Example | + | - | - | - | + | `modulePath` | Relative path to the module folder | `modulePath: 'arm/Microsoft.Network/virtualWans'` | + | `workflowPath` | Relative path to the workflow itself | `workflowPath: '.github/workflows/ms.network.virtualwans.yml'` | Full example ```yaml @@ -380,11 +380,11 @@ While they look very similar they have specific areas in which they differ: > ***Note:*** By the time of this writing, wildcards are temporarily not supported by Azure DevOps - The ***variables*** The variables are leveraged by the pipelines to fundamentally process the module. We need: - | Variable | Example | - | - | - | - | Reference to the [shared variable file](#azure-devops-component-variable-file) | `- template: '/.azuredevops/pipelineVariables/global.variables.yml'` | - | Reference to the [variable group](#azure-devops-component-variable-group) with the platform secrets | `- group: PLATFORM_VARIABLES` | - | Relative path to the module folder | - name: modulePath

  value: '/arm/Microsoft.AnalysisServices/servers' | + | Variable | Description | Example | + | - | - | - | + | `template: (...)` | Reference to the [shared variable file](#azure-devops-component-variable-file) | `- template: '/.azuredevops/pipelineVariables/global.variables.yml'` | + | `group: (...)` | Reference to the [variable group](#azure-devops-component-variable-group) with the platform secrets | `- group: PLATFORM_VARIABLES` | + | `modulePath` | Relative path to the module folder | - name: modulePath

  value: '/arm/Microsoft.AnalysisServices/servers' | Full example: ```yaml From 7d9827bbb02c25fe65ac5d7196896a1740f506d1 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 12:15:35 +0100 Subject: [PATCH 090/112] Update to latest --- docs/wiki/PipelinesDesign.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/PipelinesDesign.md b/docs/wiki/PipelinesDesign.md index f376e2a6ee..dac1eb9a20 100644 --- a/docs/wiki/PipelinesDesign.md +++ b/docs/wiki/PipelinesDesign.md @@ -296,7 +296,7 @@ Comparing multiple workflows you'll notice they are almost identical, yet differ ## Azure DevOps Pipelines -Azure DevOps pipelines are the CI/CD solution provided by Azure DevOps. To get the platform going, we use the following elements: +[Azure DevOps pipelines](https://docs.microsoft.com/en-us/azure/devops/pipelines/get-started/what-is-azure-pipelines?view=azure-devops) are the CI/CD solution provided by Azure DevOps. To enable the CARML platform to function, we use the following components in Azure DevOps: - **[Service connection:](#azure-devops-component-service-connection)** The service connection is a wrapper for the [deployment principal](./GettingStarted#platform-principal) that performs all actions in the target SBX/DEV/TEST subscription - **[Variable group:](#azure-devops-component-variable-group)** Variable groups allow us to store both sensitive as well configuration data securely in Azure DevOps. From 68ee1e00ec60e60328c7d48ed2b0a5d1a63307e0 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 12:20:10 +0100 Subject: [PATCH 091/112] Update to latest --- docs/wiki/PipelinesDesign.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/wiki/PipelinesDesign.md b/docs/wiki/PipelinesDesign.md index dac1eb9a20..39e9ee1651 100644 --- a/docs/wiki/PipelinesDesign.md +++ b/docs/wiki/PipelinesDesign.md @@ -298,11 +298,11 @@ Comparing multiple workflows you'll notice they are almost identical, yet differ [Azure DevOps pipelines](https://docs.microsoft.com/en-us/azure/devops/pipelines/get-started/what-is-azure-pipelines?view=azure-devops) are the CI/CD solution provided by Azure DevOps. To enable the CARML platform to function, we use the following components in Azure DevOps: -- **[Service connection:](#azure-devops-component-service-connection)** The service connection is a wrapper for the [deployment principal](./GettingStarted#platform-principal) that performs all actions in the target SBX/DEV/TEST subscription -- **[Variable group:](#azure-devops-component-variable-group)** Variable groups allow us to store both sensitive as well configuration data securely in Azure DevOps. -- **[Variable file:](#azure-devops-component-variable-file)** The variable file is a version controlled variable file that hosts pipeline configuration data such as the agent pool to use. -- **[Pipeline templates:](#azure-devops-component-pipeline-templates)** Pipeline templates allow us to re-use pipeline logic across multiple referencing pipelines -- **[Pipelines:](#azure-devops-component-pipelines)** The pipelines contain all logic we execute as part of our platform and leverage the _pipeline templates_. +- **[Service connection:](#azure-devops-component-service-connection)** The [service connection](https://docs.microsoft.com/en-us/azure/devops/pipelines/library/service-endpoints?view=azure-devops&tabs=yaml) is a wrapper for the [deployment principal](./GettingStarted#platform-principal) that performs all actions in the target SBX/DEV/TEST subscription +- **[Variable group:](#azure-devops-component-variable-group)** [Variable groups](https://docs.microsoft.com/en-us/azure/devops/pipelines/library/variable-groups?view=azure-devops&tabs=yaml) allow us to store both sensitive as well configuration data securely in Azure DevOps. +- **[Variable file:](#azure-devops-component-variable-file)** The [variable file](https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=example%2Cparameter-schema#variable-templates) is a version controlled variable file that hosts pipeline configuration data such as the agent pool to use. +- **[Pipeline templates:](#azure-devops-component-pipeline-templates)** [Pipeline templates](https://docs.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops) allow us to re-use pipeline logic across multiple referencing pipelines +- **[Pipelines:](#azure-devops-component-pipelines)** The [pipelines](https://docs.microsoft.com/en-us/azure/devops/pipelines/?view=azure-devops) contain all logic we execute as part of our platform and leverage the _pipeline templates_. ### **Azure DevOps Component:** Service Connection From 7ab9e1052692a78541ff7073368661c9f0612a11 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 12:28:32 +0100 Subject: [PATCH 092/112] Update to latest --- docs/wiki/PipelinesDesign.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/PipelinesDesign.md b/docs/wiki/PipelinesDesign.md index 39e9ee1651..666716fd5e 100644 --- a/docs/wiki/PipelinesDesign.md +++ b/docs/wiki/PipelinesDesign.md @@ -323,7 +323,7 @@ variables: The variable file is a source controlled configuration file to control the behavior of the pipeline. The file is stored in path `.azuredevops/pipelineVariables/global.variables.yml`. -This file is divided in multiple categories of variables used in the pipelines: +This file is divided into multiple categories of variables used in the pipelines: | Section | Description | | - | - | From ea8714d40b4ca5a8fd3091bba7aa560b7e63e090 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 12:29:55 +0100 Subject: [PATCH 093/112] Update to latest --- .../pipelineTemplates/module.jobs.publish.yml | 42 -- .../pipelineVariables/global.variables.yml | 10 - docs/wiki/PipelinesDesign.md | 1 - .../resourcePublish/Publish-ModuleToNuget.ps1 | 524 ------------------ 4 files changed, 577 deletions(-) delete mode 100644 utilities/pipelines/resourcePublish/Publish-ModuleToNuget.ps1 diff --git a/.azuredevops/pipelineTemplates/module.jobs.publish.yml b/.azuredevops/pipelineTemplates/module.jobs.publish.yml index e2771362ba..2bbb8f6245 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.publish.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.publish.yml @@ -185,48 +185,6 @@ jobs: verbosity: 'error' enabled: true - # [Nuget Artifact-feed publish] task(s) - #-------------------------------------- - - task: NuGetToolInstaller@0 - displayName: 'Use NuGet 4.x' - inputs: - versionSpec: 4.x - enabled: true - - task: AzurePowerShell@5 - displayName: Publish module to nuget artifacts feed - condition: and( - eq(variables['nugetArtifactsFeedDoPublish'], true), - succeeded() - ) - enabled: true - inputs: - azureSubscription: '${{ parameters.serviceConnection }}' - azurePowerShellVersion: ${{ parameters.azurePowerShellVersion }} - preferredAzurePowerShellVersion: ${{ parameters.preferredAzurePowerShellVersion }} - pwsh: true - ScriptType: InlineScript - inline: | - # Load used functions - . (Join-Path '$(System.DefaultWorkingDirectory)' '$(pipelineFunctionsPath)' 'resourcePublish' 'Publish-ModuleToNuget.ps1') - - $functionInput = @{ - feedName = "$(vstsNugetFeedName)" - feedurl = "$(vstNugetFeedUrl)" - queueById = "$(Build.QueuedById)" - customVersion = '${{ parameters.customVersion }}' - versioningOption = '${{ parameters.versioningOption }}' - moduleBase = '$(ENVMODULEPATH)' - moduleName = '${{ parameters.moduleName }}' - } - - Write-Verbose "Invoke task with" -Verbose - Write-Verbose ($functionInput | ConvertTo-Json | Out-String) -Verbose - - # Separate population to avoid printing secret by accident - $functionInput['systemAccessToken'] = "$(system.accesstoken)" - - Publish-ModuleToNuget @functionInput -Verbose - # [template-spec publish] task(s) #-------------------------------- - task: AzurePowerShell@5 diff --git a/.azuredevops/pipelineVariables/global.variables.yml b/.azuredevops/pipelineVariables/global.variables.yml index 8478ac4cec..faf9978cec 100644 --- a/.azuredevops/pipelineVariables/global.variables.yml +++ b/.azuredevops/pipelineVariables/global.variables.yml @@ -44,16 +44,6 @@ variables: vstsFeedName: 'ResourceModules' vstsFeedProject: '$(System.TeamProject)' - ###################################### - # Publish: Nuget Packages settings - ###################################### - - # Set to true, if you would like to publish modules as Nuget Packages (in ADO Artifacts) - # If you provide a name below, you have to create an Artifact Feed in ADO with the same name before using this feed. - nugetArtifactsFeedDoPublish: false - vstsNugetFeedName: 'Nuget-Modules' - vstNugetFeedUrl: 'https://pkgs.dev.azure.com/$(vstsOrganization)/$(vstsProject)/_packaging/Nuget-Modules/nuget/v2' - ###################################### # Publish: Private Bicep Registry settings ###################################### diff --git a/docs/wiki/PipelinesDesign.md b/docs/wiki/PipelinesDesign.md index 666716fd5e..2f5c1f4fd7 100644 --- a/docs/wiki/PipelinesDesign.md +++ b/docs/wiki/PipelinesDesign.md @@ -332,7 +332,6 @@ This file is divided into multiple categories of variables used in the pipelines | **Validation deployment settings** | Contains the default deployment information to use in the pipeline. For example, the default location to deploy resources to | | **Publish: Template-Spec settings** | Contains the required information to publish to template-specs, including a switch to toggle the feature on or off | | **Publish: Universal packages settings** | Contains the required information to publish to universal packages, including a switch to toggle the feature on or off | -|**Publish: Nuget Packages settings** | Contains the required information to publish to nuget packages, including a switch to toggle the feature on or off | | **Publish: Private Bicep Registry settings** | Contains the required information to publish to the private bicep registry, including a switch to toggle the feature on or off | | **Azure PowerShell Version** | Contains information about the default PowerShell version to use in the pipeline | diff --git a/utilities/pipelines/resourcePublish/Publish-ModuleToNuget.ps1 b/utilities/pipelines/resourcePublish/Publish-ModuleToNuget.ps1 deleted file mode 100644 index aedad1f602..0000000000 --- a/utilities/pipelines/resourcePublish/Publish-ModuleToNuget.ps1 +++ /dev/null @@ -1,524 +0,0 @@ - -#region functions -function Set-DefinedPSRepository { - - <# -.SYNOPSIS -Add a given repository as a source for modules - -.DESCRIPTION -Add a given repository as a source for modules - -.PARAMETER feedurl -Url to the feed to add - -.PARAMETER systemAccessToken -Access token required to access the feed - -.PARAMETER queueById -Id/Email of the instance that wants to access the feed - -.EXAMPLE -Set-DefinedPSRepository -feedname "Release-Modules" -feedurl $feedurl -systemAccessToken $systemAccessToken -queueById $queueById - -Set the feed Release-Modules as a nuget and repo source with the specified credentials -#> - - [CmdletBinding(SupportsShouldProcess = $true)] - param ( - [Parameter(Mandatory = $true)] - [string] $feedname, - [Parameter(Mandatory = $true)] - [string] $feedurl, - [Parameter(Mandatory = $true)] - [string] $systemAccessToken, - [Parameter(Mandatory = $true)] - [PSCredential] $credential, - [Parameter(Mandatory = $true)] - [string] $queueById - ) - - Write-Verbose "Register sources with feed-url [$feedurl]" - - Write-Verbose 'Check registerd nuget sources' - if ($isLinux) { - # Assume linux with dotnet installation - $nugetSources = dotnet nuget list source - } else { - # Assume windows with nuget installation - $nugetSources = nuget sources - } - - if (-not ("$nugetSources" -Match $feedName)) { - if ($PSCmdlet.ShouldProcess("Nuget source definition [$feedname]", 'Add')) { - if ($isLinux) { - # Assume linux with dotnet installation - dotnet nuget add source $feedurl -n $feedName -u $queueById -p $systemAccessToken --store-password-in-clear-text - } else { - # Assume windows with nuget installation - nuget sources add -name $feedname -Source $feedurl -Username $queueById -Password $systemAccessToken - } - } - } else { - Write-Verbose "NuGet source $feedname already registered" - } - - if ($isLinux) { - # Assume linux with dotnet installation - dotnet nuget list source # Print registered - } else { - # Assume windows with nuget installation - nuget sources # Print registered - } - - Write-Verbose 'Check registered repositories' - Import-Module 'PackageManagement' -Verbose:$false # Explicit import to suppress verbose - Import-Module 'PowerShellGet' -Verbose:$false # Explicit import to suppress verbose - $regRepos = (Get-PSRepository).Name - if ($regRepos -notcontains $feedName) { - if ($PSCmdlet.ShouldProcess('PSRepository', 'Register new')) { - Write-Verbose 'Registering script folder as Nuget repo' - $registrationInputObject = @{ - Name = $feedname - SourceLocation = $feedurl - PublishLocation = $feedurl - Credential = $credential - InstallationPolicy = 'Trusted' - PackageManagementProvider = 'Nuget' - } - Register-PSRepository @registrationInputObject - Write-Verbose "Repository $feedname registered" - } - } else { - Write-Verbose "Repository $feedname already registered" - } - - Write-Verbose ('Available PS repositories:') - (Get-PSRepository) | Select-Object Name, SourceLocation | Format-Table -} - -function Confirm-CustomVersionIfSet { - <# -.SYNOPSIS -Validate if a given custom version is higher than a given current version - -.DESCRIPTION -Validate if a given custom version is higher than a given current version. -E.g. -- 0.0.1 > 0.0.2 -- 2.3.5 > 2.1.6 - -.PARAMETER currentFeedVersion -The selected custom version that must be higher than the given current version - -.PARAMETER currentVersion -The given current version that must be lower than the selected custom version - -.EXAMPLE -Confirm-CustomVersionIfSet -customVersion "1.0.0" -currentVersion "0.0.15" - -Check if the selected version "1.0.0" is valid with regards to the current version "0.0.15" -#> - [CmdletBinding()] - [OutputType([System.Boolean])] - param ( - [Parameter(Mandatory = $false)] - [string] $customVersion, - [Parameter(Mandatory = $true)] - [System.Version] $currentFeedVersion - ) - - # Check CustomVersion if set - if ([string]::IsNullOrEmpty($customVersion) -or ($customVersion -eq '-')) { - Write-Verbose 'Custom Version not set. Skip check' - return; - } - - Write-Verbose '### Get custom version' - Write-Verbose "Specified version is $customVersion" - $singleValues = $customVersion.Split('.') - $customBuild = $singleValues[2] - $customMinor = $singleValues[1] - $customMajor = $singleValues[0] - - $oldBuild = $currentFeedVersion.Build - $oldMinor = $currentFeedVersion.Minor - $oldMajor = $currentFeedVersion.Major - - Write-Verbose 'Compare Versions' - if ($customMajor -gt $oldMajor) { - Write-Verbose 'Specified version is valid' - return $true - } elseif ($customMajor -lt $oldMajor) { - throw "Specified major version must not be older than than the existing version: Specified $customVersion > Current $currentFeedVersion" - } else { - if ($customMinor -gt $oldMinor) { - Write-Verbose 'Specified version is valid' - return $true - } elseif ($customMinor -lt $oldMinor) { - throw "Specified minor version must not be older than than the existing version: Specified $customVersion > Current $currentFeedVersion" - } else { - if ($customBuild -gt $oldBuild) { - Write-Verbose 'Specified version is valid' - return $true - } else { - throw "Specified build version must be newer than than the existing version: Specified $customVersion > Current $currentFeedVersion" - } - } - } -} - -function Get-CurrentVersion { - <# -.SYNOPSIS -Search for a certain module in the given feed to check it's version. - -.DESCRIPTION -Search for a certain module in the given feed to check it's version. If no module can be found, version 0.0.0 is returned - -.PARAMETER feedname -Name of the feed to search in - -.PARAMETER moduleName -Name of the module to search for - -.PARAMETER credential -The credentials required to access the feed - -.EXAMPLE -$currentFeedVersion = Get-CurrentVersion -moduleName "aks" -feedname "moduleFeed" -credential $credential - -Search for module AKS in the feed moduleFeed to receive its version -#> - [CmdletBinding()] - param ( - [Parameter(Mandatory = $true)] - [string] $feedname, - [Parameter(Mandatory = $true)] - [string] $moduleName, - [Parameter(Mandatory = $true)] - [PSCredential] $credential - ) - - Write-Verbose "Search for module [$moduleName] in feed [$feedname]" - try { - $module = Find-Module -Name $moduleName -Repository $feedname -Credential $credential - return $module.Version - } catch { - if ($_.Exception.Message -like '*No match was found*') { - Write-Verbose "Module $moduleName not found. Assuming first deployment" - return New-Object System.Version('0.0.0') - } else { - throw $_ - } - } -} - -function Get-NewVersion { - <# -.SYNOPSIS -Get a new version object - -.DESCRIPTION -This function handels different cases: -- If the custom version is set, it is returned as a version object -- If the custom version is not set, but the local manifest version is higher than the current feed version, the local manifest version is returned -- If the custom version is not set, and the feed has the highest available version, this version is increased and returned as a version object - -.PARAMETER customVersion -The optionally set custom version - -.PARAMETER versioningOption -The version update. Patch, Minor or Major. - -.PARAMETER currentFeedVersion -The current version of the module - -.PARAMETER moduleBase -The root folder of the module - -.PARAMETER moduleName -The name of the module - -.EXAMPLE -Get-NewVersion -customVersion '-' -currentFeedVersion 0.0.4 -moduleBase "c:\modules\aks" -moduleName "aks" - -If the current manifest version is 1.0.0 the function returns the 1.0.0 version object -else get the new version 0.0.5 - -.EXAMPLE -Get-NewVersion -customVersion 0.0.6 -currentFeedVersion 0.0.4 -moduleBase "c:\modules\aks" -moduleName "aks" - -Get the new version 0.0.6 -#> - [CmdletBinding()] - param ( - [Parameter(Mandatory = $false)] - [string] $customVersion, - - [Parameter(Mandatory = $false)] - [ValidateSet('patch', 'minor', 'major')] - [string] $versioningOption = 'patch', - - [Parameter(Mandatory = $true)] - [version] $currentFeedVersion, - - [Parameter(Mandatory = $true)] - [string] $moduleBase, - - [Parameter(Mandatory = $true)] - [string] $moduleName - ) - - $localVersion = (Import-LocalizedData -BaseDirectory "$moduleBase" -FileName "$moduleName.psd1").ModuleVersion - - if ((-not ([string]::IsNullOrEmpty($customVersion))) -and (-not ($customVersion -eq '-'))) { - Write-Verbose "Apply custom version $customVersion" - $newVersion = New-Object System.Version($customVersion) - } elseif ($localVersion -gt $currentFeedVersion.ToString()) { - Write-Verbose "Apply local manifest version $localVersion" - $newVersion = $localVersion - } else { - Write-Verbose "Versioning option is set to [$versioningOption]. Applying." - $build = $currentFeedVersion.Build - $minor = $currentFeedVersion.Minor - $major = $currentFeedVersion.Major - - if ($versioningOption -eq 'patch') { - $build++ - } elseif ($versioningOption -eq 'minor') { - $minor++ - $build = 0 - } else { - $major++ - $minor = 0 - $build = 0 - } - - $newVersion = New-Object System.Version('{0}.{1}.{2}' -f $major, $minor, $build) - } - return $newVersion -} -function Publish-NuGetModule { - - <# -.SYNOPSIS -Publish a given module to specified feed - -.DESCRIPTION -Publish a given module to specified feed - -.PARAMETER feedname -Nanm of the feed to push to - -.PARAMETER credential -Credentials required by the feed - -.EXAMPLE -Publish-NuGetModule -feedname "Release-Modules" -credential $credential -moduleName "Aks" - -Push the module AKS to the feed 'Release-Modules' -#> - [CmdletBinding()] - param ( - [Parameter(Mandatory = $true)] - [string] $feedname, - [Parameter(Mandatory = $true)] - [PSCredential] $credential, - [Parameter(Mandatory = $true)] - [string] $moduleBase, - [Parameter(Mandatory = $true)] - [string] $moduleName - ) - - try { - Write-Verbose "Try pushing module [$moduleName] from base [$moduleBase] to feed [$feedname]" - Publish-Module -Path "$moduleBase" -NuGetApiKey 'VSTS' -Repository $feedname -Credential $credential -Force - Write-Verbose 'Published module' - } catch { - Write-Verbose ('Unable to upload module {0}' -f (Split-Path $PSScriptRoot -Leaf)) - $_.Exception | Format-List -Force - } -} -function Set-LocalVersion { - <# -.SYNOPSIS -Set the specified version to the module manifest - -.DESCRIPTION -Set the specified version to the module manifest - -.PARAMETER newVersion -The version to set - -.PARAMETER moduleBase -The root folder of the module - -.PARAMETER moduleName -The name of the module - -.EXAMPLE -Set-LocalVersion -newVersion $newVersion -moduleBase "c:\modules\aks" -moduleName "aks" - -Set the provided moduleVersion to the manifest of module aks in the folder 'c:\modules\aks' -#> - [CmdletBinding( - SupportsShouldProcess = $true - )] - param ( - [Parameter(Mandatory = $true)] - [version] $newVersion, - [Parameter(Mandatory = $true)] - [string] $moduleBase, - [Parameter(Mandatory = $true)] - [string] $moduleName - ) - - $modulefile = "$moduleBase/$moduleName.psd1" - if ($PSCmdlet.ShouldProcess('Module manifest', 'Update')) { - Update-ModuleManifest -Path $modulefile -ModuleVersion $newVersion -Verbose - } -} -function Update-ManifestExportedFunction { - <# -.SYNOPSIS -Add the module's public functions to its manifest - -.DESCRIPTION -Extracts all functions in the module's public folder to add them as 'FunctionsToExport' int he manifest - -.PARAMETER moduleBase -The root folder of the module - -.PARAMETER moduleName -The name of the module - -.EXAMPLE -Update-ManifestExportedFunction -moduleBase "c:\modules\aks" -moduleName "aks" - -Add all public functions of module AKS to its manifest -#> - [CmdletBinding( - SupportsShouldProcess = $true - )] - param ( - [Parameter(Mandatory = $true)] - [string] $moduleBase, - [Parameter(Mandatory = $true)] - [string] $moduleName - ) - - $publicFunctions = (Get-ChildItem -Path "$moduleBase\Public" -Filter '*.ps1').BaseName - - $modulefile = "$moduleBase\$moduleName.psd1" - if ($PSCmdlet.ShouldProcess('Module manifest', 'Update')) { - Write-Verbose "Update Manifest $moduleFile" - Update-ModuleManifest -Path $modulefile -FunctionsToExport $publicFunctions -Verbose | Out-Null - } -} -#endregion - -function Publish-ModuleToNuget { - - <# -.SYNOPSIS -Build the current powershell module as an artifact and push it to a designated feed - -.DESCRIPTION -This method adjusts the module's manifest in two ways: -- It assigns a new given or generated module version to the manifest -- It extracts all public functions from this module and lists them in the manifest - -Subsequently it pushes the module as an artifact to a corresponding module feed as a nuget package where it can be downloaded from. - -.PARAMETER feedName -Name of the feed to push the module to. By default it's 'Release-Modules' - -.PARAMETER feedurl -Optional feedurl to set by pipeline. Use {0} in path to specify the feedname -e.g. "https://apps-custom.pkgs.visualstudio.com/_packaging/{0}/nuget/v2" - -.PARAMETER customVersion -If the new version should not be generated you can specify a custom version. It must be higher than the latest version inside the module feed. - -.PARAMETER versioningOption -The version update. Patch, Minor or Major. - -.PARAMETER systemAccessToken -Personal-Access-Token provieded by the pipeline or user to interact with the module feed - -.PARAMETER queueById -Name/Email/Id of the user interacting with the module feed - -.PARAMETER test -An optional parameter used by tests to only run code that is required for testing - -.PARAMETER moduleBase -Root folder of the modbule to publish - -.PARAMETER moduleName -Name of the module to publish -#> - - [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingConvertToSecureStringWithPlainText', '', Justification = 'Is provided by the pipeline as an encoded string')] - [CmdletBinding()] - param ( - [Parameter(Mandatory = $true)] - [string] $feedName, - - [Parameter(Mandatory = $true)] - [string] $feedurl, - - [Parameter(Mandatory = $false)] - [string] $customVersion = '-', - - [Parameter(Mandatory = $false)] - [ValidateSet('patch', 'minor', 'major')] - [string] $versioningOption = 'patch', - - [Parameter(Mandatory = $true)] - [string] $systemAccessToken, - - [Parameter(Mandatory = $true)] - [string] $queueById, - - [Parameter(Mandatory = $true)] - [string] $moduleBase, - - [Parameter(Mandatory = $true)] - [string] $moduleName - ) - - $oldPreferences = $VerbosePreference - $VerbosePreference = 'Continue' - - try { - $feedurl = $feedurl -f $feedName - Write-Verbose "Feed-Url: $feedurl" - - $password = ConvertTo-SecureString $systemAccessToken -AsPlainText -Force - $credential = New-Object System.Management.Automation.PSCredential ($queueById, $password) - - Write-Verbose 'Register feed' - Set-DefinedPSRepository -feedname $feedName -feedurl $feedurl -systemAccessToken $systemAccessToken -Credential $credential -queueById $queueById - - $currentFeedVersion = Get-CurrentVersion -feedname $feedName -moduleName $moduleName -credential $credential - Write-Verbose "Current version of module '$moduleName' in feed '$feedName' is $currentFeedVersion" - - Confirm-CustomVersionIfSet -customVersion $customVersion -currentFeedVersion $currentFeedVersion - - $newVersion = Get-NewVersion -customVersion $customVersion -versioningOption $versioningOption -currentFeedVersion $currentFeedVersion -moduleName $moduleName -moduleBase $moduleBase - Write-Verbose "New version is $newVersion" - - Set-LocalVersion -newVersion $newVersion -moduleName $moduleName -moduleBase $moduleBase - Write-Verbose "Updated local version to $newVersion" - - Update-ManifestExportedFunction -moduleName $moduleName -moduleBase $moduleBase - - Test-ModuleManifest -Path "$moduleBase\$moduleName.psd1" | Format-List - - Publish-NuGetModule -feedname $feedname -credential $credential -moduleName $moduleName -moduleBase $moduleBase - } finally { - $VerbosePreference = $oldPreferences - } -} From c3658b4bace5323b7e17c3a5ec6324cd75cb5811 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 12:32:06 +0100 Subject: [PATCH 094/112] Update to latest --- docs/wiki/PipelinesDesign.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/wiki/PipelinesDesign.md b/docs/wiki/PipelinesDesign.md index 2f5c1f4fd7..23f2fb61d8 100644 --- a/docs/wiki/PipelinesDesign.md +++ b/docs/wiki/PipelinesDesign.md @@ -330,9 +330,9 @@ This file is divided into multiple categories of variables used in the pipelines | **Agent settings** | Contains information of the agent and service connection to use | | **Source** | Contains information about the Azure DevOps instance itself, including some important folder paths | | **Validation deployment settings** | Contains the default deployment information to use in the pipeline. For example, the default location to deploy resources to | -| **Publish: Template-Spec settings** | Contains the required information to publish to template-specs, including a switch to toggle the feature on or off | -| **Publish: Universal packages settings** | Contains the required information to publish to universal packages, including a switch to toggle the feature on or off | -| **Publish: Private Bicep Registry settings** | Contains the required information to publish to the private bicep registry, including a switch to toggle the feature on or off | +| **Publish: Template-Spec settings** | Contains the required information to publish to template-specs, including a switch to toggle the publishing to template specs on or off | +| **Publish: Universal packages settings** | Contains the required information to publish to universal packages, including a switch to toggle the publishing to universal packages on or off | +| **Publish: Private Bicep Registry settings** | Contains the required information to publish to the private bicep registry, including a switch to toggle the publishing to the private bicep registry on or off | | **Azure PowerShell Version** | Contains information about the default PowerShell version to use in the pipeline | ### **Azure DevOps Component:** Pipeline templates From 9f7239f536d97fd0cc3cbd43f219ef2e555cf4f7 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 12:37:22 +0100 Subject: [PATCH 095/112] Update to latest --- .../pipelineVariables/global.variables.yml | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/.azuredevops/pipelineVariables/global.variables.yml b/.azuredevops/pipelineVariables/global.variables.yml index faf9978cec..271181c2c7 100644 --- a/.azuredevops/pipelineVariables/global.variables.yml +++ b/.azuredevops/pipelineVariables/global.variables.yml @@ -21,36 +21,33 @@ variables: # Validation deployment settings ###################################### - defaultLocation: 'West Europe' - defaultResourceGroupName: 'validation-rg' # validation-resourcegroup-name + defaultLocation: 'West Europe' # The default location to test deploy resources to + defaultResourceGroupName: 'validation-rg' # The default resource group to test deployment resources into ###################################### # Publish: Template-Spec settings ###################################### - # Set to true, if you would like to publish modules as template specs - templateSpecsDoPublish: true - templateSpecsRGName: 'artifacts-rg' - templateSpecsRGLocation: 'West Europe' - templateSpecsDescription: components + templateSpecsDoPublish: true # Set to true, if you would like to publish module templates as template specs + templateSpecsRGName: 'artifacts-rg' # The name of the resource group to publish to. If the resource group does not exist, it will be created. + templateSpecsRGLocation: 'West Europe' # The location of the resource group to publish to + templateSpecsDescription: components # The description to add to template specs published by this platform ###################################### # Publish: Universal packages settings ###################################### - # Set to true, if you would like to publish modules as Universal Packages (in ADO Artifacts) - # If you provide a name below, you have to create an Artifact Feed in ADO with the same name before using this feed. - artifactsFeedDoPublish: true - vstsFeedName: 'ResourceModules' - vstsFeedProject: '$(System.TeamProject)' + artifactsFeedDoPublish: true # Set to true, if you would like to publish modules as Universal Packages (in Azure DevOps Artifacts) + vstsFeedName: 'ResourceModules' # The name of the Azure DevOps universal packages feed to publish to + vstsFeedProject: '$(System.TeamProject)' # The project that hosts the feed ###################################### # Publish: Private Bicep Registry settings ###################################### - bicepRegistryDoPublish: true - bicepRegistryName: adpsxxazacrx001 - bicepRegistryRGName: 'artifacts-rg' + 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. + bicepRegistryRGName: 'artifacts-rg' # The resource group that hosts the private bicep registry (ACR) ###################################### # Azure PowerShell Version From 75bf8f773897800c9c44da24f341118757b03370 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 10 Dec 2021 12:39:13 +0100 Subject: [PATCH 096/112] Update to latest --- docs/wiki/PipelinesDesign.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/wiki/PipelinesDesign.md b/docs/wiki/PipelinesDesign.md index 23f2fb61d8..1a27421098 100644 --- a/docs/wiki/PipelinesDesign.md +++ b/docs/wiki/PipelinesDesign.md @@ -335,6 +335,8 @@ This file is divided into multiple categories of variables used in the pipelines | **Publish: Private Bicep Registry settings** | Contains the required information to publish to the private bicep registry, including a switch to toggle the publishing to the private bicep registry on or off | | **Azure PowerShell Version** | Contains information about the default PowerShell version to use in the pipeline | +More information about the contained variables can be found in the linked file itself. + ### **Azure DevOps Component:** Pipeline templates To keep the amount of pipeline code at a minimum we make heavy use of pipeline templates. Following you can find an overview of the ones we use and what they are used for: From f8dee8389ea6dc053fb6673fb00fbf17f3c8e131 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Sun, 12 Dec 2021 11:16:51 +0100 Subject: [PATCH 097/112] Minor docs fix --- docs/wiki/GettingStarted.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/GettingStarted.md b/docs/wiki/GettingStarted.md index 9edbb72252..5e106d96b6 100644 --- a/docs/wiki/GettingStarted.md +++ b/docs/wiki/GettingStarted.md @@ -124,7 +124,7 @@ Please refer to [this list][AzureNames] to check which services have a global sc ### Platform principal -The platform [service principal](https://docs.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principals#service-principal-object) is used to perform actions in Azure using a service principal. Depending on what you want to want to execute, different permissions will be required. For example: +The platform [service principal](https://docs.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principals#service-principal-object) is used to perform actions in Azure using a service principal. Depending on what you want to execute, different permissions will be required. For example: - To test the **Management Group** module, your principal needs at least _[Contributor](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#contributor)_ permissions on a management group - To test **RBAC** with any of the modules you need at least _[User Access Administrator](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#user-access-administrator)_ permissions on the target scope - To test **subscription-level deployments** you need at least _[Contributor](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#contributor)_ permissions on the target scope From 7f0dd4ecc582c0a3986291bd0eb1f92910ecaa5b Mon Sep 17 00:00:00 2001 From: MrMCake Date: Sun, 12 Dec 2021 11:17:55 +0100 Subject: [PATCH 098/112] Minor docs fix --- docs/wiki/GettingStarted.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/GettingStarted.md b/docs/wiki/GettingStarted.md index 5e106d96b6..0f6df7bd58 100644 --- a/docs/wiki/GettingStarted.md +++ b/docs/wiki/GettingStarted.md @@ -124,7 +124,7 @@ Please refer to [this list][AzureNames] to check which services have a global sc ### Platform principal -The platform [service principal](https://docs.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principals#service-principal-object) is used to perform actions in Azure using a service principal. Depending on what you want to execute, different permissions will be required. For example: +The platform principal is used to perform actions in Azure using a [service principal](https://docs.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principals#service-principal-object). Depending on what you want to execute, different permissions will be required. For example: - To test the **Management Group** module, your principal needs at least _[Contributor](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#contributor)_ permissions on a management group - To test **RBAC** with any of the modules you need at least _[User Access Administrator](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#user-access-administrator)_ permissions on the target scope - To test **subscription-level deployments** you need at least _[Contributor](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#contributor)_ permissions on the target scope From 7d46f59670c6c7506f9a7b26f9924db61b4aaa53 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Sun, 12 Dec 2021 11:20:38 +0100 Subject: [PATCH 099/112] Update to latest --- .../modulePipelines/ms.analysisservices.servers.yml | 6 +++--- .azuredevops/modulePipelines/ms.apimanagement.service.yml | 6 +++--- .../modulePipelines/ms.authorization.policyassignments.yml | 6 +++--- .../modulePipelines/ms.authorization.policydefinitions.yml | 6 +++--- .../modulePipelines/ms.authorization.policyexemptions.yml | 6 +++--- .../ms.authorization.policysetdefinitions.yml | 6 +++--- .../modulePipelines/ms.authorization.roleassignments.yml | 6 +++--- .../modulePipelines/ms.authorization.roledefinitions.yml | 6 +++--- .azuredevops/modulePipelines/ms.automanage.accounts.yml | 6 +++--- .../modulePipelines/ms.automation.automationaccounts.yml | 6 +++--- .azuredevops/modulePipelines/ms.batch.batchaccounts.yml | 6 +++--- .../modulePipelines/ms.cognitiveservices.accounts.yml | 6 +++--- .../modulePipelines/ms.compute.availabilitysets.yml | 6 +++--- .../modulePipelines/ms.compute.diskencryptionsets.yml | 6 +++--- .azuredevops/modulePipelines/ms.compute.galleries.yml | 6 +++--- .azuredevops/modulePipelines/ms.compute.images.yml | 6 +++--- .../modulePipelines/ms.compute.proximityplacementgroups.yml | 6 +++--- .azuredevops/modulePipelines/ms.compute.virtualmachines.yml | 6 +++--- .../modulePipelines/ms.compute.virtualmachinescalesets.yml | 6 +++--- .azuredevops/modulePipelines/ms.consumption.budgets.yml | 6 +++--- .../ms.containerinstance.containergroups.yml | 6 +++--- .../modulePipelines/ms.containerregistry.registries.yml | 6 +++--- .../modulePipelines/ms.containerservice.managedclusters.yml | 6 +++--- .azuredevops/modulePipelines/ms.databricks.workspaces.yml | 6 +++--- .azuredevops/modulePipelines/ms.datafactory.factories.yml | 6 +++--- .../ms.desktopvirtualization.applicationgroups.yml | 6 +++--- .../modulePipelines/ms.desktopvirtualization.hostpools.yml | 6 +++--- .../modulePipelines/ms.desktopvirtualization.workspaces.yml | 6 +++--- .../modulePipelines/ms.documentdb.databaseaccounts.yml | 6 +++--- .azuredevops/modulePipelines/ms.eventgrid.topics.yml | 6 +++--- .azuredevops/modulePipelines/ms.eventhub.namespaces.yml | 6 +++--- .azuredevops/modulePipelines/ms.healthbot.healthbots.yml | 6 +++--- .azuredevops/modulePipelines/ms.insights.actiongroups.yml | 6 +++--- .../modulePipelines/ms.insights.activitylogalerts.yml | 6 +++--- .azuredevops/modulePipelines/ms.insights.components.yml | 6 +++--- .../modulePipelines/ms.insights.diagnosticsettings.yml | 6 +++--- .azuredevops/modulePipelines/ms.insights.metricalerts.yml | 6 +++--- .../modulePipelines/ms.insights.privatelinkscopes.yml | 6 +++--- .../modulePipelines/ms.insights.scheduledqueryrules.yml | 6 +++--- .azuredevops/modulePipelines/ms.keyvault.vaults.yml | 6 +++--- .azuredevops/modulePipelines/ms.logic.workflows.yml | 6 +++--- .../ms.machinelearningservices.workspaces.yml | 6 +++--- .../ms.managedidentity.userassignedidentities.yml | 6 +++--- .../ms.managedservices.registrationdefinitions.yml | 6 +++--- .../modulePipelines/ms.management.managementgroups.yml | 6 +++--- .azuredevops/modulePipelines/ms.netapp.netappaccounts.yml | 6 +++--- .../modulePipelines/ms.network.applicationgateways.yml | 6 +++--- .../ms.network.applicationsecuritygroups.yml | 6 +++--- .azuredevops/modulePipelines/ms.network.azurefirewalls.yml | 6 +++--- .azuredevops/modulePipelines/ms.network.bastionhosts.yml | 6 +++--- .azuredevops/modulePipelines/ms.network.connections.yml | 6 +++--- .../modulePipelines/ms.network.ddosprotectionplans.yml | 6 +++--- .../modulePipelines/ms.network.expressroutecircuits.yml | 6 +++--- .azuredevops/modulePipelines/ms.network.ipgroups.yml | 6 +++--- .azuredevops/modulePipelines/ms.network.loadbalancers.yml | 6 +++--- .../modulePipelines/ms.network.localnetworkgateways.yml | 6 +++--- .azuredevops/modulePipelines/ms.network.natgateways.yml | 6 +++--- .../modulePipelines/ms.network.networksecuritygroups.yml | 6 +++--- .azuredevops/modulePipelines/ms.network.networkwatchers.yml | 6 +++--- .azuredevops/modulePipelines/ms.network.privatednszones.yml | 6 +++--- .../modulePipelines/ms.network.privateendpoints.yml | 6 +++--- .../modulePipelines/ms.network.publicipaddresses.yml | 6 +++--- .../modulePipelines/ms.network.publicipprefixes.yml | 6 +++--- .azuredevops/modulePipelines/ms.network.routetables.yml | 6 +++--- .../modulePipelines/ms.network.trafficmanagerprofiles.yml | 6 +++--- .../modulePipelines/ms.network.virtualnetworkgateways.yml | 6 +++--- .azuredevops/modulePipelines/ms.network.virtualnetworks.yml | 6 +++--- .azuredevops/modulePipelines/ms.network.virtualwans.yml | 6 +++--- .../modulePipelines/ms.operationalinsights.workspaces.yml | 6 +++--- .azuredevops/modulePipelines/ms.recoveryservices.vaults.yml | 6 +++--- .../modulePipelines/ms.resources.deploymentscripts.yml | 6 +++--- .../modulePipelines/ms.resources.resourcegroups.yml | 6 +++--- .../modulePipelines/ms.security.azuresecuritycenter.yml | 6 +++--- .azuredevops/modulePipelines/ms.servicebus.namespaces.yml | 6 +++--- .azuredevops/modulePipelines/ms.sql.managedinstances.yml | 6 +++--- .azuredevops/modulePipelines/ms.sql.servers.yml | 6 +++--- .azuredevops/modulePipelines/ms.storage.storageaccounts.yml | 6 +++--- .../ms.virtualmachineimages.imagetemplates.yml | 6 +++--- .azuredevops/modulePipelines/ms.web.connections.yml | 6 +++--- .azuredevops/modulePipelines/ms.web.hostingenvironments.yml | 6 +++--- .azuredevops/modulePipelines/ms.web.serverfarms.yml | 6 +++--- .azuredevops/modulePipelines/ms.web.sites.yml | 6 +++--- utilities/tools/AzureDevOps/src/devOpsPipelineTemplate.yml | 6 +++--- 83 files changed, 249 insertions(+), 249 deletions(-) diff --git a/.azuredevops/modulePipelines/ms.analysisservices.servers.yml b/.azuredevops/modulePipelines/ms.analysisservices.servers.yml index 2ab5389b0b..fb8f2b6ae5 100644 --- a/.azuredevops/modulePipelines/ms.analysisservices.servers.yml +++ b/.azuredevops/modulePipelines/ms.analysisservices.servers.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.AnalysisServices/servers' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +51,7 @@ stages: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.apimanagement.service.yml b/.azuredevops/modulePipelines/ms.apimanagement.service.yml index c4111c9a1b..fa43a31c21 100644 --- a/.azuredevops/modulePipelines/ms.apimanagement.service.yml +++ b/.azuredevops/modulePipelines/ms.apimanagement.service.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.ApiManagement/service' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +51,7 @@ stages: - path: $(modulePath)/.parameters/max.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml b/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml index dc6c445b19..e76aa0dac8 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml @@ -38,10 +38,10 @@ variables: value: '/arm/Microsoft.Authorization/policyAssignments' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -52,7 +52,7 @@ stages: - path: $(modulePath)/.parameters/parameters.json templateFilePath: $(modulePath)/.bicep/nested_policyAssignments_sub.bicep - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml b/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml index 81ad9bfd6b..09b3d9c26e 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Authorization/policyDefinitions' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -53,7 +53,7 @@ stages: - path: $(modulePath)/.parameters/parameters.json templateFilePath: $(modulePath)/.bicep/nested_policyDefinitions_sub.bicep - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml b/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml index f626e2f59b..80b6e2decc 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Authorization/policyExemptions' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -53,7 +53,7 @@ stages: - path: $(modulePath)/.parameters/parameters.json templateFilePath: $(modulePath)/.bicep/nested_policyExemptions_sub.bicep - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml b/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml index 137c47345b..72437152e5 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Authorization/policySetDefinitions' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -53,7 +53,7 @@ stages: - path: $(modulePath)/.parameters/parameters.json templateFilePath: $(modulePath)/.bicep/nested_policySetDefinition_sub.bicep - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml b/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml index 6b27e78fe4..d18f49ad97 100644 --- a/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml +++ b/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Authorization/roleAssignments' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -53,7 +53,7 @@ stages: - path: $(modulePath)/.parameters/parameters.json templateFilePath: $(modulePath)/.bicep/nested_rbac_sub.bicep - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml b/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml index 04de12ed21..d49c446448 100644 --- a/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Authorization/roleDefinitions' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -53,7 +53,7 @@ stages: - path: $(modulePath)/.parameters/parameters.json templateFilePath: $(modulePath)/.bicep/nested_roleDefinitions_sub.bicep - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.automanage.accounts.yml b/.azuredevops/modulePipelines/ms.automanage.accounts.yml index 6701e547a7..1a5c6272fc 100644 --- a/.azuredevops/modulePipelines/ms.automanage.accounts.yml +++ b/.azuredevops/modulePipelines/ms.automanage.accounts.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Automanage/accounts' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.automation.automationaccounts.yml b/.azuredevops/modulePipelines/ms.automation.automationaccounts.yml index c1b26f8308..373b106d7e 100644 --- a/.azuredevops/modulePipelines/ms.automation.automationaccounts.yml +++ b/.azuredevops/modulePipelines/ms.automation.automationaccounts.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Automation/automationAccounts' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +51,7 @@ stages: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.batch.batchaccounts.yml b/.azuredevops/modulePipelines/ms.batch.batchaccounts.yml index 17d260a527..cf9873d3cf 100644 --- a/.azuredevops/modulePipelines/ms.batch.batchaccounts.yml +++ b/.azuredevops/modulePipelines/ms.batch.batchaccounts.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Batch/batchAccounts' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.cognitiveservices.accounts.yml b/.azuredevops/modulePipelines/ms.cognitiveservices.accounts.yml index d56f541315..933d0fdcc2 100644 --- a/.azuredevops/modulePipelines/ms.cognitiveservices.accounts.yml +++ b/.azuredevops/modulePipelines/ms.cognitiveservices.accounts.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.CognitiveServices/accounts' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.compute.availabilitysets.yml b/.azuredevops/modulePipelines/ms.compute.availabilitysets.yml index ea7e2b5892..1833f71076 100644 --- a/.azuredevops/modulePipelines/ms.compute.availabilitysets.yml +++ b/.azuredevops/modulePipelines/ms.compute.availabilitysets.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Compute/availabilitySets' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.compute.diskencryptionsets.yml b/.azuredevops/modulePipelines/ms.compute.diskencryptionsets.yml index 510648d3b3..de595729b5 100644 --- a/.azuredevops/modulePipelines/ms.compute.diskencryptionsets.yml +++ b/.azuredevops/modulePipelines/ms.compute.diskencryptionsets.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Compute/diskEncryptionSets' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.compute.galleries.yml b/.azuredevops/modulePipelines/ms.compute.galleries.yml index 9a8fc78f75..6f6497068c 100644 --- a/.azuredevops/modulePipelines/ms.compute.galleries.yml +++ b/.azuredevops/modulePipelines/ms.compute.galleries.yml @@ -38,7 +38,7 @@ variables: value: '/arm/Microsoft.Compute/galleries' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml parameters: @@ -46,7 +46,7 @@ stages: - path: $(modulePath)/.parameters/images.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -55,7 +55,7 @@ stages: - path: $(modulePath)/.parameters/images.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.compute.images.yml b/.azuredevops/modulePipelines/ms.compute.images.yml index fb59ad8a46..1f05e2e26c 100644 --- a/.azuredevops/modulePipelines/ms.compute.images.yml +++ b/.azuredevops/modulePipelines/ms.compute.images.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Compute/images' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.compute.proximityplacementgroups.yml b/.azuredevops/modulePipelines/ms.compute.proximityplacementgroups.yml index fac7d884b6..23748b3ab7 100644 --- a/.azuredevops/modulePipelines/ms.compute.proximityplacementgroups.yml +++ b/.azuredevops/modulePipelines/ms.compute.proximityplacementgroups.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Compute/proximityPlacementGroups' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml b/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml index 97233269e8..fa812e67f6 100644 --- a/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml +++ b/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Compute/virtualMachines' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -53,7 +53,7 @@ stages: - path: $(modulePath)/.parameters/windows.min.parameters.json - path: $(modulePath)/.parameters/windows.parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.compute.virtualmachinescalesets.yml b/.azuredevops/modulePipelines/ms.compute.virtualmachinescalesets.yml index 83adaaa813..9d2521dbb0 100644 --- a/.azuredevops/modulePipelines/ms.compute.virtualmachinescalesets.yml +++ b/.azuredevops/modulePipelines/ms.compute.virtualmachinescalesets.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Compute/virtualMachineScaleSets' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -53,7 +53,7 @@ stages: - path: $(modulePath)/.parameters/windows.min.parameters.json - path: $(modulePath)/.parameters/windows.parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.consumption.budgets.yml b/.azuredevops/modulePipelines/ms.consumption.budgets.yml index 915a55f8a4..0ea0012a88 100644 --- a/.azuredevops/modulePipelines/ms.consumption.budgets.yml +++ b/.azuredevops/modulePipelines/ms.consumption.budgets.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Consumption/budgets' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.containerinstance.containergroups.yml b/.azuredevops/modulePipelines/ms.containerinstance.containergroups.yml index c7be790e10..ab5b02b626 100644 --- a/.azuredevops/modulePipelines/ms.containerinstance.containergroups.yml +++ b/.azuredevops/modulePipelines/ms.containerinstance.containergroups.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.ContainerInstance/containerGroups' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.containerregistry.registries.yml b/.azuredevops/modulePipelines/ms.containerregistry.registries.yml index 444c07fa2f..6e5938f7ab 100644 --- a/.azuredevops/modulePipelines/ms.containerregistry.registries.yml +++ b/.azuredevops/modulePipelines/ms.containerregistry.registries.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.ContainerRegistry/registries' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.containerservice.managedclusters.yml b/.azuredevops/modulePipelines/ms.containerservice.managedclusters.yml index a01379b100..037c2bf900 100644 --- a/.azuredevops/modulePipelines/ms.containerservice.managedclusters.yml +++ b/.azuredevops/modulePipelines/ms.containerservice.managedclusters.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.ContainerService/managedClusters' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +51,7 @@ stages: - path: $(modulePath)/.parameters/azure.parameters.json - path: $(modulePath)/.parameters/kubenet.parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.databricks.workspaces.yml b/.azuredevops/modulePipelines/ms.databricks.workspaces.yml index 13ebdee5da..c811b63b8a 100644 --- a/.azuredevops/modulePipelines/ms.databricks.workspaces.yml +++ b/.azuredevops/modulePipelines/ms.databricks.workspaces.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Databricks/workspaces' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.datafactory.factories.yml b/.azuredevops/modulePipelines/ms.datafactory.factories.yml index 671bd1ea82..28e0b49072 100644 --- a/.azuredevops/modulePipelines/ms.datafactory.factories.yml +++ b/.azuredevops/modulePipelines/ms.datafactory.factories.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.DataFactory/factories' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.desktopvirtualization.applicationgroups.yml b/.azuredevops/modulePipelines/ms.desktopvirtualization.applicationgroups.yml index 0b28dd1c39..dc094c05f0 100644 --- a/.azuredevops/modulePipelines/ms.desktopvirtualization.applicationgroups.yml +++ b/.azuredevops/modulePipelines/ms.desktopvirtualization.applicationgroups.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.DesktopVirtualization/applicationgroups' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +51,7 @@ stages: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.desktopvirtualization.hostpools.yml b/.azuredevops/modulePipelines/ms.desktopvirtualization.hostpools.yml index d7f6661f73..573bb1173c 100644 --- a/.azuredevops/modulePipelines/ms.desktopvirtualization.hostpools.yml +++ b/.azuredevops/modulePipelines/ms.desktopvirtualization.hostpools.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.DesktopVirtualization/hostpools' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.desktopvirtualization.workspaces.yml b/.azuredevops/modulePipelines/ms.desktopvirtualization.workspaces.yml index 7de58d249f..a7a9521075 100644 --- a/.azuredevops/modulePipelines/ms.desktopvirtualization.workspaces.yml +++ b/.azuredevops/modulePipelines/ms.desktopvirtualization.workspaces.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.DesktopVirtualization/workspaces' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.documentdb.databaseaccounts.yml b/.azuredevops/modulePipelines/ms.documentdb.databaseaccounts.yml index 4a1d99be93..81b9f45393 100644 --- a/.azuredevops/modulePipelines/ms.documentdb.databaseaccounts.yml +++ b/.azuredevops/modulePipelines/ms.documentdb.databaseaccounts.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.DocumentDB/databaseAccounts' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -52,7 +52,7 @@ stages: - path: $(modulePath)/.parameters/plain.parameters.json - path: $(modulePath)/.parameters/sqldb.parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.eventgrid.topics.yml b/.azuredevops/modulePipelines/ms.eventgrid.topics.yml index 84e81acefd..9987e7b85d 100644 --- a/.azuredevops/modulePipelines/ms.eventgrid.topics.yml +++ b/.azuredevops/modulePipelines/ms.eventgrid.topics.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.EventGrid/topics' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.eventhub.namespaces.yml b/.azuredevops/modulePipelines/ms.eventhub.namespaces.yml index 4b0ad1399e..364f219ce6 100644 --- a/.azuredevops/modulePipelines/ms.eventhub.namespaces.yml +++ b/.azuredevops/modulePipelines/ms.eventhub.namespaces.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.EventHub/namespaces' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +51,7 @@ stages: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.healthbot.healthbots.yml b/.azuredevops/modulePipelines/ms.healthbot.healthbots.yml index 0b8d5bff4f..7c35bdc00e 100644 --- a/.azuredevops/modulePipelines/ms.healthbot.healthbots.yml +++ b/.azuredevops/modulePipelines/ms.healthbot.healthbots.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.HealthBot/healthBots' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.insights.actiongroups.yml b/.azuredevops/modulePipelines/ms.insights.actiongroups.yml index d42ad000ab..61fe11f539 100644 --- a/.azuredevops/modulePipelines/ms.insights.actiongroups.yml +++ b/.azuredevops/modulePipelines/ms.insights.actiongroups.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Insights/actionGroups' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.insights.activitylogalerts.yml b/.azuredevops/modulePipelines/ms.insights.activitylogalerts.yml index 6bd018ed0e..1548cc56d6 100644 --- a/.azuredevops/modulePipelines/ms.insights.activitylogalerts.yml +++ b/.azuredevops/modulePipelines/ms.insights.activitylogalerts.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Insights/activityLogAlerts' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.insights.components.yml b/.azuredevops/modulePipelines/ms.insights.components.yml index 5de98773d1..369570fa69 100644 --- a/.azuredevops/modulePipelines/ms.insights.components.yml +++ b/.azuredevops/modulePipelines/ms.insights.components.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Insights/components' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.insights.diagnosticsettings.yml b/.azuredevops/modulePipelines/ms.insights.diagnosticsettings.yml index 8861693389..2b22362441 100644 --- a/.azuredevops/modulePipelines/ms.insights.diagnosticsettings.yml +++ b/.azuredevops/modulePipelines/ms.insights.diagnosticsettings.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Insights/diagnosticSettings' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.insights.metricalerts.yml b/.azuredevops/modulePipelines/ms.insights.metricalerts.yml index 0cad4d32b8..a60684c335 100644 --- a/.azuredevops/modulePipelines/ms.insights.metricalerts.yml +++ b/.azuredevops/modulePipelines/ms.insights.metricalerts.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Insights/metricAlerts' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.insights.privatelinkscopes.yml b/.azuredevops/modulePipelines/ms.insights.privatelinkscopes.yml index f25a2b9c4f..b6f2a39848 100644 --- a/.azuredevops/modulePipelines/ms.insights.privatelinkscopes.yml +++ b/.azuredevops/modulePipelines/ms.insights.privatelinkscopes.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Insights/privateLinkScopes' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.insights.scheduledqueryrules.yml b/.azuredevops/modulePipelines/ms.insights.scheduledqueryrules.yml index 8a893c6408..fbc35078bb 100644 --- a/.azuredevops/modulePipelines/ms.insights.scheduledqueryrules.yml +++ b/.azuredevops/modulePipelines/ms.insights.scheduledqueryrules.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Insights/scheduledQueryRules' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.keyvault.vaults.yml b/.azuredevops/modulePipelines/ms.keyvault.vaults.yml index 81b67151e6..b861c996e7 100644 --- a/.azuredevops/modulePipelines/ms.keyvault.vaults.yml +++ b/.azuredevops/modulePipelines/ms.keyvault.vaults.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.KeyVault/vaults' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +51,7 @@ stages: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.logic.workflows.yml b/.azuredevops/modulePipelines/ms.logic.workflows.yml index cad3393d07..c3bff02aaf 100644 --- a/.azuredevops/modulePipelines/ms.logic.workflows.yml +++ b/.azuredevops/modulePipelines/ms.logic.workflows.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Logic/workflows' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.machinelearningservices.workspaces.yml b/.azuredevops/modulePipelines/ms.machinelearningservices.workspaces.yml index 326a70855a..4bcb33f3f8 100644 --- a/.azuredevops/modulePipelines/ms.machinelearningservices.workspaces.yml +++ b/.azuredevops/modulePipelines/ms.machinelearningservices.workspaces.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.MachineLearningServices/workspaces' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.managedidentity.userassignedidentities.yml b/.azuredevops/modulePipelines/ms.managedidentity.userassignedidentities.yml index c51bee014f..3a000edc95 100644 --- a/.azuredevops/modulePipelines/ms.managedidentity.userassignedidentities.yml +++ b/.azuredevops/modulePipelines/ms.managedidentity.userassignedidentities.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.ManagedIdentity/userAssignedIdentities' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.managedservices.registrationdefinitions.yml b/.azuredevops/modulePipelines/ms.managedservices.registrationdefinitions.yml index bfd8a7829a..d01c543fdf 100644 --- a/.azuredevops/modulePipelines/ms.managedservices.registrationdefinitions.yml +++ b/.azuredevops/modulePipelines/ms.managedservices.registrationdefinitions.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.ManagedServices/registrationDefinitions' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +51,7 @@ stages: - path: $(modulePath)/.parameters/parameters.json - path: $(modulePath)/.parameters/rg.parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.management.managementgroups.yml b/.azuredevops/modulePipelines/ms.management.managementgroups.yml index d4f1be5a6e..02bbb7d56e 100644 --- a/.azuredevops/modulePipelines/ms.management.managementgroups.yml +++ b/.azuredevops/modulePipelines/ms.management.managementgroups.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Management/managementGroups' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.netapp.netappaccounts.yml b/.azuredevops/modulePipelines/ms.netapp.netappaccounts.yml index 23625e0558..f002c23ac9 100644 --- a/.azuredevops/modulePipelines/ms.netapp.netappaccounts.yml +++ b/.azuredevops/modulePipelines/ms.netapp.netappaccounts.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.NetApp/netAppAccounts' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -52,7 +52,7 @@ stages: - path: $(modulePath)/.parameters/nfs3.parameters.json - path: $(modulePath)/.parameters/nfs41.parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.applicationgateways.yml b/.azuredevops/modulePipelines/ms.network.applicationgateways.yml index dd3a99b6af..138262c706 100644 --- a/.azuredevops/modulePipelines/ms.network.applicationgateways.yml +++ b/.azuredevops/modulePipelines/ms.network.applicationgateways.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/applicationGateways' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.applicationsecuritygroups.yml b/.azuredevops/modulePipelines/ms.network.applicationsecuritygroups.yml index fee389a364..49a12839fb 100644 --- a/.azuredevops/modulePipelines/ms.network.applicationsecuritygroups.yml +++ b/.azuredevops/modulePipelines/ms.network.applicationsecuritygroups.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/applicationSecurityGroups' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.azurefirewalls.yml b/.azuredevops/modulePipelines/ms.network.azurefirewalls.yml index 46ed556725..ce334534ef 100644 --- a/.azuredevops/modulePipelines/ms.network.azurefirewalls.yml +++ b/.azuredevops/modulePipelines/ms.network.azurefirewalls.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/azureFirewalls' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.bastionhosts.yml b/.azuredevops/modulePipelines/ms.network.bastionhosts.yml index f5fbdd5f2e..45e2ebc5a8 100644 --- a/.azuredevops/modulePipelines/ms.network.bastionhosts.yml +++ b/.azuredevops/modulePipelines/ms.network.bastionhosts.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/bastionHosts' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +51,7 @@ stages: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.connections.yml b/.azuredevops/modulePipelines/ms.network.connections.yml index d59cc87d10..8f4c6a98c4 100644 --- a/.azuredevops/modulePipelines/ms.network.connections.yml +++ b/.azuredevops/modulePipelines/ms.network.connections.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/connections' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.ddosprotectionplans.yml b/.azuredevops/modulePipelines/ms.network.ddosprotectionplans.yml index 77ac5fed93..c7584d1aa3 100644 --- a/.azuredevops/modulePipelines/ms.network.ddosprotectionplans.yml +++ b/.azuredevops/modulePipelines/ms.network.ddosprotectionplans.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/ddosProtectionPlans' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.expressroutecircuits.yml b/.azuredevops/modulePipelines/ms.network.expressroutecircuits.yml index fc1522a0c8..6dba53a34c 100644 --- a/.azuredevops/modulePipelines/ms.network.expressroutecircuits.yml +++ b/.azuredevops/modulePipelines/ms.network.expressroutecircuits.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/expressRouteCircuits' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.ipgroups.yml b/.azuredevops/modulePipelines/ms.network.ipgroups.yml index 7f577a8a0a..7c61d72654 100644 --- a/.azuredevops/modulePipelines/ms.network.ipgroups.yml +++ b/.azuredevops/modulePipelines/ms.network.ipgroups.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/ipGroups' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.loadbalancers.yml b/.azuredevops/modulePipelines/ms.network.loadbalancers.yml index 28854fb9e9..287be90e1d 100644 --- a/.azuredevops/modulePipelines/ms.network.loadbalancers.yml +++ b/.azuredevops/modulePipelines/ms.network.loadbalancers.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/loadBalancers' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.localnetworkgateways.yml b/.azuredevops/modulePipelines/ms.network.localnetworkgateways.yml index f1a8c83a0e..c136a95f8e 100644 --- a/.azuredevops/modulePipelines/ms.network.localnetworkgateways.yml +++ b/.azuredevops/modulePipelines/ms.network.localnetworkgateways.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/localNetworkGateways' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.natgateways.yml b/.azuredevops/modulePipelines/ms.network.natgateways.yml index 993af87743..650ba71306 100644 --- a/.azuredevops/modulePipelines/ms.network.natgateways.yml +++ b/.azuredevops/modulePipelines/ms.network.natgateways.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/natGateways' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.networksecuritygroups.yml b/.azuredevops/modulePipelines/ms.network.networksecuritygroups.yml index f7578a4601..84b10b34de 100644 --- a/.azuredevops/modulePipelines/ms.network.networksecuritygroups.yml +++ b/.azuredevops/modulePipelines/ms.network.networksecuritygroups.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/networkSecurityGroups' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.networkwatchers.yml b/.azuredevops/modulePipelines/ms.network.networkwatchers.yml index 3d10785508..3681f7efbc 100644 --- a/.azuredevops/modulePipelines/ms.network.networkwatchers.yml +++ b/.azuredevops/modulePipelines/ms.network.networkwatchers.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/networkWatchers' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +51,7 @@ stages: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.privatednszones.yml b/.azuredevops/modulePipelines/ms.network.privatednszones.yml index 765eea6573..099a0ccfb8 100644 --- a/.azuredevops/modulePipelines/ms.network.privatednszones.yml +++ b/.azuredevops/modulePipelines/ms.network.privatednszones.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/privateDnsZones' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.privateendpoints.yml b/.azuredevops/modulePipelines/ms.network.privateendpoints.yml index 1bc2908249..f74f4249ba 100644 --- a/.azuredevops/modulePipelines/ms.network.privateendpoints.yml +++ b/.azuredevops/modulePipelines/ms.network.privateendpoints.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/privateEndpoints' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +51,7 @@ stages: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.publicipaddresses.yml b/.azuredevops/modulePipelines/ms.network.publicipaddresses.yml index 60ce0b9049..8373977a6b 100644 --- a/.azuredevops/modulePipelines/ms.network.publicipaddresses.yml +++ b/.azuredevops/modulePipelines/ms.network.publicipaddresses.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/publicIPAddresses' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.publicipprefixes.yml b/.azuredevops/modulePipelines/ms.network.publicipprefixes.yml index a4982fe1fe..7a62301aaa 100644 --- a/.azuredevops/modulePipelines/ms.network.publicipprefixes.yml +++ b/.azuredevops/modulePipelines/ms.network.publicipprefixes.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/publicIPPrefixes' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.routetables.yml b/.azuredevops/modulePipelines/ms.network.routetables.yml index 64d4093fda..26f2ef71f1 100644 --- a/.azuredevops/modulePipelines/ms.network.routetables.yml +++ b/.azuredevops/modulePipelines/ms.network.routetables.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/routeTables' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.trafficmanagerprofiles.yml b/.azuredevops/modulePipelines/ms.network.trafficmanagerprofiles.yml index 47253c81b2..d7aa44e54c 100644 --- a/.azuredevops/modulePipelines/ms.network.trafficmanagerprofiles.yml +++ b/.azuredevops/modulePipelines/ms.network.trafficmanagerprofiles.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/trafficmanagerprofiles' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.virtualnetworkgateways.yml b/.azuredevops/modulePipelines/ms.network.virtualnetworkgateways.yml index afb47d442c..ba9ce5fe38 100644 --- a/.azuredevops/modulePipelines/ms.network.virtualnetworkgateways.yml +++ b/.azuredevops/modulePipelines/ms.network.virtualnetworkgateways.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/virtualNetworkGateways' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +51,7 @@ stages: - path: $(modulePath)/.parameters/expressRoute.parameters.json - path: $(modulePath)/.parameters/vpn.parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.virtualnetworks.yml b/.azuredevops/modulePipelines/ms.network.virtualnetworks.yml index e965cc48aa..3034421c3a 100644 --- a/.azuredevops/modulePipelines/ms.network.virtualnetworks.yml +++ b/.azuredevops/modulePipelines/ms.network.virtualnetworks.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/virtualNetworks' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +51,7 @@ stages: - path: $(modulePath)/.parameters/parameters.json - path: $(modulePath)/.parameters/vnetPeering.parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.virtualwans.yml b/.azuredevops/modulePipelines/ms.network.virtualwans.yml index b997e32f19..baff34a7ca 100644 --- a/.azuredevops/modulePipelines/ms.network.virtualwans.yml +++ b/.azuredevops/modulePipelines/ms.network.virtualwans.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Network/virtualWans' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.operationalinsights.workspaces.yml b/.azuredevops/modulePipelines/ms.operationalinsights.workspaces.yml index 2357f84e9d..642cafa9b6 100644 --- a/.azuredevops/modulePipelines/ms.operationalinsights.workspaces.yml +++ b/.azuredevops/modulePipelines/ms.operationalinsights.workspaces.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.OperationalInsights/workspaces' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +51,7 @@ stages: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.recoveryservices.vaults.yml b/.azuredevops/modulePipelines/ms.recoveryservices.vaults.yml index 63ef6ea2fa..c2f63fd18e 100644 --- a/.azuredevops/modulePipelines/ms.recoveryservices.vaults.yml +++ b/.azuredevops/modulePipelines/ms.recoveryservices.vaults.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.RecoveryServices/vaults' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.resources.deploymentscripts.yml b/.azuredevops/modulePipelines/ms.resources.deploymentscripts.yml index a5c210f7cd..f541c8f16d 100644 --- a/.azuredevops/modulePipelines/ms.resources.deploymentscripts.yml +++ b/.azuredevops/modulePipelines/ms.resources.deploymentscripts.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Resources/deploymentScripts' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.resources.resourcegroups.yml b/.azuredevops/modulePipelines/ms.resources.resourcegroups.yml index b0bf8ca75c..b75ff5746c 100644 --- a/.azuredevops/modulePipelines/ms.resources.resourcegroups.yml +++ b/.azuredevops/modulePipelines/ms.resources.resourcegroups.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Resources/resourceGroups' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.security.azuresecuritycenter.yml b/.azuredevops/modulePipelines/ms.security.azuresecuritycenter.yml index 2bd900bd7d..5b807adcf0 100644 --- a/.azuredevops/modulePipelines/ms.security.azuresecuritycenter.yml +++ b/.azuredevops/modulePipelines/ms.security.azuresecuritycenter.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Security/azureSecurityCenter' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.servicebus.namespaces.yml b/.azuredevops/modulePipelines/ms.servicebus.namespaces.yml index 2929e7bf24..2332b7bf4f 100644 --- a/.azuredevops/modulePipelines/ms.servicebus.namespaces.yml +++ b/.azuredevops/modulePipelines/ms.servicebus.namespaces.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.ServiceBus/namespaces' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +51,7 @@ stages: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.sql.managedinstances.yml b/.azuredevops/modulePipelines/ms.sql.managedinstances.yml index 5f3ca3d79a..bb30b5a9e2 100644 --- a/.azuredevops/modulePipelines/ms.sql.managedinstances.yml +++ b/.azuredevops/modulePipelines/ms.sql.managedinstances.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Sql/managedInstances' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +51,7 @@ stages: - path: $(modulePath)/.parameters/parameters.json defaultJobTimeoutInMinutes: 360 - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.sql.servers.yml b/.azuredevops/modulePipelines/ms.sql.servers.yml index cc0d7a23ff..29e0fc9c44 100644 --- a/.azuredevops/modulePipelines/ms.sql.servers.yml +++ b/.azuredevops/modulePipelines/ms.sql.servers.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Sql/servers' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.storage.storageaccounts.yml b/.azuredevops/modulePipelines/ms.storage.storageaccounts.yml index 3661b53f24..6d166c9d97 100644 --- a/.azuredevops/modulePipelines/ms.storage.storageaccounts.yml +++ b/.azuredevops/modulePipelines/ms.storage.storageaccounts.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Storage/storageAccounts' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -52,7 +52,7 @@ stages: - path: $(modulePath)/.parameters/parameters.json - path: $(modulePath)/.parameters/v1.parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.virtualmachineimages.imagetemplates.yml b/.azuredevops/modulePipelines/ms.virtualmachineimages.imagetemplates.yml index e8d8fbc6f1..1bdf035766 100644 --- a/.azuredevops/modulePipelines/ms.virtualmachineimages.imagetemplates.yml +++ b/.azuredevops/modulePipelines/ms.virtualmachineimages.imagetemplates.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.VirtualMachineImages/imageTemplates' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.web.connections.yml b/.azuredevops/modulePipelines/ms.web.connections.yml index 3b1ac77510..748c8afc8f 100644 --- a/.azuredevops/modulePipelines/ms.web.connections.yml +++ b/.azuredevops/modulePipelines/ms.web.connections.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Web/connections' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.web.hostingenvironments.yml b/.azuredevops/modulePipelines/ms.web.hostingenvironments.yml index b146a4840f..960dd17f05 100644 --- a/.azuredevops/modulePipelines/ms.web.hostingenvironments.yml +++ b/.azuredevops/modulePipelines/ms.web.hostingenvironments.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Web/hostingEnvironments' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.web.serverfarms.yml b/.azuredevops/modulePipelines/ms.web.serverfarms.yml index 7266de9509..a4a40da55d 100644 --- a/.azuredevops/modulePipelines/ms.web.serverfarms.yml +++ b/.azuredevops/modulePipelines/ms.web.serverfarms.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Web/serverfarms' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +50,7 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.web.sites.yml b/.azuredevops/modulePipelines/ms.web.sites.yml index 2f7d03e71c..a79cdd76b2 100644 --- a/.azuredevops/modulePipelines/ms.web.sites.yml +++ b/.azuredevops/modulePipelines/ms.web.sites.yml @@ -38,11 +38,11 @@ variables: value: '/arm/Microsoft.Web/sites' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -53,7 +53,7 @@ stages: - path: $(modulePath)/.parameters/wa.min.parameters.json - path: $(modulePath)/.parameters/wa.parameters.json - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/utilities/tools/AzureDevOps/src/devOpsPipelineTemplate.yml b/utilities/tools/AzureDevOps/src/devOpsPipelineTemplate.yml index 18a4fcfda3..27f4a07abb 100644 --- a/utilities/tools/AzureDevOps/src/devOpsPipelineTemplate.yml +++ b/utilities/tools/AzureDevOps/src/devOpsPipelineTemplate.yml @@ -38,18 +38,18 @@ variables: value: '/' stages: - - stage: Validation + - stage: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment + - stage: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' deploymentBlocks: - - stage: Publishing + - stage: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml From c5a479f905813275e453dc014c491825baad2a39 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Sun, 12 Dec 2021 11:25:07 +0100 Subject: [PATCH 100/112] Update to latest --- docs/wiki/PipelinesDesign.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/wiki/PipelinesDesign.md b/docs/wiki/PipelinesDesign.md index b7c9cd89fe..8f4966323c 100644 --- a/docs/wiki/PipelinesDesign.md +++ b/docs/wiki/PipelinesDesign.md @@ -58,12 +58,12 @@ Note that the pipeline comes with 4 runtime parameters you can provide when you To "build"/"bake" the modules, a dedicated pipeline is used for each module to validate their production readiness, by: -1. **Validate**: +1. **Pester tests**: 1. Running a set of static Pester tests against the template 1. Validating the template by invoking Azure’s validation API (Test-AzResourceGroupDeployment – or the same for other scopes) -1. **Test deploy**: we deploy each module by using a predefined set of parameters to a ‘sandbox’ subscription in Azure to see if it’s really working +1. **Deployment tests**: we deploy each module by using a predefined set of parameters to a ‘sandbox’ subscription in Azure to see if it’s really working 1. **Removal**: The test suite is cleaned up by removing all deployed test resources again -1. **Publish**: the proven results are copied/published to a configured location such as template specs, the bicep registry, Azure DevOps artifacts, etc. +1. **Publish module**: the proven results are copied/published to a configured location such as template specs, the bicep registry, Azure DevOps artifacts, etc. Pipeline phases From 693e34b479c6bca474690a905cf66d776e391c31 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Sun, 12 Dec 2021 11:28:35 +0100 Subject: [PATCH 101/112] Update to latest --- docs/wiki/PipelinesDesign.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/wiki/PipelinesDesign.md b/docs/wiki/PipelinesDesign.md index 8f4966323c..617d437f5a 100644 --- a/docs/wiki/PipelinesDesign.md +++ b/docs/wiki/PipelinesDesign.md @@ -13,7 +13,7 @@ This section gives you an overview of the design principals the pipelines follow - [Pipeline phases](#pipeline-phases) - [Validate](#validate) - [Test deploy](#test-deploy) - - [Removal](#removal) + - [Removal](#removal) - [Publish](#publish) - [Shared concepts](#shared-concepts) - [Prerequisites](#prerequisites) @@ -58,12 +58,12 @@ Note that the pipeline comes with 4 runtime parameters you can provide when you To "build"/"bake" the modules, a dedicated pipeline is used for each module to validate their production readiness, by: -1. **Pester tests**: +1. **Validate**: 1. Running a set of static Pester tests against the template 1. Validating the template by invoking Azure’s validation API (Test-AzResourceGroupDeployment – or the same for other scopes) -1. **Deployment tests**: we deploy each module by using a predefined set of parameters to a ‘sandbox’ subscription in Azure to see if it’s really working +1. **Test deploy**: we deploy each module by using a predefined set of parameters to a ‘sandbox’ subscription in Azure to see if it’s really working 1. **Removal**: The test suite is cleaned up by removing all deployed test resources again -1. **Publish module**: the proven results are copied/published to a configured location such as template specs, the bicep registry, Azure DevOps artifacts, etc. +1. **Publish**: the proven results are copied/published to a configured location such as template specs, the bicep registry, Azure DevOps artifacts, etc. Pipeline phases @@ -93,7 +93,7 @@ The parameter files used in this stage should ideally cover as many scenarios as Note that, for the deployments we have to account for certain [prerequisites](#prerequisites) and also consider the [tokens replacement](#tokens-replacement) logic we leverage on this platform. -### Removal +#### Removal The removal phase is strongly coupled with the previous deployment phase. Fundamentally, we want to remove any test-deployed resource after its test concluded. If we would not, we would generate unnecessary costs and may temper with any subsequent test. Some resources may require a dedicated logic to be removed. This logic should be stored alongside the generally utilized removal script in the `.utilities/pipelines/resourceRemoval` folder and be referenced by the `Remove-DeployedModule.ps1` script that orchestrates the removal. From a47d69f8b132544e98d5c2011f6b5a00dcc00962 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Sun, 12 Dec 2021 11:32:38 +0100 Subject: [PATCH 102/112] Update to latest --- .../pipelineTemplates/module.jobs.deploy.yml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml index cbd18c98f5..26ea62be79 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml @@ -242,18 +242,16 @@ jobs: $res = New-ModuleDeployment @functionInput -Verbose # Get deployment name - if($res -is [hashtable]) { - $deploymentName = $res['DeploymentName'] - } elseif($res -is [string]) { - $deploymentName = $res - } else { - throw ("Output-Type of New-ModuleDeployment invocation has invalid type [{0}]" -f $res.GetType()) + Write-Host ('##vso[task.setvariable variable=deploymentName]{0}' -f $res.deploymentName) + + # Populate further outputs + foreach ($outputKey in $res.deploymentOutput.Keys) { + Write-Output ('##vso[task.setvariable variable={0}]{1}' -f $outputKey, $res.deploymentOutput[$outputKey].Value) } - Write-Host "##vso[task.setvariable variable=deploymentName]$deploymentName" - if($res -is [hashtable]) { + if ($res.ContainsKey('exception')) { # Happens only if there is an exception - throw $res['Exception'] + throw $res.exception } # [Removal] task(s) From 5c005ed5d575dc6f2c997da1f4d46ab6c0291a92 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Sun, 12 Dec 2021 11:41:07 +0100 Subject: [PATCH 103/112] Update to latest --- .../modulePipelines/ms.analysisservices.servers.yml | 9 ++++++--- .../modulePipelines/ms.apimanagement.service.yml | 9 ++++++--- .../ms.authorization.policyassignments.yml | 9 ++++++--- .../ms.authorization.policydefinitions.yml | 9 ++++++--- .../ms.authorization.policyexemptions.yml | 9 ++++++--- .../ms.authorization.policysetdefinitions.yml | 9 ++++++--- .../modulePipelines/ms.authorization.roleassignments.yml | 9 ++++++--- .../modulePipelines/ms.authorization.roledefinitions.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.automanage.accounts.yml | 9 ++++++--- .../modulePipelines/ms.automation.automationaccounts.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.batch.batchaccounts.yml | 9 ++++++--- .../modulePipelines/ms.cognitiveservices.accounts.yml | 9 ++++++--- .../modulePipelines/ms.compute.availabilitysets.yml | 9 ++++++--- .../modulePipelines/ms.compute.diskencryptionsets.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.compute.galleries.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.compute.images.yml | 9 ++++++--- .../ms.compute.proximityplacementgroups.yml | 9 ++++++--- .../modulePipelines/ms.compute.virtualmachines.yml | 9 ++++++--- .../ms.compute.virtualmachinescalesets.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.consumption.budgets.yml | 9 ++++++--- .../ms.containerinstance.containergroups.yml | 9 ++++++--- .../modulePipelines/ms.containerregistry.registries.yml | 9 ++++++--- .../ms.containerservice.managedclusters.yml | 9 ++++++--- .../modulePipelines/ms.databricks.workspaces.yml | 9 ++++++--- .../modulePipelines/ms.datafactory.factories.yml | 9 ++++++--- .../ms.desktopvirtualization.applicationgroups.yml | 9 ++++++--- .../ms.desktopvirtualization.hostpools.yml | 9 ++++++--- .../ms.desktopvirtualization.workspaces.yml | 9 ++++++--- .../modulePipelines/ms.documentdb.databaseaccounts.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.eventgrid.topics.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.eventhub.namespaces.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.healthbot.healthbots.yml | 9 ++++++--- .../modulePipelines/ms.insights.actiongroups.yml | 9 ++++++--- .../modulePipelines/ms.insights.activitylogalerts.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.insights.components.yml | 9 ++++++--- .../modulePipelines/ms.insights.diagnosticsettings.yml | 9 ++++++--- .../modulePipelines/ms.insights.metricalerts.yml | 9 ++++++--- .../modulePipelines/ms.insights.privatelinkscopes.yml | 9 ++++++--- .../modulePipelines/ms.insights.scheduledqueryrules.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.keyvault.vaults.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.logic.workflows.yml | 9 ++++++--- .../ms.machinelearningservices.workspaces.yml | 9 ++++++--- .../ms.managedidentity.userassignedidentities.yml | 9 ++++++--- .../ms.managedservices.registrationdefinitions.yml | 9 ++++++--- .../modulePipelines/ms.management.managementgroups.yml | 9 ++++++--- .../modulePipelines/ms.netapp.netappaccounts.yml | 9 ++++++--- .../modulePipelines/ms.network.applicationgateways.yml | 9 ++++++--- .../ms.network.applicationsecuritygroups.yml | 9 ++++++--- .../modulePipelines/ms.network.azurefirewalls.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.network.bastionhosts.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.network.connections.yml | 9 ++++++--- .../modulePipelines/ms.network.ddosprotectionplans.yml | 9 ++++++--- .../modulePipelines/ms.network.expressroutecircuits.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.network.ipgroups.yml | 9 ++++++--- .../modulePipelines/ms.network.loadbalancers.yml | 9 ++++++--- .../modulePipelines/ms.network.localnetworkgateways.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.network.natgateways.yml | 9 ++++++--- .../modulePipelines/ms.network.networksecuritygroups.yml | 9 ++++++--- .../modulePipelines/ms.network.networkwatchers.yml | 9 ++++++--- .../modulePipelines/ms.network.privatednszones.yml | 9 ++++++--- .../modulePipelines/ms.network.privateendpoints.yml | 9 ++++++--- .../modulePipelines/ms.network.publicipaddresses.yml | 9 ++++++--- .../modulePipelines/ms.network.publicipprefixes.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.network.routetables.yml | 9 ++++++--- .../ms.network.trafficmanagerprofiles.yml | 9 ++++++--- .../ms.network.virtualnetworkgateways.yml | 9 ++++++--- .../modulePipelines/ms.network.virtualnetworks.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.network.virtualwans.yml | 9 ++++++--- .../ms.operationalinsights.workspaces.yml | 9 ++++++--- .../modulePipelines/ms.recoveryservices.vaults.yml | 9 ++++++--- .../modulePipelines/ms.resources.deploymentscripts.yml | 9 ++++++--- .../modulePipelines/ms.resources.resourcegroups.yml | 9 ++++++--- .../modulePipelines/ms.security.azuresecuritycenter.yml | 9 ++++++--- .../modulePipelines/ms.servicebus.namespaces.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.sql.managedinstances.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.sql.servers.yml | 9 ++++++--- .../modulePipelines/ms.storage.storageaccounts.yml | 9 ++++++--- .../ms.virtualmachineimages.imagetemplates.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.web.connections.yml | 9 ++++++--- .../modulePipelines/ms.web.hostingenvironments.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.web.serverfarms.yml | 9 ++++++--- .azuredevops/modulePipelines/ms.web.sites.yml | 9 ++++++--- .../tools/AzureDevOps/src/devOpsPipelineTemplate.yml | 9 ++++++--- 83 files changed, 498 insertions(+), 249 deletions(-) diff --git a/.azuredevops/modulePipelines/ms.analysisservices.servers.yml b/.azuredevops/modulePipelines/ms.analysisservices.servers.yml index fb8f2b6ae5..395a1dba9e 100644 --- a/.azuredevops/modulePipelines/ms.analysisservices.servers.yml +++ b/.azuredevops/modulePipelines/ms.analysisservices.servers.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.AnalysisServices/servers' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +53,8 @@ stages: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.apimanagement.service.yml b/.azuredevops/modulePipelines/ms.apimanagement.service.yml index fa43a31c21..8ac3f37524 100644 --- a/.azuredevops/modulePipelines/ms.apimanagement.service.yml +++ b/.azuredevops/modulePipelines/ms.apimanagement.service.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.ApiManagement/service' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +53,8 @@ stages: - path: $(modulePath)/.parameters/max.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml b/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml index e76aa0dac8..44c067e99d 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml @@ -38,10 +38,12 @@ variables: value: '/arm/Microsoft.Authorization/policyAssignments' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -52,7 +54,8 @@ stages: - path: $(modulePath)/.parameters/parameters.json templateFilePath: $(modulePath)/.bicep/nested_policyAssignments_sub.bicep - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml b/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml index 09b3d9c26e..8f2d84e1dd 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policydefinitions.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Authorization/policyDefinitions' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -53,7 +55,8 @@ stages: - path: $(modulePath)/.parameters/parameters.json templateFilePath: $(modulePath)/.bicep/nested_policyDefinitions_sub.bicep - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml b/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml index 80b6e2decc..265f983858 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policyexemptions.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Authorization/policyExemptions' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -53,7 +55,8 @@ stages: - path: $(modulePath)/.parameters/parameters.json templateFilePath: $(modulePath)/.bicep/nested_policyExemptions_sub.bicep - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml b/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml index 72437152e5..07dc74c22c 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policysetdefinitions.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Authorization/policySetDefinitions' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -53,7 +55,8 @@ stages: - path: $(modulePath)/.parameters/parameters.json templateFilePath: $(modulePath)/.bicep/nested_policySetDefinition_sub.bicep - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml b/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml index d18f49ad97..a3477c6486 100644 --- a/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml +++ b/.azuredevops/modulePipelines/ms.authorization.roleassignments.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Authorization/roleAssignments' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -53,7 +55,8 @@ stages: - path: $(modulePath)/.parameters/parameters.json templateFilePath: $(modulePath)/.bicep/nested_rbac_sub.bicep - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml b/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml index d49c446448..fab720300f 100644 --- a/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml +++ b/.azuredevops/modulePipelines/ms.authorization.roledefinitions.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Authorization/roleDefinitions' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -53,7 +55,8 @@ stages: - path: $(modulePath)/.parameters/parameters.json templateFilePath: $(modulePath)/.bicep/nested_roleDefinitions_sub.bicep - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.automanage.accounts.yml b/.azuredevops/modulePipelines/ms.automanage.accounts.yml index 1a5c6272fc..497a50862a 100644 --- a/.azuredevops/modulePipelines/ms.automanage.accounts.yml +++ b/.azuredevops/modulePipelines/ms.automanage.accounts.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Automanage/accounts' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.automation.automationaccounts.yml b/.azuredevops/modulePipelines/ms.automation.automationaccounts.yml index 373b106d7e..008122b18c 100644 --- a/.azuredevops/modulePipelines/ms.automation.automationaccounts.yml +++ b/.azuredevops/modulePipelines/ms.automation.automationaccounts.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Automation/automationAccounts' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +53,8 @@ stages: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.batch.batchaccounts.yml b/.azuredevops/modulePipelines/ms.batch.batchaccounts.yml index cf9873d3cf..11b941d728 100644 --- a/.azuredevops/modulePipelines/ms.batch.batchaccounts.yml +++ b/.azuredevops/modulePipelines/ms.batch.batchaccounts.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Batch/batchAccounts' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.cognitiveservices.accounts.yml b/.azuredevops/modulePipelines/ms.cognitiveservices.accounts.yml index 933d0fdcc2..496e51d831 100644 --- a/.azuredevops/modulePipelines/ms.cognitiveservices.accounts.yml +++ b/.azuredevops/modulePipelines/ms.cognitiveservices.accounts.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.CognitiveServices/accounts' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.compute.availabilitysets.yml b/.azuredevops/modulePipelines/ms.compute.availabilitysets.yml index 1833f71076..1ea2b813b9 100644 --- a/.azuredevops/modulePipelines/ms.compute.availabilitysets.yml +++ b/.azuredevops/modulePipelines/ms.compute.availabilitysets.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Compute/availabilitySets' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.compute.diskencryptionsets.yml b/.azuredevops/modulePipelines/ms.compute.diskencryptionsets.yml index de595729b5..4d705857e9 100644 --- a/.azuredevops/modulePipelines/ms.compute.diskencryptionsets.yml +++ b/.azuredevops/modulePipelines/ms.compute.diskencryptionsets.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Compute/diskEncryptionSets' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.compute.galleries.yml b/.azuredevops/modulePipelines/ms.compute.galleries.yml index 6f6497068c..d6b94e0376 100644 --- a/.azuredevops/modulePipelines/ms.compute.galleries.yml +++ b/.azuredevops/modulePipelines/ms.compute.galleries.yml @@ -38,7 +38,8 @@ variables: value: '/arm/Microsoft.Compute/galleries' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml parameters: @@ -46,7 +47,8 @@ stages: - path: $(modulePath)/.parameters/images.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -55,7 +57,8 @@ stages: - path: $(modulePath)/.parameters/images.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.compute.images.yml b/.azuredevops/modulePipelines/ms.compute.images.yml index 1f05e2e26c..d721278918 100644 --- a/.azuredevops/modulePipelines/ms.compute.images.yml +++ b/.azuredevops/modulePipelines/ms.compute.images.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Compute/images' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.compute.proximityplacementgroups.yml b/.azuredevops/modulePipelines/ms.compute.proximityplacementgroups.yml index 23748b3ab7..6a663f3453 100644 --- a/.azuredevops/modulePipelines/ms.compute.proximityplacementgroups.yml +++ b/.azuredevops/modulePipelines/ms.compute.proximityplacementgroups.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Compute/proximityPlacementGroups' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml b/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml index fa812e67f6..efb4901bc2 100644 --- a/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml +++ b/.azuredevops/modulePipelines/ms.compute.virtualmachines.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Compute/virtualMachines' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -53,7 +55,8 @@ stages: - path: $(modulePath)/.parameters/windows.min.parameters.json - path: $(modulePath)/.parameters/windows.parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.compute.virtualmachinescalesets.yml b/.azuredevops/modulePipelines/ms.compute.virtualmachinescalesets.yml index 9d2521dbb0..3ec6809b5b 100644 --- a/.azuredevops/modulePipelines/ms.compute.virtualmachinescalesets.yml +++ b/.azuredevops/modulePipelines/ms.compute.virtualmachinescalesets.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Compute/virtualMachineScaleSets' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -53,7 +55,8 @@ stages: - path: $(modulePath)/.parameters/windows.min.parameters.json - path: $(modulePath)/.parameters/windows.parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.consumption.budgets.yml b/.azuredevops/modulePipelines/ms.consumption.budgets.yml index 0ea0012a88..a6794d6fcb 100644 --- a/.azuredevops/modulePipelines/ms.consumption.budgets.yml +++ b/.azuredevops/modulePipelines/ms.consumption.budgets.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Consumption/budgets' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.containerinstance.containergroups.yml b/.azuredevops/modulePipelines/ms.containerinstance.containergroups.yml index ab5b02b626..49b2450976 100644 --- a/.azuredevops/modulePipelines/ms.containerinstance.containergroups.yml +++ b/.azuredevops/modulePipelines/ms.containerinstance.containergroups.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.ContainerInstance/containerGroups' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.containerregistry.registries.yml b/.azuredevops/modulePipelines/ms.containerregistry.registries.yml index 6e5938f7ab..3c79f55f9f 100644 --- a/.azuredevops/modulePipelines/ms.containerregistry.registries.yml +++ b/.azuredevops/modulePipelines/ms.containerregistry.registries.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.ContainerRegistry/registries' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.containerservice.managedclusters.yml b/.azuredevops/modulePipelines/ms.containerservice.managedclusters.yml index 037c2bf900..bfece1d9ac 100644 --- a/.azuredevops/modulePipelines/ms.containerservice.managedclusters.yml +++ b/.azuredevops/modulePipelines/ms.containerservice.managedclusters.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.ContainerService/managedClusters' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +53,8 @@ stages: - path: $(modulePath)/.parameters/azure.parameters.json - path: $(modulePath)/.parameters/kubenet.parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.databricks.workspaces.yml b/.azuredevops/modulePipelines/ms.databricks.workspaces.yml index c811b63b8a..e1b51111f2 100644 --- a/.azuredevops/modulePipelines/ms.databricks.workspaces.yml +++ b/.azuredevops/modulePipelines/ms.databricks.workspaces.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Databricks/workspaces' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.datafactory.factories.yml b/.azuredevops/modulePipelines/ms.datafactory.factories.yml index 28e0b49072..877c4b2e2a 100644 --- a/.azuredevops/modulePipelines/ms.datafactory.factories.yml +++ b/.azuredevops/modulePipelines/ms.datafactory.factories.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.DataFactory/factories' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.desktopvirtualization.applicationgroups.yml b/.azuredevops/modulePipelines/ms.desktopvirtualization.applicationgroups.yml index dc094c05f0..1a62e00938 100644 --- a/.azuredevops/modulePipelines/ms.desktopvirtualization.applicationgroups.yml +++ b/.azuredevops/modulePipelines/ms.desktopvirtualization.applicationgroups.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.DesktopVirtualization/applicationgroups' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +53,8 @@ stages: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.desktopvirtualization.hostpools.yml b/.azuredevops/modulePipelines/ms.desktopvirtualization.hostpools.yml index 573bb1173c..afa83c614b 100644 --- a/.azuredevops/modulePipelines/ms.desktopvirtualization.hostpools.yml +++ b/.azuredevops/modulePipelines/ms.desktopvirtualization.hostpools.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.DesktopVirtualization/hostpools' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.desktopvirtualization.workspaces.yml b/.azuredevops/modulePipelines/ms.desktopvirtualization.workspaces.yml index a7a9521075..fce79b94e2 100644 --- a/.azuredevops/modulePipelines/ms.desktopvirtualization.workspaces.yml +++ b/.azuredevops/modulePipelines/ms.desktopvirtualization.workspaces.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.DesktopVirtualization/workspaces' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.documentdb.databaseaccounts.yml b/.azuredevops/modulePipelines/ms.documentdb.databaseaccounts.yml index 81b9f45393..2f7efad7d0 100644 --- a/.azuredevops/modulePipelines/ms.documentdb.databaseaccounts.yml +++ b/.azuredevops/modulePipelines/ms.documentdb.databaseaccounts.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.DocumentDB/databaseAccounts' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -52,7 +54,8 @@ stages: - path: $(modulePath)/.parameters/plain.parameters.json - path: $(modulePath)/.parameters/sqldb.parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.eventgrid.topics.yml b/.azuredevops/modulePipelines/ms.eventgrid.topics.yml index 9987e7b85d..08e4c8995e 100644 --- a/.azuredevops/modulePipelines/ms.eventgrid.topics.yml +++ b/.azuredevops/modulePipelines/ms.eventgrid.topics.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.EventGrid/topics' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.eventhub.namespaces.yml b/.azuredevops/modulePipelines/ms.eventhub.namespaces.yml index 364f219ce6..2262d57a9d 100644 --- a/.azuredevops/modulePipelines/ms.eventhub.namespaces.yml +++ b/.azuredevops/modulePipelines/ms.eventhub.namespaces.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.EventHub/namespaces' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +53,8 @@ stages: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.healthbot.healthbots.yml b/.azuredevops/modulePipelines/ms.healthbot.healthbots.yml index 7c35bdc00e..d9fa80f662 100644 --- a/.azuredevops/modulePipelines/ms.healthbot.healthbots.yml +++ b/.azuredevops/modulePipelines/ms.healthbot.healthbots.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.HealthBot/healthBots' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.insights.actiongroups.yml b/.azuredevops/modulePipelines/ms.insights.actiongroups.yml index 61fe11f539..d767074fd3 100644 --- a/.azuredevops/modulePipelines/ms.insights.actiongroups.yml +++ b/.azuredevops/modulePipelines/ms.insights.actiongroups.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Insights/actionGroups' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.insights.activitylogalerts.yml b/.azuredevops/modulePipelines/ms.insights.activitylogalerts.yml index 1548cc56d6..cad6376c0d 100644 --- a/.azuredevops/modulePipelines/ms.insights.activitylogalerts.yml +++ b/.azuredevops/modulePipelines/ms.insights.activitylogalerts.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Insights/activityLogAlerts' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.insights.components.yml b/.azuredevops/modulePipelines/ms.insights.components.yml index 369570fa69..d7edf12ba9 100644 --- a/.azuredevops/modulePipelines/ms.insights.components.yml +++ b/.azuredevops/modulePipelines/ms.insights.components.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Insights/components' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.insights.diagnosticsettings.yml b/.azuredevops/modulePipelines/ms.insights.diagnosticsettings.yml index 2b22362441..f6479273be 100644 --- a/.azuredevops/modulePipelines/ms.insights.diagnosticsettings.yml +++ b/.azuredevops/modulePipelines/ms.insights.diagnosticsettings.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Insights/diagnosticSettings' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.insights.metricalerts.yml b/.azuredevops/modulePipelines/ms.insights.metricalerts.yml index a60684c335..6ba264ce34 100644 --- a/.azuredevops/modulePipelines/ms.insights.metricalerts.yml +++ b/.azuredevops/modulePipelines/ms.insights.metricalerts.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Insights/metricAlerts' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.insights.privatelinkscopes.yml b/.azuredevops/modulePipelines/ms.insights.privatelinkscopes.yml index b6f2a39848..a86205bf4e 100644 --- a/.azuredevops/modulePipelines/ms.insights.privatelinkscopes.yml +++ b/.azuredevops/modulePipelines/ms.insights.privatelinkscopes.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Insights/privateLinkScopes' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.insights.scheduledqueryrules.yml b/.azuredevops/modulePipelines/ms.insights.scheduledqueryrules.yml index fbc35078bb..213d90ad53 100644 --- a/.azuredevops/modulePipelines/ms.insights.scheduledqueryrules.yml +++ b/.azuredevops/modulePipelines/ms.insights.scheduledqueryrules.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Insights/scheduledQueryRules' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.keyvault.vaults.yml b/.azuredevops/modulePipelines/ms.keyvault.vaults.yml index b861c996e7..0ac1346c69 100644 --- a/.azuredevops/modulePipelines/ms.keyvault.vaults.yml +++ b/.azuredevops/modulePipelines/ms.keyvault.vaults.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.KeyVault/vaults' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +53,8 @@ stages: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.logic.workflows.yml b/.azuredevops/modulePipelines/ms.logic.workflows.yml index c3bff02aaf..64efe446b9 100644 --- a/.azuredevops/modulePipelines/ms.logic.workflows.yml +++ b/.azuredevops/modulePipelines/ms.logic.workflows.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Logic/workflows' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.machinelearningservices.workspaces.yml b/.azuredevops/modulePipelines/ms.machinelearningservices.workspaces.yml index 4bcb33f3f8..0e6dcff465 100644 --- a/.azuredevops/modulePipelines/ms.machinelearningservices.workspaces.yml +++ b/.azuredevops/modulePipelines/ms.machinelearningservices.workspaces.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.MachineLearningServices/workspaces' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.managedidentity.userassignedidentities.yml b/.azuredevops/modulePipelines/ms.managedidentity.userassignedidentities.yml index 3a000edc95..2f8f5c2378 100644 --- a/.azuredevops/modulePipelines/ms.managedidentity.userassignedidentities.yml +++ b/.azuredevops/modulePipelines/ms.managedidentity.userassignedidentities.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.ManagedIdentity/userAssignedIdentities' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.managedservices.registrationdefinitions.yml b/.azuredevops/modulePipelines/ms.managedservices.registrationdefinitions.yml index d01c543fdf..882de3b1ea 100644 --- a/.azuredevops/modulePipelines/ms.managedservices.registrationdefinitions.yml +++ b/.azuredevops/modulePipelines/ms.managedservices.registrationdefinitions.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.ManagedServices/registrationDefinitions' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +53,8 @@ stages: - path: $(modulePath)/.parameters/parameters.json - path: $(modulePath)/.parameters/rg.parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.management.managementgroups.yml b/.azuredevops/modulePipelines/ms.management.managementgroups.yml index 02bbb7d56e..007a7ea0ed 100644 --- a/.azuredevops/modulePipelines/ms.management.managementgroups.yml +++ b/.azuredevops/modulePipelines/ms.management.managementgroups.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Management/managementGroups' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.netapp.netappaccounts.yml b/.azuredevops/modulePipelines/ms.netapp.netappaccounts.yml index f002c23ac9..555516b59b 100644 --- a/.azuredevops/modulePipelines/ms.netapp.netappaccounts.yml +++ b/.azuredevops/modulePipelines/ms.netapp.netappaccounts.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.NetApp/netAppAccounts' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -52,7 +54,8 @@ stages: - path: $(modulePath)/.parameters/nfs3.parameters.json - path: $(modulePath)/.parameters/nfs41.parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.applicationgateways.yml b/.azuredevops/modulePipelines/ms.network.applicationgateways.yml index 138262c706..c77531065d 100644 --- a/.azuredevops/modulePipelines/ms.network.applicationgateways.yml +++ b/.azuredevops/modulePipelines/ms.network.applicationgateways.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/applicationGateways' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.applicationsecuritygroups.yml b/.azuredevops/modulePipelines/ms.network.applicationsecuritygroups.yml index 49a12839fb..0a77c78142 100644 --- a/.azuredevops/modulePipelines/ms.network.applicationsecuritygroups.yml +++ b/.azuredevops/modulePipelines/ms.network.applicationsecuritygroups.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/applicationSecurityGroups' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.azurefirewalls.yml b/.azuredevops/modulePipelines/ms.network.azurefirewalls.yml index ce334534ef..eec3c3e2ee 100644 --- a/.azuredevops/modulePipelines/ms.network.azurefirewalls.yml +++ b/.azuredevops/modulePipelines/ms.network.azurefirewalls.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/azureFirewalls' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.bastionhosts.yml b/.azuredevops/modulePipelines/ms.network.bastionhosts.yml index 45e2ebc5a8..0d005a2e32 100644 --- a/.azuredevops/modulePipelines/ms.network.bastionhosts.yml +++ b/.azuredevops/modulePipelines/ms.network.bastionhosts.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/bastionHosts' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +53,8 @@ stages: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.connections.yml b/.azuredevops/modulePipelines/ms.network.connections.yml index 8f4c6a98c4..e7e5ac3afd 100644 --- a/.azuredevops/modulePipelines/ms.network.connections.yml +++ b/.azuredevops/modulePipelines/ms.network.connections.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/connections' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.ddosprotectionplans.yml b/.azuredevops/modulePipelines/ms.network.ddosprotectionplans.yml index c7584d1aa3..e55bca2a98 100644 --- a/.azuredevops/modulePipelines/ms.network.ddosprotectionplans.yml +++ b/.azuredevops/modulePipelines/ms.network.ddosprotectionplans.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/ddosProtectionPlans' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.expressroutecircuits.yml b/.azuredevops/modulePipelines/ms.network.expressroutecircuits.yml index 6dba53a34c..cef1ccdcee 100644 --- a/.azuredevops/modulePipelines/ms.network.expressroutecircuits.yml +++ b/.azuredevops/modulePipelines/ms.network.expressroutecircuits.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/expressRouteCircuits' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.ipgroups.yml b/.azuredevops/modulePipelines/ms.network.ipgroups.yml index 7c61d72654..7538f14d2d 100644 --- a/.azuredevops/modulePipelines/ms.network.ipgroups.yml +++ b/.azuredevops/modulePipelines/ms.network.ipgroups.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/ipGroups' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.loadbalancers.yml b/.azuredevops/modulePipelines/ms.network.loadbalancers.yml index 287be90e1d..6f25287269 100644 --- a/.azuredevops/modulePipelines/ms.network.loadbalancers.yml +++ b/.azuredevops/modulePipelines/ms.network.loadbalancers.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/loadBalancers' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.localnetworkgateways.yml b/.azuredevops/modulePipelines/ms.network.localnetworkgateways.yml index c136a95f8e..fc981ac91a 100644 --- a/.azuredevops/modulePipelines/ms.network.localnetworkgateways.yml +++ b/.azuredevops/modulePipelines/ms.network.localnetworkgateways.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/localNetworkGateways' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.natgateways.yml b/.azuredevops/modulePipelines/ms.network.natgateways.yml index 650ba71306..adb71c15ea 100644 --- a/.azuredevops/modulePipelines/ms.network.natgateways.yml +++ b/.azuredevops/modulePipelines/ms.network.natgateways.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/natGateways' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.networksecuritygroups.yml b/.azuredevops/modulePipelines/ms.network.networksecuritygroups.yml index 84b10b34de..9d0881dbc7 100644 --- a/.azuredevops/modulePipelines/ms.network.networksecuritygroups.yml +++ b/.azuredevops/modulePipelines/ms.network.networksecuritygroups.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/networkSecurityGroups' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.networkwatchers.yml b/.azuredevops/modulePipelines/ms.network.networkwatchers.yml index 3681f7efbc..3b525b581f 100644 --- a/.azuredevops/modulePipelines/ms.network.networkwatchers.yml +++ b/.azuredevops/modulePipelines/ms.network.networkwatchers.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/networkWatchers' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +53,8 @@ stages: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.privatednszones.yml b/.azuredevops/modulePipelines/ms.network.privatednszones.yml index 099a0ccfb8..0bb013e5f8 100644 --- a/.azuredevops/modulePipelines/ms.network.privatednszones.yml +++ b/.azuredevops/modulePipelines/ms.network.privatednszones.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/privateDnsZones' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.privateendpoints.yml b/.azuredevops/modulePipelines/ms.network.privateendpoints.yml index f74f4249ba..b9e86be65f 100644 --- a/.azuredevops/modulePipelines/ms.network.privateendpoints.yml +++ b/.azuredevops/modulePipelines/ms.network.privateendpoints.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/privateEndpoints' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +53,8 @@ stages: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.publicipaddresses.yml b/.azuredevops/modulePipelines/ms.network.publicipaddresses.yml index 8373977a6b..badcb417ac 100644 --- a/.azuredevops/modulePipelines/ms.network.publicipaddresses.yml +++ b/.azuredevops/modulePipelines/ms.network.publicipaddresses.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/publicIPAddresses' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.publicipprefixes.yml b/.azuredevops/modulePipelines/ms.network.publicipprefixes.yml index 7a62301aaa..ee3ae3d98a 100644 --- a/.azuredevops/modulePipelines/ms.network.publicipprefixes.yml +++ b/.azuredevops/modulePipelines/ms.network.publicipprefixes.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/publicIPPrefixes' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.routetables.yml b/.azuredevops/modulePipelines/ms.network.routetables.yml index 26f2ef71f1..8dfd82292c 100644 --- a/.azuredevops/modulePipelines/ms.network.routetables.yml +++ b/.azuredevops/modulePipelines/ms.network.routetables.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/routeTables' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.trafficmanagerprofiles.yml b/.azuredevops/modulePipelines/ms.network.trafficmanagerprofiles.yml index d7aa44e54c..80e7d38df7 100644 --- a/.azuredevops/modulePipelines/ms.network.trafficmanagerprofiles.yml +++ b/.azuredevops/modulePipelines/ms.network.trafficmanagerprofiles.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/trafficmanagerprofiles' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.virtualnetworkgateways.yml b/.azuredevops/modulePipelines/ms.network.virtualnetworkgateways.yml index ba9ce5fe38..859dbced39 100644 --- a/.azuredevops/modulePipelines/ms.network.virtualnetworkgateways.yml +++ b/.azuredevops/modulePipelines/ms.network.virtualnetworkgateways.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/virtualNetworkGateways' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +53,8 @@ stages: - path: $(modulePath)/.parameters/expressRoute.parameters.json - path: $(modulePath)/.parameters/vpn.parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.virtualnetworks.yml b/.azuredevops/modulePipelines/ms.network.virtualnetworks.yml index 3034421c3a..8e4af17fc0 100644 --- a/.azuredevops/modulePipelines/ms.network.virtualnetworks.yml +++ b/.azuredevops/modulePipelines/ms.network.virtualnetworks.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/virtualNetworks' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +53,8 @@ stages: - path: $(modulePath)/.parameters/parameters.json - path: $(modulePath)/.parameters/vnetPeering.parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.network.virtualwans.yml b/.azuredevops/modulePipelines/ms.network.virtualwans.yml index baff34a7ca..fab75d09d2 100644 --- a/.azuredevops/modulePipelines/ms.network.virtualwans.yml +++ b/.azuredevops/modulePipelines/ms.network.virtualwans.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Network/virtualWans' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.operationalinsights.workspaces.yml b/.azuredevops/modulePipelines/ms.operationalinsights.workspaces.yml index 642cafa9b6..b941e93f5f 100644 --- a/.azuredevops/modulePipelines/ms.operationalinsights.workspaces.yml +++ b/.azuredevops/modulePipelines/ms.operationalinsights.workspaces.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.OperationalInsights/workspaces' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +53,8 @@ stages: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.recoveryservices.vaults.yml b/.azuredevops/modulePipelines/ms.recoveryservices.vaults.yml index c2f63fd18e..ef1ebcabf2 100644 --- a/.azuredevops/modulePipelines/ms.recoveryservices.vaults.yml +++ b/.azuredevops/modulePipelines/ms.recoveryservices.vaults.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.RecoveryServices/vaults' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.resources.deploymentscripts.yml b/.azuredevops/modulePipelines/ms.resources.deploymentscripts.yml index f541c8f16d..8d4733592b 100644 --- a/.azuredevops/modulePipelines/ms.resources.deploymentscripts.yml +++ b/.azuredevops/modulePipelines/ms.resources.deploymentscripts.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Resources/deploymentScripts' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.resources.resourcegroups.yml b/.azuredevops/modulePipelines/ms.resources.resourcegroups.yml index b75ff5746c..4f98a5ec58 100644 --- a/.azuredevops/modulePipelines/ms.resources.resourcegroups.yml +++ b/.azuredevops/modulePipelines/ms.resources.resourcegroups.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Resources/resourceGroups' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.security.azuresecuritycenter.yml b/.azuredevops/modulePipelines/ms.security.azuresecuritycenter.yml index 5b807adcf0..302b62963f 100644 --- a/.azuredevops/modulePipelines/ms.security.azuresecuritycenter.yml +++ b/.azuredevops/modulePipelines/ms.security.azuresecuritycenter.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Security/azureSecurityCenter' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.servicebus.namespaces.yml b/.azuredevops/modulePipelines/ms.servicebus.namespaces.yml index 2332b7bf4f..18a22a829e 100644 --- a/.azuredevops/modulePipelines/ms.servicebus.namespaces.yml +++ b/.azuredevops/modulePipelines/ms.servicebus.namespaces.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.ServiceBus/namespaces' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +53,8 @@ stages: - path: $(modulePath)/.parameters/min.parameters.json - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.sql.managedinstances.yml b/.azuredevops/modulePipelines/ms.sql.managedinstances.yml index bb30b5a9e2..9ad4e5a8c0 100644 --- a/.azuredevops/modulePipelines/ms.sql.managedinstances.yml +++ b/.azuredevops/modulePipelines/ms.sql.managedinstances.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Sql/managedInstances' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -51,7 +53,8 @@ stages: - path: $(modulePath)/.parameters/parameters.json defaultJobTimeoutInMinutes: 360 - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.sql.servers.yml b/.azuredevops/modulePipelines/ms.sql.servers.yml index 29e0fc9c44..88855325bb 100644 --- a/.azuredevops/modulePipelines/ms.sql.servers.yml +++ b/.azuredevops/modulePipelines/ms.sql.servers.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Sql/servers' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.storage.storageaccounts.yml b/.azuredevops/modulePipelines/ms.storage.storageaccounts.yml index 6d166c9d97..8869d678e8 100644 --- a/.azuredevops/modulePipelines/ms.storage.storageaccounts.yml +++ b/.azuredevops/modulePipelines/ms.storage.storageaccounts.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Storage/storageAccounts' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -52,7 +54,8 @@ stages: - path: $(modulePath)/.parameters/parameters.json - path: $(modulePath)/.parameters/v1.parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.virtualmachineimages.imagetemplates.yml b/.azuredevops/modulePipelines/ms.virtualmachineimages.imagetemplates.yml index 1bdf035766..0ff785ac20 100644 --- a/.azuredevops/modulePipelines/ms.virtualmachineimages.imagetemplates.yml +++ b/.azuredevops/modulePipelines/ms.virtualmachineimages.imagetemplates.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.VirtualMachineImages/imageTemplates' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.web.connections.yml b/.azuredevops/modulePipelines/ms.web.connections.yml index 748c8afc8f..d4b7ed0496 100644 --- a/.azuredevops/modulePipelines/ms.web.connections.yml +++ b/.azuredevops/modulePipelines/ms.web.connections.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Web/connections' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.web.hostingenvironments.yml b/.azuredevops/modulePipelines/ms.web.hostingenvironments.yml index 960dd17f05..fac295ca78 100644 --- a/.azuredevops/modulePipelines/ms.web.hostingenvironments.yml +++ b/.azuredevops/modulePipelines/ms.web.hostingenvironments.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Web/hostingEnvironments' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.web.serverfarms.yml b/.azuredevops/modulePipelines/ms.web.serverfarms.yml index a4a40da55d..19fa310daf 100644 --- a/.azuredevops/modulePipelines/ms.web.serverfarms.yml +++ b/.azuredevops/modulePipelines/ms.web.serverfarms.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Web/serverfarms' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -50,7 +52,8 @@ stages: deploymentBlocks: - path: $(modulePath)/.parameters/parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/.azuredevops/modulePipelines/ms.web.sites.yml b/.azuredevops/modulePipelines/ms.web.sites.yml index a79cdd76b2..d4944df4a1 100644 --- a/.azuredevops/modulePipelines/ms.web.sites.yml +++ b/.azuredevops/modulePipelines/ms.web.sites.yml @@ -38,11 +38,13 @@ variables: value: '/arm/Microsoft.Web/sites' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: @@ -53,7 +55,8 @@ stages: - path: $(modulePath)/.parameters/wa.min.parameters.json - path: $(modulePath)/.parameters/wa.parameters.json - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml diff --git a/utilities/tools/AzureDevOps/src/devOpsPipelineTemplate.yml b/utilities/tools/AzureDevOps/src/devOpsPipelineTemplate.yml index 27f4a07abb..a30669e22b 100644 --- a/utilities/tools/AzureDevOps/src/devOpsPipelineTemplate.yml +++ b/utilities/tools/AzureDevOps/src/devOpsPipelineTemplate.yml @@ -38,18 +38,21 @@ variables: value: '/' stages: - - stage: Pester tests + - stage: Validation + displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml - - stage: Deployment tests + - stage: Deployment + displayName: Deployment tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.deploy.yml parameters: removeDeployment: '${{ parameters.removeDeployment }}' deploymentBlocks: - - stage: Publish module + - stage: Publishing + displayName: Publish module condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.publish.yml From 23deb397f47db85e07bd75cd2e399b6e0177b461 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Mon, 13 Dec 2021 11:54:01 +0100 Subject: [PATCH 104/112] Renamed gh variables --- .github/workflows/ms.analysisservices.servers.yml | 4 ++-- .github/workflows/ms.apimanagement.service.yml | 4 ++-- .github/workflows/ms.authorization.policyassignments.yml | 4 ++-- .github/workflows/ms.authorization.policydefinitions.yml | 4 ++-- .github/workflows/ms.authorization.policyexemptions.yml | 4 ++-- .github/workflows/ms.authorization.policysetdefinitions.yml | 4 ++-- .github/workflows/ms.authorization.roleassignments.yml | 4 ++-- .github/workflows/ms.authorization.roledefinitions.yml | 4 ++-- .github/workflows/ms.automanage.accounts.yml | 4 ++-- .github/workflows/ms.automation.automationaccounts.yml | 4 ++-- .github/workflows/ms.batch.batchaccounts.yml | 4 ++-- .github/workflows/ms.cognitiveservices.accounts.yml | 4 ++-- .github/workflows/ms.compute.availabilitysets.yml | 4 ++-- .github/workflows/ms.compute.diskencryptionsets.yml | 4 ++-- .github/workflows/ms.compute.galleries.yml | 4 ++-- .github/workflows/ms.compute.images.yml | 4 ++-- .github/workflows/ms.compute.proximityplacementgroups.yml | 4 ++-- .github/workflows/ms.compute.virtualmachines.yml | 4 ++-- .github/workflows/ms.compute.virtualmachinescalesets.yml | 4 ++-- .github/workflows/ms.consumption.budgets.yml | 4 ++-- .github/workflows/ms.containerinstance.containergroups.yml | 4 ++-- .github/workflows/ms.containerregistry.registries.yml | 4 ++-- .github/workflows/ms.containerservice.managedclusters.yml | 4 ++-- .github/workflows/ms.databricks.workspaces.yml | 4 ++-- .github/workflows/ms.datafactory.factories.yml | 4 ++-- .../workflows/ms.desktopvirtualization.applicationgroups.yml | 4 ++-- .github/workflows/ms.desktopvirtualization.hostpools.yml | 4 ++-- .github/workflows/ms.desktopvirtualization.workspaces.yml | 4 ++-- .github/workflows/ms.documentdb.databaseaccounts.yml | 4 ++-- .github/workflows/ms.eventgrid.topics.yml | 4 ++-- .github/workflows/ms.eventhub.namespaces.yml | 4 ++-- .github/workflows/ms.healthbot.healthbots.yml | 4 ++-- .github/workflows/ms.insights.actiongroups.yml | 4 ++-- .github/workflows/ms.insights.activitylogalerts.yml | 4 ++-- .github/workflows/ms.insights.components.yml | 4 ++-- .github/workflows/ms.insights.diagnosticsettings.yml | 4 ++-- .github/workflows/ms.insights.metricalerts.yml | 4 ++-- .github/workflows/ms.insights.privatelinkscopes.yml | 4 ++-- .github/workflows/ms.insights.scheduledqueryrules.yml | 4 ++-- .github/workflows/ms.keyvault.vaults.yml | 4 ++-- .github/workflows/ms.logic.workflows.yml | 4 ++-- .github/workflows/ms.machinelearningservices.workspaces.yml | 4 ++-- .../workflows/ms.managedidentity.userassignedidentities.yml | 4 ++-- .../workflows/ms.managedservices.registrationdefinitions.yml | 4 ++-- .github/workflows/ms.management.managementgroups.yml | 4 ++-- .github/workflows/ms.netapp.netappaccounts.yml | 4 ++-- .github/workflows/ms.network.applicationgateways.yml | 4 ++-- .github/workflows/ms.network.applicationsecuritygroups.yml | 4 ++-- .github/workflows/ms.network.azurefirewalls.yml | 4 ++-- .github/workflows/ms.network.bastionhosts.yml | 4 ++-- .github/workflows/ms.network.connections.yml | 4 ++-- .github/workflows/ms.network.ddosprotectionplans.yml | 4 ++-- .github/workflows/ms.network.expressroutecircuits.yml | 4 ++-- .github/workflows/ms.network.firewallpolicies.yml | 4 ++-- .github/workflows/ms.network.ipgroups.yml | 4 ++-- .github/workflows/ms.network.loadbalancers.yml | 4 ++-- .github/workflows/ms.network.localnetworkgateways.yml | 4 ++-- .github/workflows/ms.network.natgateways.yml | 4 ++-- .github/workflows/ms.network.networksecuritygroups.yml | 4 ++-- .github/workflows/ms.network.networkwatchers.yml | 4 ++-- .github/workflows/ms.network.privatednszones.yml | 4 ++-- .github/workflows/ms.network.privateendpoints.yml | 4 ++-- .github/workflows/ms.network.publicipaddresses.yml | 4 ++-- .github/workflows/ms.network.publicipprefixes.yml | 4 ++-- .github/workflows/ms.network.routetables.yml | 4 ++-- .github/workflows/ms.network.trafficmanagerprofiles.yml | 4 ++-- .github/workflows/ms.network.virtualnetworkgateways.yml | 4 ++-- .github/workflows/ms.network.virtualnetworks.yml | 4 ++-- .github/workflows/ms.network.virtualwans.yml | 4 ++-- .github/workflows/ms.operationalinsights.workspaces.yml | 4 ++-- .github/workflows/ms.recoveryservices.vaults.yml | 4 ++-- .github/workflows/ms.resources.deploymentscripts.yml | 4 ++-- .github/workflows/ms.resources.resourcegroups.yml | 4 ++-- .github/workflows/ms.security.azuresecuritycenter.yml | 4 ++-- .github/workflows/ms.servicebus.namespaces.yml | 4 ++-- .github/workflows/ms.sql.managedinstances.yml | 4 ++-- .github/workflows/ms.sql.servers.yml | 4 ++-- .github/workflows/ms.storage.storageaccounts.yml | 4 ++-- .github/workflows/ms.virtualmachineimages.imagetemplates.yml | 4 ++-- .github/workflows/ms.web.connections.yml | 4 ++-- .github/workflows/ms.web.hostingenvironments.yml | 4 ++-- .github/workflows/ms.web.serverfarms.yml | 4 ++-- .github/workflows/ms.web.sites.yml | 4 ++-- 83 files changed, 166 insertions(+), 166 deletions(-) diff --git a/.github/workflows/ms.analysisservices.servers.yml b/.github/workflows/ms.analysisservices.servers.yml index aebd8e1d65..6f79bc1ac4 100644 --- a/.github/workflows/ms.analysisservices.servers.yml +++ b/.github/workflows/ms.analysisservices.servers.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.apimanagement.service.yml b/.github/workflows/ms.apimanagement.service.yml index e81f525d51..1e5b5c70b2 100644 --- a/.github/workflows/ms.apimanagement.service.yml +++ b/.github/workflows/ms.apimanagement.service.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.authorization.policyassignments.yml b/.github/workflows/ms.authorization.policyassignments.yml index 89c93f2ead..d4c1a06e1a 100644 --- a/.github/workflows/ms.authorization.policyassignments.yml +++ b/.github/workflows/ms.authorization.policyassignments.yml @@ -99,7 +99,7 @@ jobs: uses: deep-mm/set-variables@v1.0 with: # Name of variable file - variableFileName: 'variables.module' # Don't write .json here + variableFileName: 'global.variables' # Don't write .json here # ------------------- # ## Deploy & Remove ## # ------------------- # @@ -132,7 +132,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.authorization.policydefinitions.yml b/.github/workflows/ms.authorization.policydefinitions.yml index a6d1af8f1d..0ada4208ab 100644 --- a/.github/workflows/ms.authorization.policydefinitions.yml +++ b/.github/workflows/ms.authorization.policydefinitions.yml @@ -99,7 +99,7 @@ jobs: uses: deep-mm/set-variables@v1.0 with: # Name of variable file - variableFileName: 'variables.module' # Don't write .json here + variableFileName: 'global.variables' # Don't write .json here # ------------------- # ## Deploy & Remove ## # ------------------- # @@ -132,7 +132,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.authorization.policyexemptions.yml b/.github/workflows/ms.authorization.policyexemptions.yml index 5f147bb20d..b10c8eee25 100644 --- a/.github/workflows/ms.authorization.policyexemptions.yml +++ b/.github/workflows/ms.authorization.policyexemptions.yml @@ -99,7 +99,7 @@ jobs: uses: deep-mm/set-variables@v1.0 with: # Name of variable file - variableFileName: 'variables.module' # Don't write .json here + variableFileName: 'global.variables' # Don't write .json here # ------------------- # ## Deploy & Remove ## # ------------------- # @@ -132,7 +132,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.authorization.policysetdefinitions.yml b/.github/workflows/ms.authorization.policysetdefinitions.yml index 5f20cc44b7..fb5b20adc6 100644 --- a/.github/workflows/ms.authorization.policysetdefinitions.yml +++ b/.github/workflows/ms.authorization.policysetdefinitions.yml @@ -99,7 +99,7 @@ jobs: uses: deep-mm/set-variables@v1.0 with: # Name of variable file - variableFileName: 'variables.module' # Don't write .json here + variableFileName: 'global.variables' # Don't write .json here # ------------------- # ## Deploy & Remove ## # ------------------- # @@ -132,7 +132,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.authorization.roleassignments.yml b/.github/workflows/ms.authorization.roleassignments.yml index 40af4d39ed..c64739a3e2 100644 --- a/.github/workflows/ms.authorization.roleassignments.yml +++ b/.github/workflows/ms.authorization.roleassignments.yml @@ -99,7 +99,7 @@ jobs: uses: deep-mm/set-variables@v1.0 with: # Name of variable file - variableFileName: 'variables.module' # Don't write .json here + variableFileName: 'global.variables' # Don't write .json here # ------------------- # ## Deploy & Remove ## # ------------------- # @@ -132,7 +132,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.authorization.roledefinitions.yml b/.github/workflows/ms.authorization.roledefinitions.yml index e6acdafdce..d1c58637b0 100644 --- a/.github/workflows/ms.authorization.roledefinitions.yml +++ b/.github/workflows/ms.authorization.roledefinitions.yml @@ -99,7 +99,7 @@ jobs: uses: deep-mm/set-variables@v1.0 with: # Name of variable file - variableFileName: 'variables.module' # Don't write .json here + variableFileName: 'global.variables' # Don't write .json here # ------------------- # ## Deploy & Remove ## # ------------------- # @@ -132,7 +132,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.automanage.accounts.yml b/.github/workflows/ms.automanage.accounts.yml index 47d70d9a16..e217e1e288 100644 --- a/.github/workflows/ms.automanage.accounts.yml +++ b/.github/workflows/ms.automanage.accounts.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.automation.automationaccounts.yml b/.github/workflows/ms.automation.automationaccounts.yml index bcc5f85c64..f775c2d98a 100644 --- a/.github/workflows/ms.automation.automationaccounts.yml +++ b/.github/workflows/ms.automation.automationaccounts.yml @@ -99,7 +99,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -129,7 +129,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.batch.batchaccounts.yml b/.github/workflows/ms.batch.batchaccounts.yml index 0a258d8a8c..41d9c96ddd 100644 --- a/.github/workflows/ms.batch.batchaccounts.yml +++ b/.github/workflows/ms.batch.batchaccounts.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.cognitiveservices.accounts.yml b/.github/workflows/ms.cognitiveservices.accounts.yml index 0f4464a3c3..acba513bc9 100644 --- a/.github/workflows/ms.cognitiveservices.accounts.yml +++ b/.github/workflows/ms.cognitiveservices.accounts.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.compute.availabilitysets.yml b/.github/workflows/ms.compute.availabilitysets.yml index 41131cdcad..d57ea6d310 100644 --- a/.github/workflows/ms.compute.availabilitysets.yml +++ b/.github/workflows/ms.compute.availabilitysets.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.compute.diskencryptionsets.yml b/.github/workflows/ms.compute.diskencryptionsets.yml index becc3cc29e..308171c39c 100644 --- a/.github/workflows/ms.compute.diskencryptionsets.yml +++ b/.github/workflows/ms.compute.diskencryptionsets.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.compute.galleries.yml b/.github/workflows/ms.compute.galleries.yml index 0a310fe966..7bb742ffc8 100644 --- a/.github/workflows/ms.compute.galleries.yml +++ b/.github/workflows/ms.compute.galleries.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.compute.images.yml b/.github/workflows/ms.compute.images.yml index 0cdb4d2205..178d2c1139 100644 --- a/.github/workflows/ms.compute.images.yml +++ b/.github/workflows/ms.compute.images.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.compute.proximityplacementgroups.yml b/.github/workflows/ms.compute.proximityplacementgroups.yml index 8c9264576e..0a92d36ee7 100644 --- a/.github/workflows/ms.compute.proximityplacementgroups.yml +++ b/.github/workflows/ms.compute.proximityplacementgroups.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.compute.virtualmachines.yml b/.github/workflows/ms.compute.virtualmachines.yml index a101ec262d..7fd0197659 100644 --- a/.github/workflows/ms.compute.virtualmachines.yml +++ b/.github/workflows/ms.compute.virtualmachines.yml @@ -104,7 +104,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -134,7 +134,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.compute.virtualmachinescalesets.yml b/.github/workflows/ms.compute.virtualmachinescalesets.yml index 68adda5ab1..f38a3eca75 100644 --- a/.github/workflows/ms.compute.virtualmachinescalesets.yml +++ b/.github/workflows/ms.compute.virtualmachinescalesets.yml @@ -104,7 +104,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -134,7 +134,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.consumption.budgets.yml b/.github/workflows/ms.consumption.budgets.yml index 3ec2fe80b3..cd7b3cee32 100644 --- a/.github/workflows/ms.consumption.budgets.yml +++ b/.github/workflows/ms.consumption.budgets.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.containerinstance.containergroups.yml b/.github/workflows/ms.containerinstance.containergroups.yml index acfe671ccc..d57fa5cbc7 100644 --- a/.github/workflows/ms.containerinstance.containergroups.yml +++ b/.github/workflows/ms.containerinstance.containergroups.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.containerregistry.registries.yml b/.github/workflows/ms.containerregistry.registries.yml index cfc67c3c55..a88a177a0c 100644 --- a/.github/workflows/ms.containerregistry.registries.yml +++ b/.github/workflows/ms.containerregistry.registries.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.containerservice.managedclusters.yml b/.github/workflows/ms.containerservice.managedclusters.yml index 7cb6f902c9..f2ec3639c4 100644 --- a/.github/workflows/ms.containerservice.managedclusters.yml +++ b/.github/workflows/ms.containerservice.managedclusters.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.databricks.workspaces.yml b/.github/workflows/ms.databricks.workspaces.yml index 3d3bfd761f..81bd8265b0 100644 --- a/.github/workflows/ms.databricks.workspaces.yml +++ b/.github/workflows/ms.databricks.workspaces.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.datafactory.factories.yml b/.github/workflows/ms.datafactory.factories.yml index e2aa6f173b..9a726ea05b 100644 --- a/.github/workflows/ms.datafactory.factories.yml +++ b/.github/workflows/ms.datafactory.factories.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.desktopvirtualization.applicationgroups.yml b/.github/workflows/ms.desktopvirtualization.applicationgroups.yml index bf47fc5c7c..141ad320ac 100644 --- a/.github/workflows/ms.desktopvirtualization.applicationgroups.yml +++ b/.github/workflows/ms.desktopvirtualization.applicationgroups.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.desktopvirtualization.hostpools.yml b/.github/workflows/ms.desktopvirtualization.hostpools.yml index e871467c1b..01aba38b21 100644 --- a/.github/workflows/ms.desktopvirtualization.hostpools.yml +++ b/.github/workflows/ms.desktopvirtualization.hostpools.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.desktopvirtualization.workspaces.yml b/.github/workflows/ms.desktopvirtualization.workspaces.yml index bb3557390d..13ceaf46df 100644 --- a/.github/workflows/ms.desktopvirtualization.workspaces.yml +++ b/.github/workflows/ms.desktopvirtualization.workspaces.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.documentdb.databaseaccounts.yml b/.github/workflows/ms.documentdb.databaseaccounts.yml index 4b7fbcd854..eb7ee7b209 100644 --- a/.github/workflows/ms.documentdb.databaseaccounts.yml +++ b/.github/workflows/ms.documentdb.databaseaccounts.yml @@ -103,7 +103,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -133,7 +133,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.eventgrid.topics.yml b/.github/workflows/ms.eventgrid.topics.yml index 0755980e9c..a523590fa5 100644 --- a/.github/workflows/ms.eventgrid.topics.yml +++ b/.github/workflows/ms.eventgrid.topics.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.eventhub.namespaces.yml b/.github/workflows/ms.eventhub.namespaces.yml index 7066515ab2..593164f377 100644 --- a/.github/workflows/ms.eventhub.namespaces.yml +++ b/.github/workflows/ms.eventhub.namespaces.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.healthbot.healthbots.yml b/.github/workflows/ms.healthbot.healthbots.yml index dafcde541a..0ab48c5053 100644 --- a/.github/workflows/ms.healthbot.healthbots.yml +++ b/.github/workflows/ms.healthbot.healthbots.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.insights.actiongroups.yml b/.github/workflows/ms.insights.actiongroups.yml index b56368d5b8..026fbad4cd 100644 --- a/.github/workflows/ms.insights.actiongroups.yml +++ b/.github/workflows/ms.insights.actiongroups.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.insights.activitylogalerts.yml b/.github/workflows/ms.insights.activitylogalerts.yml index bfb5ef98df..4aeef57498 100644 --- a/.github/workflows/ms.insights.activitylogalerts.yml +++ b/.github/workflows/ms.insights.activitylogalerts.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.insights.components.yml b/.github/workflows/ms.insights.components.yml index 7a97f90ea6..84c251cfea 100644 --- a/.github/workflows/ms.insights.components.yml +++ b/.github/workflows/ms.insights.components.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.insights.diagnosticsettings.yml b/.github/workflows/ms.insights.diagnosticsettings.yml index 57523089a6..477321678a 100644 --- a/.github/workflows/ms.insights.diagnosticsettings.yml +++ b/.github/workflows/ms.insights.diagnosticsettings.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.insights.metricalerts.yml b/.github/workflows/ms.insights.metricalerts.yml index 114e0972ec..fd26bd4eef 100644 --- a/.github/workflows/ms.insights.metricalerts.yml +++ b/.github/workflows/ms.insights.metricalerts.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.insights.privatelinkscopes.yml b/.github/workflows/ms.insights.privatelinkscopes.yml index 0cac1796e4..867a0fff01 100644 --- a/.github/workflows/ms.insights.privatelinkscopes.yml +++ b/.github/workflows/ms.insights.privatelinkscopes.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.insights.scheduledqueryrules.yml b/.github/workflows/ms.insights.scheduledqueryrules.yml index 8e4cee18f1..ac511dfc7b 100644 --- a/.github/workflows/ms.insights.scheduledqueryrules.yml +++ b/.github/workflows/ms.insights.scheduledqueryrules.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.keyvault.vaults.yml b/.github/workflows/ms.keyvault.vaults.yml index 0596b6c517..30b361f887 100644 --- a/.github/workflows/ms.keyvault.vaults.yml +++ b/.github/workflows/ms.keyvault.vaults.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.logic.workflows.yml b/.github/workflows/ms.logic.workflows.yml index f007f5049e..ed00ecd551 100644 --- a/.github/workflows/ms.logic.workflows.yml +++ b/.github/workflows/ms.logic.workflows.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.machinelearningservices.workspaces.yml b/.github/workflows/ms.machinelearningservices.workspaces.yml index 4d64a39399..732bfe9a8e 100644 --- a/.github/workflows/ms.machinelearningservices.workspaces.yml +++ b/.github/workflows/ms.machinelearningservices.workspaces.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.managedidentity.userassignedidentities.yml b/.github/workflows/ms.managedidentity.userassignedidentities.yml index 4835db032f..542ee8721c 100644 --- a/.github/workflows/ms.managedidentity.userassignedidentities.yml +++ b/.github/workflows/ms.managedidentity.userassignedidentities.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.managedservices.registrationdefinitions.yml b/.github/workflows/ms.managedservices.registrationdefinitions.yml index 2151b77a89..e743d53023 100644 --- a/.github/workflows/ms.managedservices.registrationdefinitions.yml +++ b/.github/workflows/ms.managedservices.registrationdefinitions.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.management.managementgroups.yml b/.github/workflows/ms.management.managementgroups.yml index 0a278578f2..fa1cc4ed57 100644 --- a/.github/workflows/ms.management.managementgroups.yml +++ b/.github/workflows/ms.management.managementgroups.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.netapp.netappaccounts.yml b/.github/workflows/ms.netapp.netappaccounts.yml index 40fe43b131..9a29a45d66 100644 --- a/.github/workflows/ms.netapp.netappaccounts.yml +++ b/.github/workflows/ms.netapp.netappaccounts.yml @@ -103,7 +103,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -133,7 +133,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.applicationgateways.yml b/.github/workflows/ms.network.applicationgateways.yml index a7a5d73b87..14e29f4f2e 100644 --- a/.github/workflows/ms.network.applicationgateways.yml +++ b/.github/workflows/ms.network.applicationgateways.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.applicationsecuritygroups.yml b/.github/workflows/ms.network.applicationsecuritygroups.yml index bd5b9de89f..71fe9c8ad3 100644 --- a/.github/workflows/ms.network.applicationsecuritygroups.yml +++ b/.github/workflows/ms.network.applicationsecuritygroups.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.azurefirewalls.yml b/.github/workflows/ms.network.azurefirewalls.yml index 9816ad1ed7..55cefaec50 100644 --- a/.github/workflows/ms.network.azurefirewalls.yml +++ b/.github/workflows/ms.network.azurefirewalls.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.bastionhosts.yml b/.github/workflows/ms.network.bastionhosts.yml index 495c42da22..16d1965f06 100644 --- a/.github/workflows/ms.network.bastionhosts.yml +++ b/.github/workflows/ms.network.bastionhosts.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.connections.yml b/.github/workflows/ms.network.connections.yml index 78eba8e1db..5ed5472db2 100644 --- a/.github/workflows/ms.network.connections.yml +++ b/.github/workflows/ms.network.connections.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.ddosprotectionplans.yml b/.github/workflows/ms.network.ddosprotectionplans.yml index a76b9b8e44..a0a298915b 100644 --- a/.github/workflows/ms.network.ddosprotectionplans.yml +++ b/.github/workflows/ms.network.ddosprotectionplans.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.expressroutecircuits.yml b/.github/workflows/ms.network.expressroutecircuits.yml index 59d583b3bd..ad35cbf123 100644 --- a/.github/workflows/ms.network.expressroutecircuits.yml +++ b/.github/workflows/ms.network.expressroutecircuits.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.firewallpolicies.yml b/.github/workflows/ms.network.firewallpolicies.yml index dc78781521..b85fea5a49 100644 --- a/.github/workflows/ms.network.firewallpolicies.yml +++ b/.github/workflows/ms.network.firewallpolicies.yml @@ -117,7 +117,7 @@ jobs: uses: deep-mm/set-variables@v1.0 with: # Name of variable file - variableFileName: 'variables.module' # Don't write .json here + variableFileName: 'global.variables' # Don't write .json here # ----------- # ## Dry Run ## # ----------- # @@ -164,7 +164,7 @@ jobs: uses: deep-mm/set-variables@v1.0 with: # Name of variable file - variableFileName: 'variables.module' # Don't write .json here + variableFileName: 'global.variables' # Don't write .json here - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.ipgroups.yml b/.github/workflows/ms.network.ipgroups.yml index a80bd585a1..243c19a1f6 100644 --- a/.github/workflows/ms.network.ipgroups.yml +++ b/.github/workflows/ms.network.ipgroups.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.loadbalancers.yml b/.github/workflows/ms.network.loadbalancers.yml index 6a09506fba..a8897860ca 100644 --- a/.github/workflows/ms.network.loadbalancers.yml +++ b/.github/workflows/ms.network.loadbalancers.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.localnetworkgateways.yml b/.github/workflows/ms.network.localnetworkgateways.yml index bb241ff67f..cb12f7be99 100644 --- a/.github/workflows/ms.network.localnetworkgateways.yml +++ b/.github/workflows/ms.network.localnetworkgateways.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.natgateways.yml b/.github/workflows/ms.network.natgateways.yml index 26c80fe723..9ed705512e 100644 --- a/.github/workflows/ms.network.natgateways.yml +++ b/.github/workflows/ms.network.natgateways.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.networksecuritygroups.yml b/.github/workflows/ms.network.networksecuritygroups.yml index ec7e3781b3..24f58fb069 100644 --- a/.github/workflows/ms.network.networksecuritygroups.yml +++ b/.github/workflows/ms.network.networksecuritygroups.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.networkwatchers.yml b/.github/workflows/ms.network.networkwatchers.yml index 6dcf4e4f7b..58513b4913 100644 --- a/.github/workflows/ms.network.networkwatchers.yml +++ b/.github/workflows/ms.network.networkwatchers.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.privatednszones.yml b/.github/workflows/ms.network.privatednszones.yml index 229cb65c06..c011de3c1b 100644 --- a/.github/workflows/ms.network.privatednszones.yml +++ b/.github/workflows/ms.network.privatednszones.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.privateendpoints.yml b/.github/workflows/ms.network.privateendpoints.yml index 8bbb5b32a0..d5d44ac54c 100644 --- a/.github/workflows/ms.network.privateendpoints.yml +++ b/.github/workflows/ms.network.privateendpoints.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.publicipaddresses.yml b/.github/workflows/ms.network.publicipaddresses.yml index 068cc8867c..b87589fad1 100644 --- a/.github/workflows/ms.network.publicipaddresses.yml +++ b/.github/workflows/ms.network.publicipaddresses.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.publicipprefixes.yml b/.github/workflows/ms.network.publicipprefixes.yml index e55eefe0ba..0ad0b6620f 100644 --- a/.github/workflows/ms.network.publicipprefixes.yml +++ b/.github/workflows/ms.network.publicipprefixes.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.routetables.yml b/.github/workflows/ms.network.routetables.yml index 3801b00bbb..dd0cb3ff5d 100644 --- a/.github/workflows/ms.network.routetables.yml +++ b/.github/workflows/ms.network.routetables.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.trafficmanagerprofiles.yml b/.github/workflows/ms.network.trafficmanagerprofiles.yml index 4418bdb362..e2836f620c 100644 --- a/.github/workflows/ms.network.trafficmanagerprofiles.yml +++ b/.github/workflows/ms.network.trafficmanagerprofiles.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.virtualnetworkgateways.yml b/.github/workflows/ms.network.virtualnetworkgateways.yml index a00cda20e1..e05bcf5203 100644 --- a/.github/workflows/ms.network.virtualnetworkgateways.yml +++ b/.github/workflows/ms.network.virtualnetworkgateways.yml @@ -99,7 +99,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -129,7 +129,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.virtualnetworks.yml b/.github/workflows/ms.network.virtualnetworks.yml index 0825ebc9f4..f99b3db08c 100644 --- a/.github/workflows/ms.network.virtualnetworks.yml +++ b/.github/workflows/ms.network.virtualnetworks.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.network.virtualwans.yml b/.github/workflows/ms.network.virtualwans.yml index 3d4f1c450b..c31a6d9865 100644 --- a/.github/workflows/ms.network.virtualwans.yml +++ b/.github/workflows/ms.network.virtualwans.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.operationalinsights.workspaces.yml b/.github/workflows/ms.operationalinsights.workspaces.yml index 47e3149b62..d2af0e11f3 100644 --- a/.github/workflows/ms.operationalinsights.workspaces.yml +++ b/.github/workflows/ms.operationalinsights.workspaces.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.recoveryservices.vaults.yml b/.github/workflows/ms.recoveryservices.vaults.yml index fd99dbcee1..6fafa43901 100644 --- a/.github/workflows/ms.recoveryservices.vaults.yml +++ b/.github/workflows/ms.recoveryservices.vaults.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.resources.deploymentscripts.yml b/.github/workflows/ms.resources.deploymentscripts.yml index e28911740c..64c96f6c95 100644 --- a/.github/workflows/ms.resources.deploymentscripts.yml +++ b/.github/workflows/ms.resources.deploymentscripts.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.resources.resourcegroups.yml b/.github/workflows/ms.resources.resourcegroups.yml index 3138e70a46..29b2b9d2b1 100644 --- a/.github/workflows/ms.resources.resourcegroups.yml +++ b/.github/workflows/ms.resources.resourcegroups.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.security.azuresecuritycenter.yml b/.github/workflows/ms.security.azuresecuritycenter.yml index f7a2f19bd3..275c1ca3b8 100644 --- a/.github/workflows/ms.security.azuresecuritycenter.yml +++ b/.github/workflows/ms.security.azuresecuritycenter.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.servicebus.namespaces.yml b/.github/workflows/ms.servicebus.namespaces.yml index bb66493dbe..7c5dfeb493 100644 --- a/.github/workflows/ms.servicebus.namespaces.yml +++ b/.github/workflows/ms.servicebus.namespaces.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.sql.managedinstances.yml b/.github/workflows/ms.sql.managedinstances.yml index 42a8620201..7ec251e7c7 100644 --- a/.github/workflows/ms.sql.managedinstances.yml +++ b/.github/workflows/ms.sql.managedinstances.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.sql.servers.yml b/.github/workflows/ms.sql.servers.yml index e3d058bf29..4ddd5f238f 100644 --- a/.github/workflows/ms.sql.servers.yml +++ b/.github/workflows/ms.sql.servers.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.storage.storageaccounts.yml b/.github/workflows/ms.storage.storageaccounts.yml index 55b4d06976..a145d9c2ea 100644 --- a/.github/workflows/ms.storage.storageaccounts.yml +++ b/.github/workflows/ms.storage.storageaccounts.yml @@ -99,7 +99,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -129,7 +129,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.virtualmachineimages.imagetemplates.yml b/.github/workflows/ms.virtualmachineimages.imagetemplates.yml index b8841b485a..8d564724e6 100644 --- a/.github/workflows/ms.virtualmachineimages.imagetemplates.yml +++ b/.github/workflows/ms.virtualmachineimages.imagetemplates.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.web.connections.yml b/.github/workflows/ms.web.connections.yml index e166affc57..e5877ab2ce 100644 --- a/.github/workflows/ms.web.connections.yml +++ b/.github/workflows/ms.web.connections.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.web.hostingenvironments.yml b/.github/workflows/ms.web.hostingenvironments.yml index 7963ba562f..756c824ebe 100644 --- a/.github/workflows/ms.web.hostingenvironments.yml +++ b/.github/workflows/ms.web.hostingenvironments.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.web.serverfarms.yml b/.github/workflows/ms.web.serverfarms.yml index 107acbbb28..b029c4f04d 100644 --- a/.github/workflows/ms.web.serverfarms.yml +++ b/.github/workflows/ms.web.serverfarms.yml @@ -98,7 +98,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -128,7 +128,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: diff --git a/.github/workflows/ms.web.sites.yml b/.github/workflows/ms.web.sites.yml index df51a7a4c0..e15d5b36ce 100644 --- a/.github/workflows/ms.web.sites.yml +++ b/.github/workflows/ms.web.sites.yml @@ -104,7 +104,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Using parameter file [${{ matrix.parameterFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: @@ -134,7 +134,7 @@ jobs: - name: Set environment variables uses: deep-mm/set-variables@v1.0 with: - variableFileName: 'variables.module' + variableFileName: 'global.variables' - name: 'Publish module' uses: ./.github/actions/templates/publishModule with: From c3e89665a27286ac43dc3b41e58039fce935aab3 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Mon, 13 Dec 2021 11:59:08 +0100 Subject: [PATCH 105/112] Added space --- .../modulePipelines/ms.authorization.policyassignments.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml b/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml index 44c067e99d..d47eff7e36 100644 --- a/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml +++ b/.azuredevops/modulePipelines/ms.authorization.policyassignments.yml @@ -42,6 +42,7 @@ stages: displayName: Pester tests jobs: - template: /.azuredevops/pipelineTemplates/module.jobs.validate.yml + - stage: Deployment displayName: Deployment tests jobs: From 82c35512ed3783b5b6bda72f9caa6c7ed2f15355 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Mon, 13 Dec 2021 12:02:20 +0100 Subject: [PATCH 106/112] Updated parameters --- .../tools/AzureDevOps/Set-DevOpsPipelineFiles.ps1 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/utilities/tools/AzureDevOps/Set-DevOpsPipelineFiles.ps1 b/utilities/tools/AzureDevOps/Set-DevOpsPipelineFiles.ps1 index 8449cd223c..7c59ed44ad 100644 --- a/utilities/tools/AzureDevOps/Set-DevOpsPipelineFiles.ps1 +++ b/utilities/tools/AzureDevOps/Set-DevOpsPipelineFiles.ps1 @@ -7,11 +7,11 @@ Generate all module pipeline files for Azure DevOps based on the ones currently Generate all module pipeline files for Azure DevOps based on the ones currently implement for GitHub workflows Note: The parameter file refernces are fetched from the actual module folder. Hence the list may diviate from what is specified in the corrsponding GitHub workflow. -.PARAMETER devOpsPipelineFolderPath +.PARAMETER DevOpsPipelineFolderPath Optional. The path where the Azure DevOps pipelines should be stored Defaults to: '.azuredevops/modulePipelines' -.PARAMETER devOpsPipelineTemplatePath +.PARAMETER DevOpsPipelineTemplatePath Optional. The path to the Azure DevOps pipeline template file. Defaults to: './devOpsPipelineTemplate.yml' @@ -40,10 +40,10 @@ function Set-DevOpsPipelineFiles { [CmdletBinding(SupportsShouldProcess)] param ( [Parameter(Mandatory = $false)] - [string] $devOpsPipelineFolderPath = (Join-Path (Split-Path (Split-Path (Split-Path $PSScriptRoot))) '.azuredevops' 'modulePipelines'), + [string] $DevOpsPipelineFolderPath = (Join-Path (Split-Path (Split-Path (Split-Path $PSScriptRoot))) '.azuredevops' 'modulePipelines'), [Parameter(Mandatory = $false)] - [string] $devOpsPipelineTemplatePath = (Join-Path $PSScriptRoot 'src' 'devOpsPipelineTemplate.yml'), + [string] $DevOpsPipelineTemplatePath = (Join-Path $PSScriptRoot 'src' 'devOpsPipelineTemplate.yml'), [Parameter(Mandatory = $false)] [string] $GitHubWorkflowFolderPath = (Join-Path (Split-Path (Split-Path (Split-Path $PSScriptRoot))) '.github' 'workflows') @@ -141,7 +141,7 @@ function Set-DevOpsPipelineFiles { ## Create Dev Ops Files ## ############################ foreach ($tokenSet in $foundDetails) { - $newFilePath = Join-Path $devOpsPipelineFolderPath $tokenSet.PipelineFileName + $newFilePath = Join-Path $DevOpsPipelineFolderPath $tokenSet.PipelineFileName if (-not (Test-Path $newFilePath)) { if ($PSCmdlet.ShouldProcess("New file in path [$newFilePath]", 'Create')) { @@ -149,7 +149,7 @@ function Set-DevOpsPipelineFiles { } } - $newFileContent = Get-Content -Path $devOpsPipelineTemplatePath -Raw + $newFileContent = Get-Content -Path $DevOpsPipelineTemplatePath -Raw foreach ($key in $tokenSet.Keys) { switch ($key) { From 9e0197f33ec78e8512d40e57f1020bcf33577474 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Mon, 13 Dec 2021 12:02:45 +0100 Subject: [PATCH 107/112] Cleanup --- utilities/tools/Register-AzureDevOpsPipelines.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utilities/tools/Register-AzureDevOpsPipelines.ps1 b/utilities/tools/Register-AzureDevOpsPipelines.ps1 index fe3109be5c..9803cc2129 100644 --- a/utilities/tools/Register-AzureDevOpsPipelines.ps1 +++ b/utilities/tools/Register-AzureDevOpsPipelines.ps1 @@ -123,7 +123,7 @@ function Register-AzureDevOpsPipelines { Write-Verbose '# Local Data #' Write-Verbose '##############' Write-Verbose 'Identify relevant Azure Pipelines to be updated' - # $RelativePipelinePath = Join-Path (Get-Location).Path $RelativePipelinePath + $RelativePipelinePath = $RelativePipelinePath $localPipelinePaths = (Get-ChildItem -Path $RelativePipelinePath -Recurse -Filter '*.yml').FullName Write-Verbose ('Found [{0}] local Pipeline(s) in folder path [{1}]' -f $localPipelinePaths.Count, $RelativePipelinePath) From c1f12459e9f27c76af6383f2d13a6165e1b1b014 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Mon, 13 Dec 2021 12:43:51 +0100 Subject: [PATCH 108/112] Update to latest --- .../pipelineTemplates/module.jobs.deploy.yml | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml index 26ea62be79..275b2c7400 100644 --- a/.azuredevops/pipelineTemplates/module.jobs.deploy.yml +++ b/.azuredevops/pipelineTemplates/module.jobs.deploy.yml @@ -183,9 +183,14 @@ jobs: # Load used functions . (Join-Path '$(moduleRepoRoot)' '$(pipelineFunctionsPath)' 'resourceValidation' 'Test-TemplateWithParameterFile.ps1') - $templateFilePath = ([String]::IsNullOrEmpty('${{ deploymentBlock.templateFilePath }}')) ? - (Join-Path '$(ModuleRepoRoot)' '$(modulePath)' 'deploy.bicep') : - (Join-Path '$(moduleRepoRoot)' '${{ deploymentBlock.templateFilePath }}') + if(-not [String]::IsNullOrEmpty('${{ deploymentBlock.templateFilePath }}')) { + $templateFilePath = Join-Path '$(moduleRepoRoot)' '${{ deploymentBlock.templateFilePath }}' + } else { + # Use default path + $templateFilePath = (Test-Path (Join-Path '$(ModuleRepoRoot)' '$(modulePath)' 'deploy.bicep')) ? + (Join-Path '$(ModuleRepoRoot)' '$(modulePath)' 'deploy.bicep') : + (Join-Path '$(ModuleRepoRoot)' '$(modulePath)' 'deploy.json') + } # ----------- # # INVOKE TEST # @@ -218,9 +223,14 @@ jobs: # Load used functions . (Join-Path '$(moduleRepoRoot)' '$(pipelineFunctionsPath)' 'resourceDeployment' 'New-ModuleDeployment.ps1') - $templateFilePath = ([String]::IsNullOrEmpty('${{ deploymentBlock.templateFilePath }}')) ? - (Join-Path '$(ModuleRepoRoot)' '$(modulePath)' 'deploy.bicep') : - (Join-Path '$(moduleRepoRoot)' '${{ deploymentBlock.templateFilePath }}') + if(-not [String]::IsNullOrEmpty('${{ deploymentBlock.templateFilePath }}')) { + $templateFilePath = Join-Path '$(moduleRepoRoot)' '${{ deploymentBlock.templateFilePath }}' + } else { + # Use default path + $templateFilePath = (Test-Path (Join-Path '$(ModuleRepoRoot)' '$(modulePath)' 'deploy.bicep')) ? + (Join-Path '$(ModuleRepoRoot)' '$(modulePath)' 'deploy.bicep') : + (Join-Path '$(ModuleRepoRoot)' '$(modulePath)' 'deploy.json') + } # ----------------- # # INVOKE DEPLOYMENT # @@ -270,9 +280,14 @@ jobs: # Load used function . (Join-Path '$(moduleRepoRoot)' '$(pipelineFunctionsPath)' 'resourceRemoval' 'Remove-DeployedModule.ps1') - $templateFilePath = ([String]::IsNullOrEmpty('${{ deploymentBlock.templateFilePath }}')) ? - (Join-Path '$(ModuleRepoRoot)' '$(modulePath)' 'deploy.bicep') : - (Join-Path '$(moduleRepoRoot)' '${{ deploymentBlock.templateFilePath }}') + if(-not [String]::IsNullOrEmpty('${{ deploymentBlock.templateFilePath }}')) { + $templateFilePath = Join-Path '$(moduleRepoRoot)' '${{ deploymentBlock.templateFilePath }}' + } else { + # Use default path + $templateFilePath = (Test-Path (Join-Path '$(ModuleRepoRoot)' '$(modulePath)' 'deploy.bicep')) ? + (Join-Path '$(ModuleRepoRoot)' '$(modulePath)' 'deploy.bicep') : + (Join-Path '$(ModuleRepoRoot)' '$(modulePath)' 'deploy.json') + } $functionInput = @{ deploymentName = '$(deploymentName)' From 96d607257e5edf2faf37488e4ecb64ee71b14639 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Mon, 13 Dec 2021 12:57:52 +0100 Subject: [PATCH 109/112] Removed owner --- docs/wiki/GettingStarted.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/wiki/GettingStarted.md b/docs/wiki/GettingStarted.md index 0f6df7bd58..89dce2f7b9 100644 --- a/docs/wiki/GettingStarted.md +++ b/docs/wiki/GettingStarted.md @@ -129,8 +129,6 @@ The platform principal is used to perform actions in Azure using a [service prin - To test **RBAC** with any of the modules you need at least _[User Access Administrator](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#user-access-administrator)_ permissions on the target scope - To test **subscription-level deployments** you need at least _[Contributor](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#contributor)_ permissions on the target scope -If you want to be on the safe side you can assign _[Owner](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#owner)_ permissions to your principal on the management group scope. - > ***Note:*** By default, we're using this service principal's object ID (i.e. principal ID) as the value of the `deploymentSpId` [token](./ParameterFileTokens) to be used to test e.g. RBAC assignments. ### Dependencies From 2dbf18bc1182aca017a1d07434134c28ae54d1ab Mon Sep 17 00:00:00 2001 From: MrMCake Date: Mon, 13 Dec 2021 13:02:05 +0100 Subject: [PATCH 110/112] Added readme descr --- arm/Microsoft.AnalysisServices/servers/readme.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arm/Microsoft.AnalysisServices/servers/readme.md b/arm/Microsoft.AnalysisServices/servers/readme.md index 95929c083c..5712fa2635 100644 --- a/arm/Microsoft.AnalysisServices/servers/readme.md +++ b/arm/Microsoft.AnalysisServices/servers/readme.md @@ -1,4 +1,6 @@ -# Analysis Services `[Microsoft.AnalysisServices/servers]` +# Analysis Services Server `[Microsoft.AnalysisServices/servers]` + +This module deploys an analysis service server. ## Resource Types From 1281177ca59cc09452f0e3eaa61bda37c68ba9c8 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Mon, 13 Dec 2021 13:06:17 +0100 Subject: [PATCH 111/112] Update to latest --- docs/wiki/GettingStarted.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/wiki/GettingStarted.md b/docs/wiki/GettingStarted.md index 89dce2f7b9..f5905b8207 100644 --- a/docs/wiki/GettingStarted.md +++ b/docs/wiki/GettingStarted.md @@ -126,8 +126,8 @@ Please refer to [this list][AzureNames] to check which services have a global sc The platform principal is used to perform actions in Azure using a [service principal](https://docs.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principals#service-principal-object). Depending on what you want to execute, different permissions will be required. For example: - To test the **Management Group** module, your principal needs at least _[Contributor](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#contributor)_ permissions on a management group -- To test **RBAC** with any of the modules you need at least _[User Access Administrator](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#user-access-administrator)_ permissions on the target scope -- To test **subscription-level deployments** you need at least _[Contributor](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#contributor)_ permissions on the target scope +- To test **RBAC** with any of the modules you need at least _[User Access Administrator](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#user-access-administrator)_ permissions on the _target scope_ +- To test **subscription-level deployments** you need at least _[Contributor](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#contributor)_ permissions on the _target scope_ > ***Note:*** By default, we're using this service principal's object ID (i.e. principal ID) as the value of the `deploymentSpId` [token](./ParameterFileTokens) to be used to test e.g. RBAC assignments. From 1396f3ea9865dc57824e88530639dd8374a977c1 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Mon, 13 Dec 2021 17:28:01 +0100 Subject: [PATCH 112/112] Update to latest --- utilities/tools/Register-AzureDevOpsPipelines.ps1 | 1 - 1 file changed, 1 deletion(-) diff --git a/utilities/tools/Register-AzureDevOpsPipelines.ps1 b/utilities/tools/Register-AzureDevOpsPipelines.ps1 index 9803cc2129..bee6cb2411 100644 --- a/utilities/tools/Register-AzureDevOpsPipelines.ps1 +++ b/utilities/tools/Register-AzureDevOpsPipelines.ps1 @@ -124,7 +124,6 @@ function Register-AzureDevOpsPipelines { Write-Verbose '##############' Write-Verbose 'Identify relevant Azure Pipelines to be updated' - $RelativePipelinePath = $RelativePipelinePath $localPipelinePaths = (Get-ChildItem -Path $RelativePipelinePath -Recurse -Filter '*.yml').FullName Write-Verbose ('Found [{0}] local Pipeline(s) in folder path [{1}]' -f $localPipelinePaths.Count, $RelativePipelinePath)