Pipelines-as-Code

Armory Pipelines-as-Code enables pipeline definitions to be managed as code in GitHub, BitBucket, or GitLab. It operates as a service/plugin for open source Spinnaker and as feature in Armory Continuous Deployment.

Proprietary Generally available

Advantages to using Pipelines-as-Code

Armory’s Pipelines-as-Code feature provides a way to specify pipeline definitions in source code repos such as GitHub and BitBucket.

The Pipelines-as-Code has two components: 1) a Spinnaker plugin; and 2) a service called Dinghy, which keeps the Spinnaker pipeline in sync with what you define in a dinghyfile in your repo. You can also make a pipeline by composing other pipelines, stages, or tasks and templating certain values.

GitHub is in the process of replacing master as the name of the default base branch. Newly created repos use main. As this transition happens, confirm what branch your repo is using as its base branch and explicitly refer to that branch when configuring Armory features such as Pipelines-as-Code. For more information, see GitHub’s Renaming information.

Installation

Pipelines-as-Code is a feature in Armory CD, so you only need to enable the service. For Spinnaker, however, you need to install both the Dinghy service and the Spinnaker plugin.

Armory CD
Armory Operator

Use Kustomize patches to enable the service.

  1. Configure the Dinghy service.
  2. Enable the Dinghy service.

Instructions

Spinnaker
Spinnaker Operator

Use Kustomize patches to deploy the service and install the plugin.

  1. Configure the Dinghy service.
  2. Configure the plugin.
  3. Install both at the same time.

Instructions

Spinnaker
Halyard and kubectl

Use Kubernetes manifests to deploy the service and Spinnaker local config files to install the plugin.

  1. Create ServiceAccount, ClusterRole, and ClusterRoleBinding.
  2. Configure the Dinghy service in a ConfigMap.
  3. Deploy the Dinghy service using kubectl.
  4. Add plugin to Gate and Echo local config files.
  5. Install the plugin using hal deploy apply.

Instructions

Compatibility

Spinnaker VersionPipelines-as-Code Service VersionPipelines-as-Code Plugin Version
1.30.x2.300.0.5
1.28.x2.280.0.5
1.27.x2.270.0.5
1.26.x2.260.0.5

Version control systems

FeatureVersionArmory CD VersionSpinnaker VersionNotes
BitBucket CloudAll supported versions1.26+
BitBucket Server4.x - 6.xAll supported versions1.26+BitBucket Server 7.x is not officially supported due to changes in webhook handling and may not behave as expected.
GitHubAll supported versions1.26+Hosted or cloud
GitLabAll supported versions1.26+Hosted or cloud

Features

FeatureArmory CD VersionSpinnaker VersionNotes
Fiat service account integrationAll supported versions1.26+
GitHub status notificationsAll supported versions1.26+
Local modules for developmentAll supported versions1.26+
ModulesAll supported versions 1.26+Templatize and reuse pipeline snippets across applications and teams
Pull Request Validation2.21 or later1.26+
Slack notificationsAll supported versions1.26+
Webhook secret validationAll supported versions1.26+
Permissions validation on commit2.30 or later1.30+

Templating languages

To create a dinghyfile, you can use one of the following templating languages:

  • HashiCorp Configuration Language (HCL)
  • JSON
  • YAML

ARM CLI

The ARM CLI is a tool to render dinghyfiles and modules. Use it to help develop and validate your pipelines locally.

You can find the latest version on Docker Hub.


Last modified September 11, 2023: (5bb70d0b)