So.. figures once I posted I found a possible solution. If I set the
group(via cookbook attribute) I get a build.gradle that seems to work,
snippet of rebuild dependency:
jenkinsPlugins([
group: 'com.sonyericsson.hudson.plugins.rebuild',
name: 'rebuild',
version: 'latest.release'
])
So I guess my question is, is there an easy way to find the group for all
the plugins that don't use 'org.jenkins-ci.plugins'? I think I can look
in https://updates.jenkins-ci.org/current/update-center.json and find the
group for each plugin. If this isn't correct way to go about it I would
appreciate tips on what I should be doing.
Thanks.
-Maciej
On Friday, October 14, 2016 at 4:03:17 PM UTC-4, Maciej Wiczynski wrote:
>
> I found this thread via
> http://blog.thesparktree.com/post/149039600544/you-dont-know-jenkins-part-1.
> I'm new to gradle/jenkins and was trying to do something similar with my
> setup. I'm running into problem where some plugins are not found. I'm not
> sure how to find or specify where plugins can be found.. this is one error
> I'm getting about rebuild plugin as example:
> * What went wrong:
> A problem occurred configuring root project 'jenkins'.
> > Failed to notify project evaluation listener.
> > Could not resolve all dependencies for configuration
> ':jenkinsPlugins'.
> > Could not find any matches for
> org.jenkins-ci.plugins:rebuild:latest.release as no versions of
> org.jenkins-ci.plugins:rebuild are available.
> Searched in the following locations:
>
> http://repo.jenkins-ci.org/releases/org/jenkins-ci/plugins/rebuild/maven-metadata.xml
>
> http://repo.jenkins-ci.org/releases/org/jenkins-ci/plugins/rebuild/
>
> https://repo1.maven.org/maven2/org/jenkins-ci/plugins/rebuild/maven-metadata.xml
> https://repo1.maven.org/maven2/org/jenkins-ci/plugins/rebuild/
>
> file:/var/lib/jenkins/.m2/repository/org/jenkins-ci/plugins/rebuild/maven-metadata.xml
>
> file:/var/lib/jenkins/.m2/repository/org/jenkins-ci/plugins/rebuild/
>
> https://repo.jenkins-ci.org/public/org/jenkins-ci/plugins/rebuild/maven-metadata.xml
>
> https://repo.jenkins-ci.org/public/org/jenkins-ci/plugins/rebuild/
> Required by:
> :jenkins:unspecified
> > Could not resolve all dependencies for configuration
> ':jenkinsPlugins'.
> > Could not find any matches for
> org.jenkins-ci.plugins:rebuild:latest.release as no versions of
> org.jenkins-ci.plugins:rebuild are available.
> Searched in the following locations:
>
> http://repo.jenkins-ci.org/releases/org/jenkins-ci/plugins/rebuild/maven-metadata.xml
>
> http://repo.jenkins-ci.org/releases/org/jenkins-ci/plugins/rebuild/
>
> https://repo1.maven.org/maven2/org/jenkins-ci/plugins/rebuild/maven-metadata.xml
> https://repo1.maven.org/maven2/org/jenkins-ci/plugins/rebuild/
>
> file:/var/lib/jenkins/.m2/repository/org/jenkins-ci/plugins/rebuild/maven-metadata.xml
>
> file:/var/lib/jenkins/.m2/repository/org/jenkins-ci/plugins/rebuild/
>
> https://repo.jenkins-ci.org/public/org/jenkins-ci/plugins/rebuild/maven-metadata.xml
>
> https://repo.jenkins-ci.org/public/org/jenkins-ci/plugins/rebuild/
>
> I looked in https://repo.jenkins-ci.org/releases/org/jenkins-ci/plugins/ and
> don't see rebuild plugin listed.
> I did find it in https://updates.jenkins-ci.org/current/update-center.json
> but don't see how to set deps in build.gradle file.
> I have tried adding another maven url block under repositories block using
> different urls, didn't work.
>
> Thanks.
> -Maciej
>
> On Tuesday, August 30, 2016 at 12:12:27 PM UTC-4, Michael Kobit wrote:
>>
>> My fault explaining that
>>
>> I know that I can extract it using the *jar* command, but I don't get
>> the same "unzipped" output as running *java -jar jenkins.war*.
>>
>> It looks like this happens because of some magic in
>> https://github.com/jenkinsci/extras-executable-war that handles the
>> unpacking and bootstrapping.
>>
>> I'm wondering, is there a similar way to unpack the *jenkins.war* without
>> actually running the service, so that I can then programmatically configure
>> the JENKINS_HOME.
>>
>> This might be the wrong approach or the totally wrong idea. I was
>> probably going to move in the same direction that you said with using the
>> https://github.com/jenkinsci/gradle-jpi-plugin to handle plugin
>> dependency resolution, but plugins are not the only thing I want to
>> configure. The Groovy init.d type scripts work, but it requires Jenkins to
>> hit a certain lifecycle stage to run.
>>
>> Jenkins just doesn't seem to lend itself well to configuration as code,
>> but maybe I'm missing something.
>>
>> On Saturday, August 27, 2016 at 12:43:51 PM UTC-5, Jason Kulatunga wrote:
>>>
>>> Yep, the command is `jar xvf jenkins.war`, that will explode the war
>>> into the current directory.
>>>
>>> On Friday, August 26, 2016 at 12:27:00 PM UTC-7, Michael Kobit wrote:
>>>>
>>>> Is there a way to basically "unzip" the *jenkins.war* so that the
>>>> plugins, workflow-libs, and other parts can be configured before actually
>>>> running the service?
>>>>
>>>> On Wednesday, August 17, 2016 at 9:36:08 AM UTC-5, Jason Kulatunga
>>>> wrote:
>>>>>
>>>>> Hey,
>>>>> Thanks for all the help guys.
>>>>> I slept on this idea for a few days because, to be honest I really
>>>>> didn't want to write my own package manager
>>>>> <https://medium.com/@sdboyer/so-you-want-to-write-a-package-manager-4ae9c17d9527#.jieuao7e5>
>>>>> and
>>>>> re-invent the wheel. I took a step back and looked at how Jenkins solved
>>>>> this problem for Plugin developers, and I think that we could just
>>>>> piggy-back on top of what they use
>>>>> <https://github.com/jenkinsci/gradle-jpi-plugin>.
>>>>>
>>>>> Basically what I've done is specify the plugins I want to install in a
>>>>> build.gradle file on my Jenkins server. The build.gradle file lets me
>>>>> specify exactly what versions of the plugins I want for some, and get the
>>>>> latest for the rest. My install task then goes and copies just the
>>>>> runtime
>>>>> hpi files to the $JENKINS_HOME/plugins folder (after clearing out
>>>>> whatever
>>>>> is in there). After restarting my Jenkins server, all plugins are
>>>>> installed, with the correct versions.
>>>>>
>>>>> I've included a plugin management section in my blog post: You Don't
>>>>> Know Jenkins - Part 1
>>>>> <http://blog.thesparktree.com/post/149039600544/you-dont-know-jenkins-part-1>
>>>>> which
>>>>> goes into more detail on how it all works, and includes an example
>>>>> build.gradle file.
>>>>>
>>>>> Things to note:
>>>>> - The plugin.lock file isn't perfect, its just a STDOUT redirect of
>>>>> `gradle dependencies` which is great for visually checking which versions
>>>>> are installed, but committing it to git gets you nothing, subsequent
>>>>> installs wont be locked to the same transient dependencies. I think I can
>>>>> solve this by using
>>>>> https://github.com/nebula-plugins/gradle-dependency-lock-plugin
>>>>> - Since the build.gradle file uses repo.jenkins-ci.org instead of
>>>>> updates.jenkins-ci.org it does pick up the occassional beta/alpha
>>>>> version that gets pushed to the releases repo by developers. I'm working
>>>>> to
>>>>> fix this using a filter in the gradle dependency solver configuration.
>>>>>
>>>>>
>>>>>
>>>>> On Thursday, August 11, 2016 at 6:03:12 PM UTC-7, Michael Kobit wrote:
>>>>>>
>>>>>> We are looking at doing something similar (actually talking about
>>>>>> this with colleagues today). The idea is to basically build an immutable
>>>>>> Jenkins instance that can't be modified. Or at least severely limit any
>>>>>> kinds of modifications to it so that we have an easily deployable
>>>>>> "Jenkins
>>>>>> as a service".
>>>>>>
>>>>>> I've looked at possibly doing an "unpack and install" execution with
>>>>>> the *jenkins.war *, but it doesn't look like an easy route. The
>>>>>> other pain-point I see is effectively treating the correct files as
>>>>>> "data"
>>>>>> that should be persisted over time, rather than at "Jenkins build time".
>>>>>> I
>>>>>> am considering trying out the Docker-type approach. I think for plugin
>>>>>> resolution, we are probably going to have to go the route that you are
>>>>>> talking about for doing the resolution ourselves.
>>>>>>
>>>>>> For security type issues, I think we could still handle it with the
>>>>>> Docker approach. Build whatever restrictions into the next "immutable"
>>>>>> image and making that deployable. Then, we can have a "staging" area and
>>>>>> easily rollback if we effectively control all the things we need to
>>>>>> control. We are experimenting with pipelines right now, and are waiting
>>>>>> to
>>>>>> see how https://issues.jenkins-ci.org/browse/JENKINS-33507 will work
>>>>>> for us to get as much of the job configuration out of Jenkins as
>>>>>> possible.
>>>>>>
>>>>>> We are still in the brainstorming phase, so I'm interested to see who
>>>>>> else has ran into this and what they have done.
>>>>>>
>>>>>> On Thursday, August 11, 2016 at 5:47:45 PM UTC-5, Jason Kulatunga
>>>>>> wrote:
>>>>>>>
>>>>>>> Hey,
>>>>>>> Thanks for all the feedback :)
>>>>>>>
>>>>>>> @Daniel Beck:
>>>>>>> Yup, I'm familiar with the limitations of the
>>>>>>> https://updates.jenkins-ci.org/current/update-center.json file.
>>>>>>> Thats why I'm thinking of creating a plugin/dependency resolution
>>>>>>> system
>>>>>>> that will have to directly download the specific version of a plugin
>>>>>>> file
>>>>>>> from update site folder structure
>>>>>>> https://updates.jenkins-ci.org/download/plugins/*/ or use
>>>>>>> https://updates.jenkins-ci.org/latest/
>>>>>>> if no version restriction is found.
>>>>>>>
>>>>>>> I wasn't aware that pinning was pointless in 2.x so that'll be an
>>>>>>> interesting problem to deal with. It seems that I'll have to restrict
>>>>>>> all
>>>>>>> access to the UpdateCenter for idea #1, or do a hybrid approach with a
>>>>>>> UpdateCenter subclass as well.
>>>>>>>
>>>>>>> @Baptiste Mathus
>>>>>>> Unfortunately just using an image with locked plugins isn't a long
>>>>>>> term solution, because we'll have to occasionally update our Jenkins
>>>>>>> due to
>>>>>>> required security updates in plugins or the main application. So being
>>>>>>> able
>>>>>>> to update plugins, creating a new *.lock file, test the plugin
>>>>>>> interactions
>>>>>>> and deploying the *.lock file to existing Jenkins servers is a
>>>>>>> requirement.
>>>>>>>
>>>>>>> I was hoping to stay away from a hybrid approach that used both an
>>>>>>> executable and a subclass as it makes development and deployment more
>>>>>>> complicated, decreasing adoption with Jenkins users.
>>>>>>>
>>>>>>> Honestly the goal was to create a tool like Bundler/Pip which would
>>>>>>> just work out of the box for 99% of use cases.
>>>>>>>
>>>>>>> Are there other people experiencing the same issue? I'm more than
>>>>>>> happy to create my own open source solution, but I'd love to base it on
>>>>>>> an
>>>>>>> existing (even unmaintained) project.
>>>>>>>
>>>>>>> -Jason
>>>>>>>
>>>>>>>
>>>>>>> On Thursday, August 11, 2016 at 4:51:07 PM UTC-4, Baptiste Mathus
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> IMO a Docker image with the right set of plugins you've tested,
>>>>>>>> plus the security config you're talking about about forbidding any
>>>>>>>> upgrade
>>>>>>>> would seem a simpler way. And probably it would your life simpler if
>>>>>>>> you
>>>>>>>> somehow have to support all those different instances which can
>>>>>>>> currently
>>>>>>>> be actually quite different.
>>>>>>>>
>>>>>>>> HTH
>>>>>>>>
>>>>>>>> Le 11 août 2016 3:14 PM, "Jason Kulatunga" <[email protected]> a
>>>>>>>> écrit :
>>>>>>>>
>>>>>>>> Hey Jenkins-Users,
>>>>>>>>
>>>>>>>> I manage almost a dozen Jenkins servers and our team has been
>>>>>>>> having some issues with plugin management: such as locking our new
>>>>>>>> installations to known working versions of some troublesome Jenkins
>>>>>>>> plugins.
>>>>>>>> We use chef + Jenkins DSL to completely automate the initial
>>>>>>>> installation of Jenkins, but we're not exactly thrilled with the way
>>>>>>>> the
>>>>>>>> Chef cookbook handles plugin installation and we've also verified that
>>>>>>>> 'installNecessaryPlugins' does not actually respect the version
>>>>>>>> parameter.
>>>>>>>>
>>>>>>>> curl -XPOST
>>>>>>>> http://192.150.23.105:8080/pluginManager/installNecessaryPlugins
>>>>>>>> -d '<install plugin="[email protected]" />'
>>>>>>>>
>>>>>>>> As such I've started looking into alternative means of locking
>>>>>>>> plugins in an automated way during installation and I've come up with
>>>>>>>> the
>>>>>>>> following ideas:
>>>>>>>>
>>>>>>>> # An External Dependency Management Tool, eg Bundler, Pip, Berkshelf
>>>>>>>> Basically an executable that would:
>>>>>>>>
>>>>>>>> 1. retrieve a list of all plugins installed in a specific
>>>>>>>> Jenkins server using the API, and add them to a dependency graph
>>>>>>>> (with
>>>>>>>> metadata: installed, pinned, enabled, version)
>>>>>>>> 2. look for a dependency config file (like Gemfile, Berksfile,
>>>>>>>> requirements.txt)
>>>>>>>> 3. iterate through all the uninstalled plugins in the dep
>>>>>>>> config file and add them (and their dependencies) to the dependency
>>>>>>>> graph
>>>>>>>> 4. solve the graph by ensuring that no pinned/locked version
>>>>>>>> conflicts occur.
>>>>>>>> 5. download all uninstalled plugins directly from
>>>>>>>> https://updates.jenkins-ci.org/
>>>>>>>> 6. using the Jenkins api, pin any version locked plugins
>>>>>>>> specified in the dependency config file.
>>>>>>>> 7. write the solved dependency graph to the filesystem (eg
>>>>>>>> Berksfile.lock, Gemfile.lock) (and use it for any subsequent
>>>>>>>> installs if no
>>>>>>>> plugins have changed)
>>>>>>>> 8. disable all permissions to the update center in Jenkins so
>>>>>>>> no users enable/update plugins manually.
>>>>>>>>
>>>>>>>> # UpdateCenter Override
>>>>>>>>
>>>>>>>> 1. subclass the default Jenkins UpdateCenter, and tell Jenkins
>>>>>>>> to use it using a JVM property
>>>>>>>> 2. override the UpdateCenter.InstallationJob constructor to
>>>>>>>> download the plugin version specified from the dependency config
>>>>>>>> lock file
>>>>>>>> if it exists or install like normal and then generate/update a
>>>>>>>> dependency
>>>>>>>> config lock file with every operation.
>>>>>>>> 3. listen to the pin event in the PluginCenter and update the
>>>>>>>> dependency config lock file.
>>>>>>>>
>>>>>>>> I'm not sure if anyone has done something similar but I wanted to
>>>>>>>> get some feedback before I spent too much time investigating either
>>>>>>>> idea.
>>>>>>>>
>>>>>>>> Any and all feedback is welcome
>>>>>>>>
>>>>>>>> -Jason
>>>>>>>> Build Automation Engineer
>>>>>>>> Adobe
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>> Groups "Jenkins Users" group.
>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>> send an email to [email protected].
>>>>>>>> To view this discussion on the web visit
>>>>>>>> https://groups.google.com/d/msgid/jenkinsci-users/2d4f0e32-7d6a-4159-9635-51df7ff83643%40googlegroups.com
>>>>>>>>
>>>>>>>> <https://groups.google.com/d/msgid/jenkinsci-users/2d4f0e32-7d6a-4159-9635-51df7ff83643%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>> .
>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>
>>>>>>>>
>>>>>>>>
--
You received this message because you are subscribed to the Google Groups
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jenkinsci-users/e031b751-a5ad-47de-bb61-d9e4071c2251%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.