jenkinsci/jenkins · error · IllegalArgumentException

No such build #{number}

Error message

No such build #{number}

What it means

IllegalArgumentException from set-build-description when job.getBuildByNumber(number) returns null — the given build number does not exist for that job. Thrown before any permission/description logic.

Source

Thrown at core/src/main/java/hudson/cli/SetBuildDescriptionCommand.java:35

    public String getShortDescription() {
        return Messages.SetBuildDescriptionCommand_ShortDescription();
     }

    @Argument(metaVar = "JOB", usage = "Name of the job to build", required = true, index = 0)
    public transient Job<?, ?> job;

    @Argument(metaVar = "BUILD#", usage = "Number of the build", required = true, index = 1)
    public int number;

    @Argument(metaVar = "DESCRIPTION", required = true, usage = "Description to be set. '=' to read from stdin.", index = 2)
    @SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
    public String description;

    @Override
    protected int run() throws Exception {
        Run run = job.getBuildByNumber(number);
        if (run == null)
            throw new IllegalArgumentException("No such build #" + number);

        run.checkPermission(Run.UPDATE);

        if ("=".equals(description)) {
            description = IOUtils.toString(stdin);
        }

        run.setDescription(description);

        return 0;
    }

}

View on GitHub (pinned to 2e228ff40b)

Solutions

  1. Confirm the build exists (`job.getBuildByNumber(n)` / the CLI build listing).
  2. Use `job.getLastBuild().getNumber()` to find a valid number.
  3. Pick a different job if the number belongs elsewhere.
Defensive patterns

Strategy: validation

Validate before calling

Run r = job.getBuildByNumber(number);
if (r == null) {
    throw new IllegalArgumentException("No build #" + number
        + " (last: " + job.getLastBuild() + ")");
}

Try / catch

catch (IllegalArgumentException e) { /* build number invalid */ }

Prevention

When it happens

Trigger: `set-build-description <job> <number> <desc>` where build #<number> was never run, was deleted, or belongs to a different job.

Common situations: Race where the build was deleted between lookup and call; number larger than the last build; wrong job argument.

Related errors


AI-assisted analysis of jenkinsci/jenkins@2e228ff40b (2026-08-14). Data as JSON: /api/errors/ac5542293057c231. Report an issue: GitHub.