argoproj/argo-workflows · error
artifact storage is not configured; see the docs for setup i
Error message
artifact storage is not configured; see the docs for setup instructions: https://argo-workflows.readthedocs.io/en/latest/configure-artifact-repository/
What it means
ArtifactLocation.Get falls through to its default case when none of the known artifact backend fields (Artifactory, Azure, Git, GCS, HTTP, HDFS, OSS, Raw, S3, Plugin) is set. Argo cannot determine where artifacts are stored, so it returns this error pointing to the artifact repository configuration docs.
Source
Thrown at pkg/apis/workflow/v1alpha1/workflow_types.go:1445
return a.Azure, nil
case a.Git != nil:
return a.Git, nil
case a.GCS != nil:
return a.GCS, nil
case a.HDFS != nil:
return a.HDFS, nil
case a.HTTP != nil:
return a.HTTP, nil
case a.OSS != nil:
return a.OSS, nil
case a.Raw != nil:
return a.Raw, nil
case a.S3 != nil:
return a.S3, nil
case a.Plugin != nil:
return a.Plugin, nil
default:
return nil, fmt.Errorf("artifact storage is not configured; see the docs for setup instructions: https://argo-workflows.readthedocs.io/en/latest/configure-artifact-repository/")
}
}
// SetType sets the type of the artifact to type the argument.
// Any existing value is deleted.
func (a *ArtifactLocation) SetType(x ArtifactLocationType) error {
switch v := x.(type) {
case *ArtifactoryArtifact:
a.Artifactory = &ArtifactoryArtifact{}
case *AzureArtifact:
a.Azure = &AzureArtifact{}
case *GCSArtifact:
a.GCS = &GCSArtifact{}
case *HDFSArtifact:
a.HDFS = &HDFSArtifact{}
case *HTTPArtifact:
a.HTTP = &HTTPArtifact{}
case *OSSArtifact:View on GitHub (pinned to 35bff19146)
Solutions
- Configure artifact storage in the workflow-controller ConfigMap (artifactRepository section, e.g. s3, gcs, azure)
- Alternatively specify an explicit location per artifact in the workflow spec
- Verify with `kubectl get cm workflow-controller-configmap -o yaml` that artifactRepository is set
Example fix
# workflow-controller-configmap
# before
metadata:
name: workflow-controller-configmap
data: {}
# after
data:
config: |
artifactRepository:
s3:
bucket: my-bucket
endpoint: s3.amazonaws.com Defensive patterns
Strategy: validation
Validate before calling
cm, _ := clientset.CoreV1().ConfigMaps(ns).Get(ctx, "workflow-controller-configmap", metav1.GetOptions{})
if !strings.Contains(cm.Data["config"], "artifactRepository") {
return errors.New("artifact repository is not configured on the cluster")
} Type guard
func (a *ArtifactLocation) isConfigured() bool {
return a != nil && (a.S3 != nil || a.GCS != nil || a.Git != nil || a.HTTP != nil || a.Raw != nil || a.Azure != nil || a.Artifactory != nil || a.OSS != nil || a.HDFS != nil || a.Plugin != nil)
} Try / catch
_, err := loc.Get()
if err != nil && strings.Contains(err.Error(), "artifact storage is not configured") {
return errors.New("cluster admin must configure artifactRepository per https://argo-workflows.readthedocs.io/en/latest/configure-artifact-repository/")
} Prevention
- Configure artifact storage during cluster installation
- Add a startup check that artifactRepository is set
- Use explicit artifact backends in templates when the cluster default may be missing
When it happens
Trigger: Reading an artifact location whose union field is empty — e.g. artifactRepository not configured in the controller configmap and templates/artifacts carry no explicit location; calling Get() or GetKey() on such an ArtifactLocation.
Common situations: Installing Argo Workflows without configuring artifact storage in the workflow-controller-configmap; clusters where the artifact repository ConfigMap was deleted; artifacts declared without any backend field.
Related errors
- Artifact '%s' does not have a storage location configured (s
- template artifact location not set
- failed to find any artifact repository for artifact reposito
- unsupported artifact driver
- failed to load artifact '%s': %w
AI-assisted analysis of argoproj/argo-workflows@35bff19146 (2026-09-03).
Data as JSON: /api/errors/e8324e8996418815.
Report an issue: GitHub.