Skip to main content
This lesson shows an Argo Workflow that produces a file in one step and consumes it in a later step. It demonstrates creating a file, uploading it as an artifact to an artifact repository (MinIO in this example), and then downloading and reading that artifact in the consumer step. Overview
  • The generate step creates /tmp/hello.txt and declares it as an output artifact.
  • The consume step accepts that artifact as an input artifact (passed via arguments) and prints its contents.
  • The templates run in sequence: generate finishes first, then consume runs and receives the artifact produced by generate.
Use standard temporary paths such as /tmp inside container scripts to avoid confusion. This example uses /tmp consistently for both producer and consumer.
Full workflow (single, corrected YAML)
Key pieces explained How artifacts are stored (MinIO and default compression) When the generate step completes, Argo uploads the artifact to the configured artifact repository (MinIO in this demo). By default Argo archives artifacts as a tar + gzip, so objects stored in MinIO often appear as compressed tarballs (for example, .tgz or .tar.gz). You can download these archived artifacts from the MinIO console or the Argo Workflows UI.
A MinIO Object Store web console showing the contents of the bucket "my-bucket." It lists two objects (main.log and my-generated-artifact.tgz) with timestamps and a right-hand actions pane (Download, Share, Inspect, Delete).
Argo Workflows UI exposes artifact details and offers a direct download option for the archived artifact:
A screenshot of the Argo Workflows web UI showing a workflow called "artifact-pzhss" with nodes (generate → my-generated-artifact.tgz → consume) on the left and an artifact details panel on the right labeled "message-from-producer" with a download button for MY-GENERATED-ARTIFACT.TGZ. Browser tabs and a download notification are visible across the top.
Customizing archive behavior Argo allows you to control how artifacts are archived before upload. Typical choices: Example configuration snippets for outputs.artifacts
Guidance for choosing archive options
  • Use archive: none when the consumer must see the exact file/directory structure your container produced (for caching or large build outputs).
  • Use tar with a compressionLevel when you need to tune upload size vs CPU cost. For textual logs, higher compression helps; for already-compressed binaries, consider lower compression or disabling it.
What to expect when the workflow runs
  • generate completes and Argo uploads /tmp/hello.txt to the artifact repository as a tar+gzip by default (e.g., my-generated-artifact.tgz).
  • The consume step is scheduled; Argo downloads the artifact, materializes it at /tmp/message.txt inside the consumer container, and the consumer prints:
References and further reading

Watch Video