Hmbown/CodeWhale · error · Error

No release.yml workflow run found for

Error message

No release.yml workflow run found for ${tag} at ${tagSha}. Rerun the Release workflow before publishing npm, or increase the verifier's last-100-runs search window.

What it means

findReleaseWorkflowRun scans the last 100 runs of release.yml for a run matching the given tag and commit SHA. If no candidate runs exist at all, it throws telling you to rerun the Release workflow or widen the search window before publishing npm.

Solutions

  1. Rerun the Release workflow for the tag, then retry the publish.
  2. Check `gh run list --workflow=release.yml` for the tag run.
  3. Reduce CI run volume or raise the per_page window (currently 100) in the script.

Example fix

// before
npm publish
// after
gh workflow run release.yml -f tag=v1.2.3 && npm run verify-release-assets && npm publish
Defensive patterns

Strategy: retry

Validate before calling

const runs = await githubApi(repo, "/actions/workflows/release.yml/runs?per_page=100"); if (!runs.workflow_runs?.some(r => r.head_sha === expectedSha)) throw new Error("Run the Release workflow first");

Try / catch

try { await verifyReleaseAssets(); } catch (e) { if (e.message.includes("No release.yml workflow run found")) { console.error("Trigger release.yml for this tag, wait for it to finish, then retry."); process.exit(1); } throw e; }

Prevention

When it happens

Trigger: publish step calls findReleaseWorkflowRun(repo, tag, tagSha) and the /actions/workflows/release.yml/runs list contains no run associated with the tag/SHA within the last 100 runs.

Common situations: Publishing npm before the Release workflow was ever triggered for the tag; more than 100 newer runs pushed the release run out of the window; workflow file renamed so the list is empty.

Understand the failure class

Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.

Related errors


AI-assisted analysis of Hmbown/CodeWhale@433685b202 (2026-09-15). Data as JSON: /api/errors/df37040f6e21ac26. Report an issue: GitHub.

Appendix: source

Thrown at npm/codewhale/scripts/verify-release-assets.js:247

    const runId = candidate.database_id || candidate.id;
    if (!runId) {
      continue;
    }
    const jobs = await api(repo, `/actions/runs/${runId}/jobs?per_page=100`);
    const releaseJob = (jobs.jobs || []).find(
      (job) => job.name === "release" && job.conclusion === "success",
    );
    if (releaseJob) {
      // #5429: pin asset freshness to the successful release job's own
      // started_at, not the run-level run_started_at. A job-level rerun
      // (`gh run rerun --failed`) bumps run_started_at past the asset upload
      // timestamps even though this release job produced those assets.
      return { ...candidate, release_job_started_at: releaseJob.started_at || null };
    }
  }

  if (orderedCandidates.length === 0) {
    throw new Error(
      `No release.yml workflow run found for ${tag} at ${tagSha}. ` +
        "Rerun the Release workflow before publishing npm, or increase the verifier's last-100-runs search window.",
    );
  }
  throw new Error(
    `No successful asset-publishing job found in release.yml workflow runs for ${tag} at ${tagSha}. ` +
      "Repair the Release workflow before publishing npm.",
  );
}

function parseGitHubTime(value, label) {
  const timestamp = Date.parse(value);
  if (!Number.isFinite(timestamp)) {
    throw new Error(`GitHub ${label} timestamp is invalid: ${value}`);
  }
  return timestamp;
}

View on GitHub (pinned to 433685b202)