Skip to content

Test fails with FATAL: CreateRaw is missing its descriptor — descriptor not registered at runtime #392

@maeveho25

Description

@maeveho25

Jenkins and plugins versions report

Environment
Jenkins: 2.496
Java: 17.0.11 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)

Loaded plugins:
checks-api:2.0.0
display-url-api:2.3.6
workflow-step-api:639.v6eca_cd8c04a_a_
jackson2-api:2.15.2-368.vfceee8b_6e8c3
git:5.2.1
github-branch-source:2.9.7
envinject:2.3.0
pipeline-utility-steps:2.7.1
jenkins-test-harness:2460.vf9c91e27b_f32

What Operating System are you using (both controller, and any agents involved in the problem)?

I'm running Jenkins tests locally on a single machine:
Controller: macOS Sequoia 15.5 (Apple M3, arm64)
Agents: None — all tests run locally via Maven
Architecture: Apple Silicon (arm64)

Reproduction steps

  • Clone the plugin repository:

    git clone https://github.com/jenkinsci/tekton-client-plugin.git
    cd tekton-client-plugin
  • Ensure Java 17 is installed and JAVA_HOME is correctly configured:

    java -version  # should return something like "openjdk version "17.x"
  • Run the test suite from a clean state:

    mvn clean install
  • Observe that:

    • Compilation succeeds
    • maven-hpi-plugin:validate-hpi completes without errors
    • The test phase executes, but one or more tests fail
  • The failing test:

    JenkinsFreestyleTest.testFreestyleJobWithComplexYamlInput
    
  • Fails with this error in the logs:

    java.lang.Exception: failed to apply tekton catalog to file ...
        at org.waveywaves.jenkins.plugins.tekton.client.build.create.CreateRaw.processTektonCatalog(CreateRaw.java:612)
    
  • File referenced in the error:

    target/tmp/.../workspace/p/tekton-input-pipeline.yaml
    
  • No custom Jenkins configuration, credentials, or user accounts involved — the test was run entirely via the Jenkins Test Harness with default test data.

Expected Results

  • The plugin should build and test successfully without any errors.
  • All unit tests, including JenkinsFreestyleTest.testFreestyleJobWithComplexYamlInput, should pass when run in a clean environment using the Jenkins Test Harness.
  • The Tekton catalog YAML file (tekton-input-pipeline.yaml) should be applied without throwing exceptions.
  • Jenkins Freestyle job simulation in the test should complete with a successful build status.

Actual Results

  • The test JenkinsFreestyleTest.testFreestyleJobWithComplexYamlInput fails during execution.

  • The build log shows the following fatal error:

    FATAL: class org.waveywaves.jenkins.plugins.tekton.client.build.create.CreateRaw is missing its descriptor
    
  • This means Jenkins could not locate the Descriptor for the CreateRaw class, likely due to one of the following:

    • The class is missing a proper DescriptorImpl implementation
    • The @Extension annotation is missing on the descriptor
    • Or the test runtime failed to load the plugin metadata correctly
  • Additionally, during build, the following warning appears:

    [WARNING] The POM for org.jenkins-ci.tools:maven-hpi-plugin:jar:3.65 is missing, no dependency information available
    
  • This indicates that Maven was unable to retrieve the plugin's metadata, which may prevent the HPI plugin from correctly registering annotations like @Extension or generating META-INF entries — potentially contributing to the descriptor not being found during test execution.

  • Despite successful compilation and validation (mvn validate-hpi), the test fails at runtime due to incomplete plugin metadata.

Anything else?

No response

Are you interested in contributing a fix?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions