Skip to content

Reduce concurrent Radius Bicep types artifact downloads in functional tests #12930

Description

@brooke-hamilton

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.

No activity

Activity on this issue will appear here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

maintenanceIssue is a non-user-facing task like updating tests, improving automation, etc..triagedThis issue has been reviewed and triaged

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions