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 Version Pipelines-as-Code Service Version Pipelines-as-Code Plugin Version
1.30.x 2.30 0.0.5
1.28.x 2.28 0.0.5
1.27.x 2.27 0.0.5
1.26.x 2.26 0.0.5

Version control systems

Feature Version Armory CD Version Spinnaker Version Notes
BitBucket Cloud All supported versions 1.26+
BitBucket Server 4.x - 6.x All supported versions 1.26+ BitBucket Server 7.x is not officially supported due to changes in webhook handling and may not behave as expected.
GitHub All supported versions 1.26+ Hosted or cloud
GitLab All supported versions 1.26+ Hosted or cloud

Features

Feature Armory CD Version Spinnaker Version Notes
Fiat service account integration All supported versions 1.26+
GitHub status notifications All supported versions 1.26+
Local modules for development All supported versions 1.26+
Modules All supported versions 1.26+ Templatize and reuse pipeline snippets across applications and teams
Pull Request Validation 2.21 or later 1.26+
Slack notifications All supported versions 1.26+
Webhook secret validation All supported versions 1.26+
Permissions validation on commit 2.30 or later 1.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)