The do_fetch task downloads a recipe's sources from the URLs in SRC_URI. It failed because a URL is unreachable, a mirror is down, or a checksum did not match. The fetch happens before any compilation.
What this error means
A bitbake run fails with "ERROR: <recipe> do_fetch: Fetcher failure" and a message about an unreachable URL or a mismatched checksum.
bitbake
ERROR: my-app-1.0-r0 do_fetch: Fetcher failure for URL: 'https://example.com/my-app-1.0.tar.gz'.
Unable to fetch URL from any source.
ERROR: Task (.../my-app.bb:do_fetch) failed with exit code '1'
Diagnose it: which runtime is actually on PATH?
Runners ship multiple versions of most runtimes and select one through a version manager. When a setup action and a version file disagree, the resulting error is about your code rather than the version.
Terminal
which -a <runtime>
<runtime> --version
echo "PATH=$PATH" | tr ":" "\n" | head -20
# does a version file in the repo disagree with the workflow?
cat .tool-versions .nvmrc .ruby-version .python-version 2>/dev/null
Common causes
An unreachable or moved source URL
The SRC_URI host is down, the path moved, or the CI network cannot reach it, so the fetcher exhausts all sources.
A checksum mismatch on the downloaded source
The fetched archive does not match the SRC_URI checksums, so do_fetch rejects it as corrupted or changed.
How to fix it
Fix the URL or use a premirror
Confirm the SRC_URI resolves from the CI network.
Point at a stable mirror or set a premirror for reliability.
Update the checksum when the source legitimately changed
If the upstream artifact changed on purpose, update the checksums to the new values.
recipes-myapp/my-app/my-app.bb
SRC_URI[sha256sum] = "<new-sha256>"
How to prevent it
Use stable mirrors or a premirror for source downloads.
Pin and verify SRC_URI checksums.
Cache the Yocto downloads directory between CI runs.
Frequently asked questions
What causes Yocto bitbake "do_fetch" failed in CI?
There are 2 common causes: an unreachable or moved source url and a checksum mismatch on the downloaded source. The SRC_URI host is down, the path moved, or the CI network cannot reach it, so the fetcher exhausts all sources.
How do I fix Yocto bitbake "do_fetch" failed in CI?
There are 2 fixes depending on which cause you have: fix the url or use a premirror and update the checksum when the source legitimately changed. Work through them in order, since the first is the most common.
What does Yocto bitbake "do_fetch" failed in CI actually mean?
A bitbake run fails with "ERROR: <recipe> do_fetch: Fetcher failure" and a message about an unreachable URL or a mismatched checksum.
How do I stop Yocto bitbake "do_fetch" failed in CI happening again?
Use stable mirrors or a premirror for source downloads. The prevention section lists 3 changes that keep it from recurring.