Skip to content

Handle already-running job rerun 403s in transient auto-rerun workflow#1374

Merged
aaronpowell merged 2 commits into
mainfrom
copilot/update-auto-rerun-transient-failures-workflow
May 28, 2026
Merged

Handle already-running job rerun 403s in transient auto-rerun workflow#1374
aaronpowell merged 2 commits into
mainfrom
copilot/update-auto-rerun-transient-failures-workflow

Conversation

Copilot AI commented May 28, 2026

Copy link
Copy Markdown
Contributor

auto-rerun-transient-failures.yml could fail its own job when gh api .../jobs/{id}/rerun returned HTTP 403 because the containing workflow run was still in progress. This change makes that specific rerun rejection non-fatal while preserving fail-fast behavior for unexpected API errors.

  • Rerun API error handling

    • Replaced unconditional rerun POST with guarded execution that captures stdout/stderr from gh api.
    • Added string match for the known GitHub message: The workflow run containing this job is already running.
    • On that specific condition, logs a clear skip message and continues processing remaining failed jobs.
  • Failure semantics preserved

    • Unknown rerun API failures still terminate the step with exit 1 after printing the captured gh output.
    • Existing transient-failure detection logic was not changed.
  • Rerun counting behavior

    • rerun_count is incremented only after a successful rerun request.
    • Skipped already-running cases are not counted as reruns.
if ! rerun_output="$(gh api --method POST "repos/${REPO}/actions/jobs/${job_id}/rerun" 2>&1)"; then
  if echo "${rerun_output}" | grep -Fq 'The workflow run containing this job is already running'; then
    echo "Skipping rerun for ${job_name} (${job_id}): containing workflow run is already running."
    continue
  fi

  echo "Failed to rerun ${job_name} (${job_id}). gh output:"
  echo "${rerun_output}"
  exit 1
fi

Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
Copilot AI changed the title [WIP] Update GitHub Actions workflow to handle rerun safely Handle already-running job rerun 403s in transient auto-rerun workflow May 28, 2026
Copilot AI requested a review from aaronpowell May 28, 2026 04:37
@aaronpowell aaronpowell marked this pull request as ready for review May 28, 2026 04:57
Copilot AI review requested due to automatic review settings May 28, 2026 04:57
@github-actions

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/CommunityToolkit/Aspire/main/eng/scripts/dogfood-pr.sh | bash -s -- 1374

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/CommunityToolkit/Aspire/main/eng/scripts/dogfood-pr.ps1) } 1374"

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR makes the transient failure auto-rerun workflow tolerate the known GitHub Actions rerun rejection that occurs when the containing workflow run is still considered in progress.

Changes:

  • Captures gh api rerun output instead of letting any non-zero exit immediately fail the step.
  • Skips only the known “workflow run containing this job is already running” failure.
  • Preserves failure behavior for unexpected rerun API errors and only increments the rerun count after success.
Show a summary per file
File Description
.github/workflows/auto-rerun-transient-failures.yml Adds guarded handling around the job rerun API call for the known already-running workflow case.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 0

@github-actions

Copy link
Copy Markdown
Contributor

Code Coverage

Package Line Rate Branch Rate Complexity Health
CommunityToolkit.Aspire.DuckDB.Api 99% 100% 13
CommunityToolkit.Aspire.DuckDB.NET.Data 67% 77% 32
CommunityToolkit.Aspire.GoFeatureFlag 100% 97% 44
CommunityToolkit.Aspire.Hosting.ActiveMQ 88% 48% 95
CommunityToolkit.Aspire.Hosting.ActiveMQ.MassTransit 100% 100% 15
CommunityToolkit.Aspire.Hosting.Adminer 89% 70% 20
CommunityToolkit.Aspire.Hosting.Azure.Dapr 28% 5% 38
CommunityToolkit.Aspire.Hosting.Azure.Dapr.Redis 56% 46% 26
CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder 85% 83% 18
CommunityToolkit.Aspire.Hosting.Azure.Extensions 64% 30% 27
CommunityToolkit.Aspire.Hosting.Bun 88% 69% 20
CommunityToolkit.Aspire.Hosting.Dapr 43% 25% 648
CommunityToolkit.Aspire.Hosting.DbGate 96% 62% 12
CommunityToolkit.Aspire.Hosting.Deno 95% 85% 24
CommunityToolkit.Aspire.Hosting.DuckDB 98% 90% 16
CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions 100% 94% 30
CommunityToolkit.Aspire.Hosting.Flagd 80% 100% 16
CommunityToolkit.Aspire.Hosting.Flyway 88% 100% 6
CommunityToolkit.Aspire.Hosting.GoFeatureFlag 80% 50% 24
CommunityToolkit.Aspire.Hosting.GoFeatureFlag.ApiService 100% 100% 3
CommunityToolkit.Aspire.Hosting.Golang 59% 46% 49
CommunityToolkit.Aspire.Hosting.Java 86% 75% 207
CommunityToolkit.Aspire.Hosting.Java.ApiApp 65% 50% 11
CommunityToolkit.Aspire.Hosting.Java.WebApp 25% 18% 59
CommunityToolkit.Aspire.Hosting.JavaScript.Extensions 92% 83% 190
CommunityToolkit.Aspire.Hosting.k6 70% 10% 8
CommunityToolkit.Aspire.Hosting.k6.ApiService 64% 67% 13
CommunityToolkit.Aspire.Hosting.Keycloak.Extensions 100% 100% 11
CommunityToolkit.Aspire.Hosting.KurrentDB 86% 88% 19
CommunityToolkit.Aspire.Hosting.LavinMQ 90% 83% 18
CommunityToolkit.Aspire.Hosting.LavinMQ.MassTransit 100% 100% 15
CommunityToolkit.Aspire.Hosting.MailPit 91% 100% 13
CommunityToolkit.Aspire.Hosting.McpInspector 85% 60% 100
CommunityToolkit.Aspire.Hosting.McpInspector.McpServer 89% 100% 2
CommunityToolkit.Aspire.Hosting.Meilisearch 95% 85% 30
CommunityToolkit.Aspire.Hosting.Meilisearch.ApiService 82% 100% 15
CommunityToolkit.Aspire.Hosting.Minio 99% 91% 32
CommunityToolkit.Aspire.Hosting.Minio.ApiService 98% 92% 15
CommunityToolkit.Aspire.Hosting.MongoDB.Extensions 91% 90% 11
CommunityToolkit.Aspire.Hosting.MySql.Extensions 98% 93% 37
CommunityToolkit.Aspire.Hosting.Ngrok 55% 43% 106
CommunityToolkit.Aspire.Hosting.Ollama 77% 67% 267
CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector 79% 70% 42
CommunityToolkit.Aspire.Hosting.PapercutSmtp 100% 100% 9
CommunityToolkit.Aspire.Hosting.Perl 85% 76% 745
CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions 93% 91% 47
CommunityToolkit.Aspire.Hosting.PowerShell 76% 59% 107
CommunityToolkit.Aspire.Hosting.Python.Extensions 46% 31% 44
CommunityToolkit.Aspire.Hosting.RavenDB 63% 46% 118
CommunityToolkit.Aspire.Hosting.Redis.Extensions 100% 71% 14
CommunityToolkit.Aspire.Hosting.Rust 96% 90% 13
CommunityToolkit.Aspire.Hosting.Sftp 90% 62% 15
CommunityToolkit.Aspire.Hosting.Sftp.ApiService 94% 100% 10
CommunityToolkit.Aspire.Hosting.Solr 88% 100% 19
CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects 68% 59% 146
CommunityToolkit.Aspire.Hosting.Sqlite 88% 93% 25
CommunityToolkit.Aspire.Hosting.SqlServer.Extensions 86% 81% 41
CommunityToolkit.Aspire.Hosting.Stripe 50% 17% 119
CommunityToolkit.Aspire.Hosting.SurrealDb 70% 52% 216
CommunityToolkit.Aspire.Hosting.SurrealDb.ApiService 81% 52% 299
CommunityToolkit.Aspire.Hosting.Umami 98% 75% 9
CommunityToolkit.Aspire.Hosting.Zitadel 97% 86% 31
CommunityToolkit.Aspire.KurrentDB 97% 95% 33
CommunityToolkit.Aspire.MassTransit.RabbitMQ 100% 100% 24
CommunityToolkit.Aspire.Meilisearch 97% 96% 38
CommunityToolkit.Aspire.Microsoft.Data.Sqlite 94% 85% 26
CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite 71% 73% 117
CommunityToolkit.Aspire.Minio.Client 93% 87% 67
CommunityToolkit.Aspire.OllamaSharp 78% 74% 76
CommunityToolkit.Aspire.RavenDB.Client 90% 78% 87
CommunityToolkit.Aspire.Sftp 83% 76% 54
CommunityToolkit.Aspire.Sqlite.Api 93% 93% 68
CommunityToolkit.Aspire.SurrealDb 87% 73% 39
Summary 76% (8770 / 11497) 61% (2587 / 4225) 5053

Minimum allowed line rate is 60%

@aaronpowell aaronpowell merged commit 3b7cedd into main May 28, 2026
255 of 261 checks passed
Copilot AI temporarily deployed to azure-artifacts May 28, 2026 05:59 Inactive
@aaronpowell aaronpowell deleted the copilot/update-auto-rerun-transient-failures-workflow branch May 28, 2026 05:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants