Area for Improvement
The noncloud functional test workflow in .github/workflows/functional-test-noncloud.yaml starts 13 matrix jobs, and every job independently runs actions/download-artifact for the radius_test_bicep_types artifact. These jobs start together, creating a burst of concurrent artifact-list and download requests for the same content.
Observed behavior
In workflow run 34244975194, job 102131983639, step 8, the kubernetes-noncloud job failed while downloading the Radius Bicep types artifact. The preceding container-image artifact download succeeded, but the Bicep-types step failed while listing artifacts:
Unable to download artifact(s): Failed to ListArtifacts: Received non-retryable error: Failed request: (403) Forbidden
You have exceeded a secondary rate limit. Please wait a few minutes before you try again.
Because actions/download-artifact treats this response as non-retryable, the functional test job fails before cluster setup or tests begin.
Desired behavior
Reduce the burst of concurrent downloads and artifact-list requests for Radius Bicep types so all functional test matrix legs can reliably obtain the generated types without triggering GitHub secondary rate limits. A transient GitHub artifact-service limit should not prevent the functional tests from starting.
Acceptance criteria:
- The workflow no longer initiates a separate concurrent
radius_test_bicep_types artifact lookup from every matrix leg, or otherwise bounds/staggers those requests sufficiently to avoid the secondary rate limit.
- Each functional test leg still receives the generated Radius Bicep types at
./hack/bicep-types-radius/generated before publishing them to its local registry.
- Re-running a failed job continues to work without depending on state from another runner.
Proposed Fix
Prefer reducing the number of artifact-service calls rather than only adding retries. For example, package the CLI, container images, and generated Radius Bicep types into one functional-test input artifact with their expected directory structure, then download that artifact once in each matrix leg. If keeping separate artifacts is required, use a workflow structure that limits or staggers Bicep-types downloads and adds bounded backoff for secondary-rate-limit responses.
rad Version
N/A; this is a GitHub Actions pipeline issue.
Operating system
GitHub-hosted ubuntu-24.04 runner.
Additional context
The noncloud functional test matrix currently contains 13 legs, so the same artifact is requested concurrently 13 times. No duplicate issue was found for this failure mode.
Area for Improvement
The noncloud functional test workflow in
.github/workflows/functional-test-noncloud.yamlstarts 13 matrix jobs, and every job independently runsactions/download-artifactfor theradius_test_bicep_typesartifact. These jobs start together, creating a burst of concurrent artifact-list and download requests for the same content.Observed behavior
In workflow run 34244975194, job 102131983639, step 8, the
kubernetes-noncloudjob failed while downloading the Radius Bicep types artifact. The preceding container-image artifact download succeeded, but the Bicep-types step failed while listing artifacts:Because
actions/download-artifacttreats this response as non-retryable, the functional test job fails before cluster setup or tests begin.Desired behavior
Reduce the burst of concurrent downloads and artifact-list requests for Radius Bicep types so all functional test matrix legs can reliably obtain the generated types without triggering GitHub secondary rate limits. A transient GitHub artifact-service limit should not prevent the functional tests from starting.
Acceptance criteria:
radius_test_bicep_typesartifact lookup from every matrix leg, or otherwise bounds/staggers those requests sufficiently to avoid the secondary rate limit../hack/bicep-types-radius/generatedbefore publishing them to its local registry.Proposed Fix
Prefer reducing the number of artifact-service calls rather than only adding retries. For example, package the CLI, container images, and generated Radius Bicep types into one functional-test input artifact with their expected directory structure, then download that artifact once in each matrix leg. If keeping separate artifacts is required, use a workflow structure that limits or staggers Bicep-types downloads and adds bounded backoff for secondary-rate-limit responses.
rad Version
N/A; this is a GitHub Actions pipeline issue.
Operating system
GitHub-hosted
ubuntu-24.04runner.Additional context
The noncloud functional test matrix currently contains 13 legs, so the same artifact is requested concurrently 13 times. No duplicate issue was found for this failure mode.