Manifest Order

Description

By default, Updatecli treats each manifest as an independent pipeline and do not guarantee ordering. When you run multiple manifests from the same directory, Updatecli can now order them explicitly before execution.

Manifest ordering is controlled with two root keys:

  • id: declares the manifest identifier that other manifests can depend on

  • dependson: lists the manifest IDs that must run first

This is useful when one manifest prepares data, policies, or files that another manifest relies on.

Important

id and dependson only affect the execution order of manifests.

They do not change:

  • branch naming

  • pull request grouping

  • workflow grouping

For those behaviors, keep using pipelineid.

Parameters

id

The id key defines a manifest dependency identifier.

name: Base image updates
id: base-images

Use id when another manifest must wait for this one to complete.

Note

Multiple manifests may intentionally share the same id. When another manifest depends on that id, Updatecli waits for all matching manifests to run first.

dependson

The dependson key lists the manifest IDs that must be executed before the current manifest.

name: Application updates
id: app
dependson:
  - base-images
  - shared-policies

Each entry in dependson must reference an existing manifest id.

Example

In this example, the application manifest only runs after the base image manifest has been evaluated.

manifests/base.yaml
name: Base image updates
id: base-images

sources:
  alpine:
    name: Get latest Alpine version
    kind: dockerimage
    spec:
      image: alpine
      tag: latest

targets:
  dockerfile:
    name: Update Dockerfile base image
    kind: dockerfile
    spec:
      file: Dockerfile
      instruction: FROM
manifests/app.yaml
name: Application updates
id: app
dependson:
  - base-images

sources:
  version:
    name: Get latest release
    kind: githubrelease
    spec:
      owner: updatecli
      repository: updatecli

targets:
  yaml:
    name: Update application version
    kind: yaml
    spec:
      file: values.yaml
      key: $.image.tag

If you run Updatecli against the manifests/ directory, it executes base.yaml before app.yaml.

Behavior

Shared IDs

If multiple manifests share the same id, a dependency waits for all of them.

# policies/a.yaml
name: Policy A
id: shared-policy

# policies/b.yaml
name: Policy B
id: shared-policy

# app.yaml
name: App
dependson:
  - shared-policy

In this case, app.yaml runs after both policies/a.yaml and policies/b.yaml.

Legacy manifests

Manifests without an explicit id continue to work as before. They keep their existing execution order, but they cannot be referenced from another manifest using dependson.

Invalid dependencies

Updatecli stops with an error when:

  • a manifest depends on an unknown id

  • a manifest depends on its own id

  • manifest dependencies create a cycle

Go Further

Top