Skip to content

Updating multiple Argo applications in parallel across Octopus environments can cause one deployment to hang while waiting for an Argo app that is already healthy in Argo. #9967

@Clare-Octopus

Description

@Clare-Octopus

Severity

Not blocking customers, workaround exists.

Version

2026.2.4909

Latest Version

I could reproduce the problem in the latest build

What happened?

If you want to update two Argo Applications using the Update ArgoCD Application Manifests step within one Octopus project, you can achieve this by setting the Octopus annotations in Argo to be scoped by Environment or Tenant.

If scoping by environment, and you want to deploy the release to two or more environments at once (so they are running in parallel), one deployment will succeed, and one will hang waiting for the Argo application to become healthy, even though it is.

Deploying to one or more environments in parallel:

Image

Octopus will complete one deployment but the other will hang.

Image

Reproduction

This issue occurs both using files sourced from a package and files sourced from Git, but for reproduction purposes, we are going to reproduce with files sourced from a package. We will also be using values files for the commit change.

  1. Have Argo setup with Octopus and ensure you have two Argo applications, one for one environment, and one for the other.
  2. Upload a package into the Octopus built-in feed with your Argo app data in it, ensure you have all your values files for each environment in that one package and label them per environment - eg - dev_values.yaml, test_values.yaml. These names MUST match what is in your Git repo for that Argo application.
  3. Create an Octopus project and create a project variable called ValuesFiles, have one variable value as dev_values.yaml scoped to the dev environment and one variable value called test_values.yaml scoped to the test environment, (picure 1).
  4. Add a project step using the Update ArgoCD Application Manifests step. Link your Argo applications to that step by using the same project annotation for both apps, each app will then have its own separate annotation for its relevant environment.
  5. Source your files from a package and link the package we uploaded to Octopus in Step 2. For the input path field use the Project variable we created in Step 3.
  6. Save that step, create the release and deploy it to BOTH environments at the same time, (picture 2).
  7. Sit and watch one deployment complete and the app in Argo sync. Watch the other step hang on waiting for the argo app to be healthy, but the Argo app has synced and is healthy.

Picture 1

Image

Picture 2

Image

Error and Stacktrace

N/A

More Information

Initial Ticket (Internal) - https://octopuscd.zendesk.com/agent/tickets/198669
RnD Thread (Internal) - https://octopusdeploy.slack.com/archives/CNHBHV2BX/p1775851863929369
Reproduction (Internal) - https://octopus-operations.octopus.app/app#/Spaces-422/projects/testargomanifestvalues/deployments/releases/0.0.36

Workaround

If you deploy to one environment at a time and wait for that deployment to finish before proceeding to the next environment deployment, all deployments will succeed in Octopus.

Metadata

Metadata

Assignees

Labels

kind/bugThis issue represents a verified problem we are committed to solving

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions