My CI run failed
Each message in a failed run says what to fix. Run rl doctor first. It explains most of these.
| You see | What it means | What to do |
|---|---|---|
| Secret key rejected (401) | The key is missing, wrong, revoked or expired | Store a valid key as a CI secret. On GitLab mark it Masked and Protected |
| Not allowed to do this (403) | The key lacks a scope, or is limited to another site | A sync needs strings:write, translations:write and bundles:publish. A preview needs sites:read and translations:read |
| Account suspended (403) | Changes are refused. Published translations keep serving | Contact support |
| Plan, allowance or licence limit (402) | A plan limit, not a permission problem | See What the limit messages mean. Upgrade, or wait for the reset date |
| Service unavailable or busy (503 or 429) | Our control plane is busy or down. The tool already retried. Your published translations keep being served | Run again later. A scheduled sync can be set to warn instead of fail |
| The job failed or timed out | A translate or publish job did not finish | Look at the job, and raise the timeout |
| "Offline count only" in a preview | The run had no key, for example a fork pull request | Expected. A maintainer can run it again |
| Could not post the comment | The token is read-only | Give the workflow permission to write pull requests |
| Bundle integrity check failed | A signature, checksum or version check refused the files | Check the site key and public key. During a key change, list both keys |
| hreflang check failed | The output has links without return links, relative links or no default | Fix the pages listed. Hand-written alternate links in your source pages are the usual cause |
Never do this#
The CI tools are in the repository and not published: OPEN.
Do not paste a secret key into a ticket or a chat. Give us the run time, the site name and the error text.