Git Product home page Git Product logo

jenkins-pipeline-library's Issues

GitRepository.groovy sample

it's possible use the jenkins-pipeline-library/src/io/wcm/devops/jenkins/pipeline/scm/GitRepository.groovy

to fetch a branch into workspace ?

Can you post an example ?

Scripts not permitted to use new

When setting up the library on a blank jenkins with the latest plugin versions, it's not possible to build as the script uses "illegal" methods which are rejected by the sandbox.
A quick win solution is to install the Permissive Script Security Plugin (i know what I'm doing...), but this will remove the complete security layer provided by the sandbox.

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use new io.wcm.devops.jenkins.pipeline.utils.logging.Logger java.lang.Object
	at org.jenkinsci.plugins.scriptsecurity.sandbox.whitelists.StaticWhitelist.rejectNew(StaticWhitelist.java:184)
	at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onNewInstance(SandboxInterceptor.java:170)
	at org.kohsuke.groovy.sandbox.impl.Checker$3.call(Checker.java:197)
	at org.kohsuke.groovy.sandbox.impl.Checker.checkedConstructor(Checker.java:202)
	at org.kohsuke.groovy.sandbox.impl.Checker$checkedConstructor$3.callStatic(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:194)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:214)
	at io.wcm.devops.jenkins.pipeline.utils.maps.MapUtils.<clinit>(MapUtils.groovy:35)

java.lang.IllegalAccessError: class io.wcm.devops.jenkins.pipeline.managedfiles.ManagedFile tried to access private field io.wcm.devops.jenkins.pipeline.model.PatternMatchable.id

When running the jenkins-pipeline-library with the newest Jenkins (2.387.1) execMaven throws an error:

java.lang.IllegalAccessError: class io.wcm.devops.jenkins.pipeline.managedfiles.ManagedFile tried to access private field io.wcm.devops.jenkins.pipeline.model.PatternMatchable.id (io.wcm.devops.jenkins.pipeline.managedfiles.ManagedFile and io.wcm.devops.jenkins.pipeline.model.PatternMatchable are in unnamed module of loader org.jenkinsci.plugins.workflow.cps.CpsGroovyShell$CleanGroovyClassLoader @f16bbba)

Looking at the respective classes Line 38 in src/io/wcm/devops/jenkins/pipeline/managedfiles/ManagedFile.groovy one can see that this.id = id is applied, after the super call to PatternMatchable. Looking inside that class under src/io/wcm/devops/jenkins/pipeline/model/PatternMatchable.groovy one can also see that inside the constructor the id is already set. The call inside the ManageFile class is therefore redunant.

Removing it from there will still lead to the id being set and therefore not break anything.

Implement mock for findFiles

Would like to see a findFIlesCallback implemented in the LibraryIntegrationTestBase to allow returning of all files that match a pattern provided.
Example searches:

  • findFiles glob: "*.gemspec"
  • findFiles glob: "lib/*/version.rb"
  • findFiles glob: "src/*.groovy"
  • findFiles glob: "my-example.rb"
helper.registerAllowedMethod(FIND_FILES, [LinkedHashMap.class], findFilesCallback)
...
def findFilesCallback = {
    Map config ->
    // TODO:
  }

Was reviewing the locateTestResource for a possible existing workaround but doesn't account for the fuzzy searches only exact file names. Initially tried

File file = this.dslMock.locateTestResource(config["glob"].toString())

But is when discovered the fuzzy search did not work. I do like being able to drop all resources in the /test/resources folder for any of the searches so would like the findFiles to follow that pattern.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.