CanadaPubSecALZ/.pipelines
Steve Keeler db45632283
Scripts to generate config from template, support JSON config intellisense in editors, fix bugs in deployment scripts (#379)
Fixes path normalization bug in deployment scripts #374
Fixes subscription filtering bug in deployment scripts #375
Adds CanadaPubSecALZ configuration JSON schema support for editors #376
Adds Scripts to generate CanadaPubSecALZ configuration files using existing environments as template #377
Adds Deploy landing zones to new Azure subscriptions in new primary tenant #378
2023-07-09 23:14:55 -04:00
..
templates Scripts to generate config from template, support JSON config intellisense in editors, fix bugs in deployment scripts (#379) 2023-07-09 23:14:55 -04:00
README.md Correct wiring of the subscriptions-ci pipeline and prompt for NVA firewall username & password (#285) 2022-05-10 12:30:36 -04:00
demo-approval.yml
linters.yml
management-groups.yml Improve `delete-management-groups.bat` script (#224) 2022-03-30 19:00:07 -04:00
platform-connectivity-hub-azfw-policy.yml Migrate Networking configuration to JSON parameters file (#250) 2022-04-20 11:30:10 -04:00
platform-connectivity-hub-azfw.yml Migrate Networking configuration to JSON parameters file (#250) 2022-04-20 11:30:10 -04:00
platform-connectivity-hub-nva.yml Migrate Networking configuration to JSON parameters file (#250) 2022-04-20 11:30:10 -04:00
platform-identity.yml Identity Archetype (#359) 2023-03-03 07:00:06 -08:00
platform-logging.yml Support logging infrastructure for multiple regions in same subscription (#244) 2022-04-11 11:24:00 -04:00
policy.yml Identity Archetype (#359) 2023-03-03 07:00:06 -08:00
pull-request-check.yml Improve archetype parameter JSON schemas (#61) 2021-11-12 11:50:27 -05:00
roles.yml Configurable management group hierarchy (#186) 2022-02-27 16:50:20 -05:00
subscriptions.yml Migrate Logging configuration to JSON parameters file (#236) 2022-04-08 11:31:52 -04:00

README.md

Azure Pipelines

Disclaimer

Copyright (c) Microsoft Corporation.

Licensed under the MIT license.

THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.

Pipeline definitions

The following top-level pipelines are present in the .pipelines/ repository folder:

# Pipeline File CI Name
1 Management Groups management-groups.yml management-groups-ci
2 Platform Logging platform-logging.yml platform-logging-ci
3 Policy policy.yml policy-ci
4 Roles roles.yml roles-ci
5a Networking (NVA) platform-connectivity-hub-nva.yml platform-connectivity-hub-nva-ci
5b Networking (Azure Firewall) platform-connectivity-hub-azfw-policy.yml platform-connectivity-hub-azfw-policy-ci
5b Networking (Azure Firewall) platform-connectivity-hub-azfw.yml platform-connectivity-hub-azfw-ci
6 Subscriptions subscriptions.yml subscriptions-ci

These pipelines need to be run in the order specified. For example, the Policy pipeline is dependent on resources deployed by the Platform Logging pipeline. Think of it as a layered approach; once the layer is deployed, it only requires re-running if some configuration at that layer changes.

There are two distinct Networking pipelines, each deploys the hub side of a hub & spoke network topology. The Networking (NVA) option is intended for environments with a Network Virtual Appliance, and the Networking (Azure Firewall) option is intended for environments using Azure Firewall.

In the default implementation, the Management Groups, Platform Logging, Policy, and Roles pipelines are run automatically (trigger) whenever a related code change is detected on the main branch. The Networking and Subscriptions pipelines do not run automatically (no trigger). This behavior can be changed by modifying the corresponding YAML pipeline definition files.

In the default implementation, the Roles and Platform Logging pipelines are run automatically after a successful run of the Management Groups pipeline, and the Policy pipeline is run automatically after a successful run of the Platform Logging pipeline. Again, this behavior can be changed by modifying the corresponding YAML pipeline definition files.

The top-level pipeline definitions are implemented in a modular way, using nested YAML templates defined in the .pipelines/templates/jobs/ and .pipelines/templates/steps/ paths.

Pipeline configuration

The top-level pipelines use configuration values from these locations:

  • environment related configuration values are stored in the config/variables/ path.
  • subscription related configuration values are stored in the config/subscriptions/ path.

Additional information on configuration files is available here:

Additional pipelines

In addition to the top-level pipelines mentioned previously, there are several other pipeline definitions in the ./pipelines path that may be useful.

Check Bicep files

The checks-bicep-compile.yml pipeline can be used to configure a Build Validation branch policy in your repository and validate any Bicep code changes by compiling all Bicep files with built-in linting.

Manual approval

The demo-approval.yml pipeline demonstrates how to implement a manual approval gate/check in your pipeline definition.

Linting source files

The linters.yml pipeline demonstrates using the GitHub SuperLinter project to run a linting process on many common source code file types.