Our open-source pipeline blueprints have landed!


Posted by Willy-Peter Schaub on Tue 08 November 2022

Lifting the hood of our consistent, standardized, and self-service based Azure Pipelines.

Our group took huge step when we convinced our leadership to empower us to create this technical blog and share our technology journeys, learnings, and innovation with the community back in September 2020. Two years later, we finally managed to dot the i's and cross the t's and publish our second-generation application-type blueprints.

It is hopefully the splash down of a long and innovative collaboration to improve our (community) use of Azure Pipelines.

Splash down

Peruse our why bother and what are our nightmares and options? pipeline series for the complete story.

Constantly think about how you could be doing things better.” - Elon Musk


Discussions

GitHub Discussions

You can use the Discussions feature to collaborate with our team and/or the rest of the community. Please keep discussions focused on the application-type blueprints, communicate clearly, be open-minded, respectful, and empathetic.

NOTE - All discussions and comments are moderated. Users who do not adhere to the GitHub Acceptable Use Policies will be blocked from our organization.

  • Vibrant collaboration (over black holes and silos)
  • Consistent, standardized, and secure continuous integration (CI) and delivery (CD) pipelines
  • Empower software engineers with self-service automation
  • Take advantage of every ounce of YAML Azure Pipelines features

Repositories

GitHub Repos

We have published a total of eight (8) repositories, consisting of five (5) sample repositories and three (3) application-type blueprint core repositories.

Samples

The five (5) sample repositories are used by our self-service automation to extract an application-type sample and inject it into the users repository. We reduced the self-service cycle-time to less than 15 seconds ... a success story that we will cover in an upcoming self-service automation post.

  • AzureDevOps.Automation.Pipeline.Sample.azure-function
  • AzureDevOps.Automation.Pipeline.Sample.generic-multiple-jobs
  • AzureDevOps.Automation.Pipeline.Sample.generic-single-job
  • AzureDevOps.Automation.Pipeline.Sample.nuget-package
  • AzureDevOps.Automation.Pipeline.Sample.universal-artifact

Core

The three (3) core repositories represent the heart of our blueprint-based Azure Pipelines.

  • AzureDevOps.Automation.Pipeline.Configuration.v2 - Contains a configuration file for each solution using our blueprints, organized in a flat deploy/<portfolio>/<product>-config.yml hierarchy. The configuration files are loaded and injected when the pipelines are queued.
  • AzureDevOps.Automation.Pipeline.Templates.v2 - Application-type blueprint and other templates. See meet our second-generation app-type blueprints for details.
  • AzureDevOps.Automation.Pipeline.Toolbox.v2 - Scripts and config files that are loaded by the boot-strap.yml template, using the checkout: feature. See two ways to share your toolbox with your pipelines for details.

For more information on the history and a peek under the hood of the blueprints, please peruse our technical blog pipelines series and anything that is tagged with pipelines.

Some of the templates contain a __TODO_<ACTION>_ placeholders to hide our internal implementation but maintain the blueprint template dependencies and integrity. You will need to search for __TODO_ and implement these STUBBED templates yourself. Contact our team using the Discussions if you have any questions.

Getting Started

  1. Fork the repositories if you intend to make changes.
  2. Create or use a common engineering Azure DevOps project.
  3. Clone the repositories to your Azure DevOps project.
  4. Search for __TODO_ placeholders in all repositories and adjust to match your Azure DevOps Project(s) and services.
  5. Remember to contribute your changes back using a pull request.

How to contribute

As mentioned, collaborate with us using the Discussions feature and submit your blueprints changes through pull requests which will be considered, reviewed, integrated, and synchronized by our common engineering open source team of passionate engineers.

May the collaboration, fun, and innovation begin!