Chef · Arazzo Workflow

Chef Habitat Audit an Origin's Package Releases and Channels

Version 1.0.0

List an origin's packages, resolve one package's releases, and map the origin's promotion channels.

1 workflow 1 source API 1 provider
View Spec View on GitHub Application DeliveryAutomationComplianceConfiguration ManagementDevOpsDevSecOpsHabitatInfrastructure as CodeInSpecArazzoWorkflows

Provider

chef

Workflows

audit-origin-releases
Inventory a Habitat origin's packages, releases, and promotion channels.
Lists packages for an origin, resolves the releases of a named package, and enumerates the channels the origin can promote into.
3 steps inputs: origin, pkg outputs: channels, packages, releases
1
listPackages
listOriginPackages
List every package published under the origin, establishing what this origin actually ships before drilling into one of them.
2
resolvePackageReleases
getPackage
Fetch the named package to enumerate its versions and releases, which is what a promotion or a pin needs to reference.
3
listPromotionChannels
listChannels
List the origin's channels so a promotion targets a channel that exists rather than silently creating drift between environments.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Chef Habitat Audit an Origin's Package Releases and Channels
  summary: List an origin's packages, resolve one package's releases, and map the origin's promotion channels.
  description: >-
    What a release engineer or a deployment pipeline needs from Habitat Builder
    before it promotes anything: what does this origin ship, what releases exist
    for the package in question, and which channels are available to promote
    into. The workflow reads the origin's package list, drills into a single
    package to enumerate its versions and releases, and lists the origin's
    channels so the promotion target is a channel that genuinely exists. This is
    a read-only audit against the public Habitat Builder depot; it inspects and
    reports, it does not promote. Each step spells out its request inline so the
    flow can be read and executed without opening the underlying OpenAPI
    description.
  version: 1.0.0
sourceDescriptions:
- name: chefHabitatBuilderApi
  url: ../openapi/chef-habitat-builder-api-openapi.yml
  type: openapi
workflows:
- workflowId: audit-origin-releases
  summary: Inventory a Habitat origin's packages, releases, and promotion channels.
  description: >-
    Lists packages for an origin, resolves the releases of a named package, and
    enumerates the channels the origin can promote into.
  inputs:
    type: object
    required:
    - origin
    - pkg
    properties:
      origin:
        type: string
        description: The Habitat origin to audit (e.g. core).
      pkg:
        type: string
        description: The package name within the origin to resolve releases for (e.g. redis).
  steps:
  - stepId: listPackages
    description: >-
      List every package published under the origin, establishing what this
      origin actually ships before drilling into one of them.
    operationId: listOriginPackages
    parameters:
    - name: origin
      in: path
      value: $inputs.origin
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      packages: $response.body#/data
      totalPackages: $response.body#/total_count
  - stepId: resolvePackageReleases
    description: >-
      Fetch the named package to enumerate its versions and releases, which is
      what a promotion or a pin needs to reference.
    operationId: getPackage
    parameters:
    - name: origin
      in: path
      value: $inputs.origin
    - name: pkg
      in: path
      value: $inputs.pkg
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      releases: $response.body#/data
  - stepId: listPromotionChannels
    description: >-
      List the origin's channels so a promotion targets a channel that exists
      rather than silently creating drift between environments.
    operationId: listChannels
    parameters:
    - name: origin
      in: path
      value: $inputs.origin
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      channels: $response.body
  outputs:
    packages: $steps.listPackages.outputs.packages
    releases: $steps.resolvePackageReleases.outputs.releases
    channels: $steps.listPromotionChannels.outputs.channels