jenkinsci/jenkins · error · IllegalArgumentException

Build # does not exist

Error message

Build #{number} does not exist

What it means

IllegalArgumentException from set-build-display-name when job.getBuildByNumber(number) returns null. Same guard as set-build-description with a differently worded message.

Solutions

  1. Verify the build number against the job's build history.
  2. Use the last build number.
  3. Point at the correct job.
Defensive patterns

Strategy: validation

Validate before calling

if (job.getBuildByNumber(number) == null) {
    throw new IllegalArgumentException("Build #" + number + " does not exist");
}

Try / catch

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

Prevention

When it happens

Trigger: `set-build-displayname <job> <number> <name>` where build #<number> does not exist for the job.

Common situations: Build deleted; number too high; wrong job; keep-log rotation removed the build.

Related errors


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

Appendix: source

Thrown at core/src/main/java/hudson/cli/SetBuildDisplayNameCommand.java:34

    public String getShortDescription() {
        return Messages.SetBuildDisplayNameCommand_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 = "DISPLAYNAME", required = true, usage = "DisplayName to be set. '-' to read from stdin.", index = 2)
    @SuppressFBWarnings(value = "PA_PUBLIC_PRIMITIVE_ATTRIBUTE", justification = "Preserve API compatibility")
    public String displayName;

    @Override
    protected int run() throws Exception {
        Run<?, ?> run = job.getBuildByNumber(number);
        if (run == null) {
            throw new IllegalArgumentException("Build #" + number + " does not exist");
        }
        run.checkPermission(Run.UPDATE);

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

        run.setDisplayName(displayName);

        return 0;
    }
}

View on GitHub (pinned to 2e228ff40b)