Troubleshooting Forge builds
What a red Forge build means — clone failures, export errors, timeouts, signing failures, missing checks — and what to do about each.
في هذه الصفحة
A failed target's reason is on its card. The build's Output above that line says why; start there.
The clone failed
The card says clone failed, and the output has Git's own message.
| Git says | Fix |
|---|---|
Remote branch … not found |
the branch or tag does not exist; check the project's default branch, or the ref you asked for |
Authentication failed, Repository not found, could not read Username |
the repository is private and Forge cannot reach it: it was registered by URL, or the App lost access. Register it from GitHub, or grant the App access to it again |
The same table holds for the steps after the clone. submodules failed: a
submodule is private and the App is not installed on it, or it points at a
local path or file://, which Forge refuses — submodules are fetched over
https only. git lfs pull failed: an LFS object is missing on the server,
or the repository's LFS quota on GitHub is used up.
The export failed
The card says build exited and a number. This is the same balaur export
you run locally, and it failed the same way it would there. Run it:
balaur export . --target <the target that failed>
If it passes on your machine and fails on Forge, the difference is almost always one of these:
- A file that is on your disk but not committed. Forge builds the commit.
git statusshows what you have not added. project.tomlis not at the repository's root.- Something fetched at build time. A build has no network.
Timed out
The target ran past 45 minutes and was stopped. A warm export takes seconds and a cold one minutes, so this usually means something in the project waits forever — a script that loops at import, for instance. The last lines of the output show where it stopped.
"Wait for a running build to finish."
Three builds are already queued or running on your account. Open one from Projects and let it finish, then press Build now again. Pushes do not need this: a push over the limit waits for a slot on its own.
The build is unsigned
The card's badge says unsigned with a note: that platform's section on the project's Signing page is not filled in. It is not an error; fill it in and build again. See Signing.
Signing failed
The target is red after a green export, and the output names the signing step. The credentials are there but do not work: a wrong certificate password, an expired certificate, a provisioning profile for another app, an Android key alias that is not in the keystore. The platform's guide under Signing says what each field has to be. Saving a corrected value replaces the old one.
No check on my commit
- The App is not installed on that repository, or access was removed — see Taking access away.
- More than ten pushes were already waiting, so this one was dropped. Press Build now once the queue drains.
- The project was registered for a different repository. Pushes are matched by repository, so a fork builds only if it has its own project.
Something else
Write to us from the community page with the build's link — it is the URL of its page. The output on that page is what we will read first.