JFrog · Arazzo Workflow

JFrog Distribution Release Bundle

Version 1.0.0

Create a release bundle, sign it, distribute it, and poll for status.

1 workflow 1 source API 1 provider
View Spec View on GitHub ArtifactoryCI/CDContainer RegistryDevOpsMLOpsPackage ManagementSecuritySoftware Supply ChainArazzoWorkflows

Provider

jfrog

Workflows

distribute-release-bundle
Create, sign, distribute a release bundle and wait for completion.
Creates a release bundle from a query, signs it, distributes it to a named site, then polls distribution status until it is no longer in progress.
4 steps inputs: aql, name, siteName, version outputs: name, status, version
1
createBundle
createReleaseBundle
Create a release bundle whose contents are selected by the supplied AQL query.
2
signBundle
signReleaseBundle
Sign the release bundle, making it immutable and ready for distribution.
3
distribute
distributeReleaseBundle
Distribute the signed release bundle to the target edge node site.
4
pollStatus
getDistributionStatus
Poll the distribution status. While it is still in progress, loop back and check again; otherwise finish.

Source API Descriptions

Arazzo Workflow Specification

jfrog-distribution-release-bundle-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: JFrog Distribution Release Bundle
  summary: Create a release bundle, sign it, distribute it, and poll for status.
  description: >-
    The end-to-end software distribution flow. The workflow creates a v1 release
    bundle from an AQL spec, signs it to make it immutable, distributes it to
    target edge nodes, then polls the distribution status until it leaves the in
    progress state. Every 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: distributionApi
  url: ../openapi/jfrog-distribution-openapi.yml
  type: openapi
workflows:
- workflowId: distribute-release-bundle
  summary: Create, sign, distribute a release bundle and wait for completion.
  description: >-
    Creates a release bundle from a query, signs it, distributes it to a named
    site, then polls distribution status until it is no longer in progress.
  inputs:
    type: object
    required:
    - name
    - version
    - aql
    - siteName
    properties:
      name:
        type: string
        description: The release bundle name.
      version:
        type: string
        description: The release bundle version.
      aql:
        type: string
        description: The AQL query selecting artifacts for the bundle.
      siteName:
        type: string
        description: The target edge node site name to distribute to.
  steps:
  - stepId: createBundle
    description: >-
      Create a release bundle whose contents are selected by the supplied AQL
      query.
    operationId: createReleaseBundle
    requestBody:
      contentType: application/json
      payload:
        name: $inputs.name
        version: $inputs.version
        dry_run: false
        sign_immediately: false
        description: Created by the distribute-release-bundle workflow
        spec:
          queries:
          - aql: $inputs.aql
            query_name: primary
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      name: $inputs.name
      version: $inputs.version
  - stepId: signBundle
    description: >-
      Sign the release bundle, making it immutable and ready for distribution.
    operationId: signReleaseBundle
    parameters:
    - name: name
      in: path
      value: $steps.createBundle.outputs.name
    - name: version
      in: path
      value: $steps.createBundle.outputs.version
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      signed: $inputs.name
  - stepId: distribute
    description: >-
      Distribute the signed release bundle to the target edge node site.
    operationId: distributeReleaseBundle
    parameters:
    - name: name
      in: path
      value: $steps.createBundle.outputs.name
    - name: version
      in: path
      value: $steps.createBundle.outputs.version
    requestBody:
      contentType: application/json
      payload:
        dry_run: false
        auto_create_missing_repositories: true
        distribution_rules:
        - site_name: $inputs.siteName
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      trackerId: $response.body#/id
  - stepId: pollStatus
    description: >-
      Poll the distribution status. While it is still in progress, loop back and
      check again; otherwise finish.
    operationId: getDistributionStatus
    parameters:
    - name: name
      in: path
      value: $steps.createBundle.outputs.name
    - name: version
      in: path
      value: $steps.createBundle.outputs.version
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      status: $response.body#/status
    onSuccess:
    - name: inProgress
      type: goto
      stepId: pollStatus
      criteria:
      - context: $response.body
        condition: $.status == 'In progress'
        type: jsonpath
    - name: settled
      type: end
      criteria:
      - context: $response.body
        condition: $.status != 'In progress'
        type: jsonpath
  outputs:
    name: $steps.createBundle.outputs.name
    version: $steps.createBundle.outputs.version
    status: $steps.pollStatus.outputs.status