{"record":{"id":"bdeff4b742082e62","repo":"denoland/deno","slug":"could-not-find-a-artifact-name-artifact-for-br","errorCode":null,"errorMessage":"Could not find a \"{artifact_name}\" artifact for branch '{branch}'.\nArtifacts may have expired or CI may not have completed.","messagePattern":"Could not find a \"(.+?)\" artifact for branch '(.+?)'\\.\nArtifacts may have expired or CI may not have completed\\.","errorType":"exception","errorClass":"AnyError","httpStatus":null,"severity":"error","filePath":"cli/tools/upgrade.rs","lineNumber":930,"sourceCode":"        .context(\"failed to run `gh run download`\")?;\n\n      if dl_result.status.success() {\n        log::info!(\n          \"Downloaded artifact \\\"{}\\\" from run {}\",\n          colors::green(name),\n          run_id\n        );\n        downloaded = true;\n        break;\n      }\n    }\n    if downloaded {\n      break;\n    }\n  }\n\n  if !downloaded {\n    bail!(\n      \"Could not find a \\\"{artifact_name}\\\" artifact for branch '{branch}'.\\n\\\n       Artifacts may have expired or CI may not have completed.\"\n    );\n  }\n\n  let exe_name = if cfg!(windows) { \"deno.exe\" } else { \"deno\" };\n  let new_exe_path = download_dir.join(exe_name);\n\n  if !new_exe_path.exists() {\n    bail!(\"Downloaded artifact does not contain '{exe_name}'.\");\n  }\n\n  #[cfg(unix)]\n  {\n    use std::os::unix::fs::PermissionsExt;\n    fs::set_permissions(&new_exe_path, std::fs::Permissions::from_mode(0o755))?;\n  }\n","sourceCodeStart":912,"sourceCodeEnd":948,"githubUrl":"https://github.com/denoland/deno/blob/9ad36f7a2cce60488e6ec52283efb32efddaf93a/cli/tools/upgrade.rs#L912-L948","documentation":"For a branch install, Deno iterates the (up to 5) most recent CI runs trying both the release and debug artifact names; if none of the runs expose either artifact, it bails. Causes mirror the PR case: artifacts expire, CI is incomplete, or the wanted artifact type was never produced for that branch.","triggerScenarios":"`deno upgrade` from a branch where all listed runs predate artifact upload, artifacts passed GitHub's retention window, or only platform-specific artifacts (e.g. linux-x86_64 release) exist while you need another platform.","commonSituations":"Old branches whose artifacts expired; racing an in-flight CI run; requesting release artifacts on platforms where only debug artifacts exist.","solutions":["Wait for the newest run on the branch to finish uploading artifacts and retry.","Inspect available artifacts: `gh run view <run-id> --repo denoland/deno` and match against the expected name (`release-<os>-<arch>-deno` / debug variant).","If artifacts expired, re-run the workflow or build the branch from source.","On non-linux-x86_64 platforms, target the debug artifact or build locally."],"exampleFix":null,"handlingStrategy":"retry","validationCode":"run_id=$(gh run list --branch \"$BRANCH\" --repo denoland/deno --limit 1 -q '.[].databaseId')\ngh api \"repos/denoland/deno/actions/runs/$run_id/artifacts\" --jq '.artifacts[].name' | grep -Eq 'release-|debug-' || echo \"no usable artifact yet\"","typeGuard":null,"tryCatchPattern":"deno upgrade --branch \"$BRANCH\" 2>err.log || { grep -q 'Could not find a' err.log && { sleep 300; deno upgrade --branch \"$BRANCH\"; }; }","preventionTips":["Install from branches whose latest run finished the artifact-upload step.","Expect only release (linux-x86_64) and debug artifacts on branches.","Old branches: re-run the workflow or build from source once artifacts expire."],"tags":["upgrade","branch-build","ci-artifacts","github-actions","expiration"],"backgroundTag":"ci-artifact-not-found","analyzedSha":"9ad36f7a2cce60488e6ec52283efb32efddaf93a","analyzedAt":"2026-08-20T13:07:44.778Z","schemaVersion":2},"datasetVersion":"2026-08-31T09:17:48.483Z"}