Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-41281

Improve test plugin compatibility

    XMLWordPrintable

    Details

    • Similar Issues:
    • Sprint:
      Blue Ocean - 1.1-beta-1, Blue Ocean - 1.1-beta2, Blue Ocean 1.1-beta4, Blue Ocean 1.1

      Description

      Testing is an important part of CI/CD and Jenkins supports many frameworks for rendering test results. We need to support all the popular test plugins to increase adoption with Blue Ocean.

      In Scope

      • Identify all the popular test reporting plugins that have Pipeline support.
      • Test if they are compatible out of the box with Blue Ocean or not
      • Open tickets for plugins that are not compatible in the Plugin Compatibility epic
      • Identify changes we can make to Jenkins test reporting frameworks, Blue Ocean or Jenkins core that can make support of frameworks easier and propose them as a blueocean-rfc

        Attachments

          Issue Links

            Activity

            Hide
            jamesdumay James Dumay added a comment - - edited

            Vivek Pandey I checked blueocean-rest and it already imports hudson. and jenkins. classes

            Banned imports detected:
            	in file: /io/jenkins/blueocean/rest/ApiHead.java
            		hudson.Extension (Line: 3)
            		hudson.ExtensionList (Line: 4)
            		hudson.ExtensionListListener (Line: 5)
            	in file: /io/jenkins/blueocean/BlueOceanUIProvider.java
            		hudson.ExtensionList (Line: 3)
            		hudson.ExtensionPoint (Line: 4)
            	in file: /io/jenkins/blueocean/rest/hal/LinkResolver.java
            		hudson.ExtensionList (Line: 3)
            		hudson.ExtensionPoint (Line: 4)
            	in file: /io/jenkins/blueocean/rest/OmniSearch.java
            		hudson.ExtensionList (Line: 3)
            		hudson.ExtensionPoint (Line: 4)
            	in file: /io/jenkins/blueocean/rest/model/BlueExtensionClassContainer.java
            		hudson.ExtensionPoint (Line: 3)
            	in file: /io/jenkins/blueocean/rest/model/BlueUserContainer.java
            		hudson.ExtensionPoint (Line: 3)
            	in file: /io/jenkins/blueocean/rest/OrganizationRoute.java
            		hudson.ExtensionPoint (Line: 3)
            	in file: /io/jenkins/blueocean/Routable.java
            		hudson.model.Action (Line: 3)
            	in file: /io/jenkins/blueocean/rest/model/Containers.java
            		hudson.util.AdaptedIterator (Line: 3)
            	in file: /io/jenkins/blueocean/rest/ApiRoutable.java
            		hudson.ExtensionPoint (Line: 3)
            		hudson.model.Action (Line: 4)
            	in file: /io/jenkins/blueocean/rest/APICrumbExclusion.java
            		hudson.Extension (Line: 10)
            		hudson.ExtensionList (Line: 11)
            		hudson.security.csrf.CrumbExclusion (Line: 12)
            	in file: /io/jenkins/blueocean/rest/model/BlueOrganizationContainer.java
            		hudson.ExtensionList (Line: 3)
            		hudson.ExtensionPoint (Line: 4)
            	in file: /io/jenkins/blueocean/RootRoutable.java
            		hudson.ExtensionPoint (Line: 3)
            

            I added this enforcer rule to blueocean-rest to generate that report

                <build>
                    <plugins>
                        <plugin>
                            <artifactId>maven-enforcer-plugin</artifactId>
                            <dependencies>
                                <dependency>
                                    <groupId>de.skuzzle.enforcer</groupId>
                                    <artifactId>restrict-imports-enforcer-rule</artifactId>
                                    <version>0.7.0</version>
                                </dependency>
                            </dependencies>
                            <executions>
                                <execution>
                                    <id>check-no-jenkins-imports</id>
                                    <phase>process-sources</phase>
                                    <goals>
                                        <goal>enforce</goal>
                                    </goals>
                                    <configuration>
                                        <rules>
                                            <restrictImports implementation="de.skuzzle.enforcer.restrictimports.RestrictImports">
                                                <basePackage>**</basePackage>
                                                <bannedImports>
                                                    <bannedImport>jenkins.**</bannedImport>
                                                    <bannedImport>hudson.**</bannedImport>
                                                </bannedImports>
                                            </restrictImports>
                                        </rules>
                                    </configuration>
                                </execution>
                            </executions>
                        </plugin>
                    </plugins>
                </build>
            
            Show
            jamesdumay James Dumay added a comment - - edited Vivek Pandey I checked blueocean-rest and it already imports hudson. and jenkins. classes Banned imports detected: in file: /io/jenkins/blueocean/ rest /ApiHead.java hudson.Extension (Line: 3) hudson.ExtensionList (Line: 4) hudson.ExtensionListListener (Line: 5) in file: /io/jenkins/blueocean/BlueOceanUIProvider.java hudson.ExtensionList (Line: 3) hudson.ExtensionPoint (Line: 4) in file: /io/jenkins/blueocean/ rest /hal/LinkResolver.java hudson.ExtensionList (Line: 3) hudson.ExtensionPoint (Line: 4) in file: /io/jenkins/blueocean/ rest /OmniSearch.java hudson.ExtensionList (Line: 3) hudson.ExtensionPoint (Line: 4) in file: /io/jenkins/blueocean/ rest /model/BlueExtensionClassContainer.java hudson.ExtensionPoint (Line: 3) in file: /io/jenkins/blueocean/ rest /model/BlueUserContainer.java hudson.ExtensionPoint (Line: 3) in file: /io/jenkins/blueocean/ rest /OrganizationRoute.java hudson.ExtensionPoint (Line: 3) in file: /io/jenkins/blueocean/Routable.java hudson.model.Action (Line: 3) in file: /io/jenkins/blueocean/ rest /model/Containers.java hudson.util.AdaptedIterator (Line: 3) in file: /io/jenkins/blueocean/ rest /ApiRoutable.java hudson.ExtensionPoint (Line: 3) hudson.model.Action (Line: 4) in file: /io/jenkins/blueocean/ rest /APICrumbExclusion.java hudson.Extension (Line: 10) hudson.ExtensionList (Line: 11) hudson.security.csrf.CrumbExclusion (Line: 12) in file: /io/jenkins/blueocean/ rest /model/BlueOrganizationContainer.java hudson.ExtensionList (Line: 3) hudson.ExtensionPoint (Line: 4) in file: /io/jenkins/blueocean/RootRoutable.java hudson.ExtensionPoint (Line: 3) I added this enforcer rule to blueocean-rest to generate that report <build> <plugins> <plugin> <artifactId> maven-enforcer-plugin </artifactId> <dependencies> <dependency> <groupId> de.skuzzle.enforcer </groupId> <artifactId> restrict-imports-enforcer-rule </artifactId> <version> 0.7.0 </version> </dependency> </dependencies> <executions> <execution> <id> check-no-jenkins-imports </id> <phase> process-sources </phase> <goals> <goal> enforce </goal> </goals> <configuration> <rules> <restrictImports implementation= "de.skuzzle.enforcer.restrictimports.RestrictImports" > <basePackage> ** </basePackage> <bannedImports> <bannedImport> jenkins.** </bannedImport> <bannedImport> hudson.** </bannedImport> </bannedImports> </restrictImports> </rules> </configuration> </execution> </executions> </plugin> </plugins> </build>
            Hide
            vivek Vivek Pandey added a comment -

            James Dumay yeah some extension related dependencies. Thanks for doing this.

            Show
            vivek Vivek Pandey added a comment - James Dumay yeah some extension related dependencies. Thanks for doing this.
            Hide
            vivek Vivek Pandey added a comment -

            James DumayMoving factory classes in rest model will mean opening up everything Item and Run (BlueRunFactory) and all their dependencies. Item is not too bad but Run depends on bunch of other stuff and their transitive dependencies. This totally defeats the idea of keep rest model free of jenkins core to make them future proof.

            Show
            vivek Vivek Pandey added a comment - James Dumay Moving factory classes in rest model will mean opening up everything Item and Run (BlueRunFactory) and all their dependencies. Item is not too bad but Run depends on bunch of other stuff and their transitive dependencies. This totally defeats the idea of keep rest model free of jenkins core to make them future proof.
            Hide
            jamesdumay James Dumay added a comment -

            For anyone following along at home, Vivek Pandey and I decided to move the factories into the blueocean-rest module in a .factory package. See https://github.com/jenkinsci/blueocean-plugin/pull/971 and https://github.com/jenkinsci/blueocean-plugin/pull/972 for more info.

            Show
            jamesdumay James Dumay added a comment - For anyone following along at home, Vivek Pandey and I decided to move the factories into the blueocean-rest module in a .factory package. See https://github.com/jenkinsci/blueocean-plugin/pull/971 and https://github.com/jenkinsci/blueocean-plugin/pull/972 for more info.
            Hide
            jamesdumay James Dumay added a comment -
            Show
            jamesdumay James Dumay added a comment - Move the JUnit implementation https://github.com/jenkinsci/junit-plugin/pull/68

              People

              Assignee:
              jamesdumay James Dumay
              Reporter:
              jamesdumay James Dumay
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Dates

                Created:
                Updated: