Groovy Init Script Configuration Help

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Art
Reply | Threaded
Open this post in threaded view
|

Groovy Init Script Configuration Help

Art
Hi,

I am trying to auto-configure my Jenkins environment.

I started with the base Jenkins Docker Image (Alpine) and installing my plugins via install-plugins.sh script.
I am adding a pipeline job, a agent (slave) node, and setting some global variables.

What I am having trouble with is how to configure the global settings of a plugin. I have seen some examples of managing tools, but I'm not clear on how to choose/verify the package/class to use for the plugin.

Here is my Dockerfile:
FROM jenkins:2.32.3-alpine

ENV JAVA_OPTS '-Djenkins.install.runSetupWizard=false'

COPY init.groovy.d/* /usr/share/jenkins/ref/init.groovy.d/

## Install required plugins (auto installs dependencies)
RUN /usr/local/bin/install-plugins.sh \
        config-file-provider \
        credentials-binding \
        docker-workflow \
        git \
        gitlab-plugin \
        job-dsl \
        parameterized-trigger \
        ssh-agent \
        ssh-slaves \
        workflow-aggregator

The two items I am trying to configure is my `Gitlab` connection information and my `Pipeline Global Library`

For the Gitlab plugin this is how I'm starting, but not sure if it's the right direction.
import jenkins.model.*

def instance = Jenkins.getInstance()
// Is this the right class? or do I need to do something entirely different?
def gitlab = instance.getExtensionList(com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty.DescriptorImpl.class)
// TODO: set settings on gitlab and assign credentials by id.
For the Pipeline Global Library, I'm not even sure how to start with that one.

Any help would be greatly appreciated.

Cheers!

Art

--
You received this message because you are subscribed to the Google Groups "Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/11020095-0f75-47e3-852b-092b3eb037e2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Groovy Init Script Configuration Help

Mark Waite-2
I've found it much easier to copy the configuration files into the "ref" directory structure of the Docker instance, rather than trying to write scripts which perform the same actions.

If you'd like to see an example of the technique, look at https://github.com/MarkEWaite/docker-lfs/tree/lts-with-plugins/ref for some of the configuration files that I've captured from my Jenkins installations.

Mark Waite

On Thu, Mar 16, 2017 at 8:35 AM Art <[hidden email]> wrote:
Hi,

I am trying to auto-configure my Jenkins environment.

I started with the base Jenkins Docker Image (Alpine) and installing my plugins via install-plugins.sh script.
I am adding a pipeline job, a agent (slave) node, and setting some global variables.

What I am having trouble with is how to configure the global settings of a plugin. I have seen some examples of managing tools, but I'm not clear on how to choose/verify the package/class to use for the plugin.

Here is my Dockerfile:
FROM jenkins:2.32.3-alpine

ENV JAVA_OPTS '-Djenkins.install.runSetupWizard=false'

COPY init.groovy.d/* /usr/share/jenkins/ref/init.groovy.d/

## Install required plugins (auto installs dependencies)
RUN /usr/local/bin/install-plugins.sh \
        config-file-provider \
        credentials-binding \
        docker-workflow \
        git \
        gitlab-plugin \
        job-dsl \
        parameterized-trigger \
        ssh-agent \
        ssh-slaves \
        workflow-aggregator

The two items I am trying to configure is my `Gitlab` connection information and my `Pipeline Global Library`

For the Gitlab plugin this is how I'm starting, but not sure if it's the right direction.
import jenkins.model.*

def instance = Jenkins.getInstance()
// Is this the right class? or do I need to do something entirely different?
def gitlab = instance.getExtensionList(com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty.DescriptorImpl.class)
// TODO: set settings on gitlab and assign credentials by id.
For the Pipeline Global Library, I'm not even sure how to start with that one.

Any help would be greatly appreciated.

Cheers!

Art

--
You received this message because you are subscribed to the Google Groups "Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/11020095-0f75-47e3-852b-092b3eb037e2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/CAO49JtHyXcZ6-O293V_-aw8iuMkSgb%3DyiLvCpG-SqZ1f9AJFcw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
Art
Reply | Threaded
Open this post in threaded view
|

Re: Groovy Init Script Configuration Help

Art
In reply to this post by Art
@Mark

Thanks for the information. It turned me to the right direction. I was able to view the xml config files and convert them to the groovy scripts I needed.

For others here is what I ended up with..

pipelineGlobalLibrary.groovy

import org.jenkinsci.plugins.workflow.libs.*
import jenkins.plugins.git.GitSCMSource

GlobalLibraries descriptor = (GlobalLibraries) GlobalLibraries.get()

GitSCMSource scmSource = new GitSCMSource('463a8f67-5a28-430e-b4ea-a18fc5b1a40d',
'[hidden email]:group/jenkinsWorkflowLibs.git',
'credentialsId',
'origin',
'+refs/heads/*:refs/remotes/origin/*',
'*',
'',
false)

SCMSourceRetriever retriever = new SCMSourceRetriever(scmSource)

LibraryConfiguration libraryConfiguration = new LibraryConfiguration('myworkflowlibs', retriever)
libraryConfiguration.setDefaultVersion('1.0.0')
libraryConfiguration.setImplicit(false)
libraryConfiguration.setAllowVersionOverride(true)

descriptor.getLibraries().add(libraryConfiguration)
descriptor.save()

gitlab.groovy

import com.dabsquared.gitlabjenkins.connection.*
import jenkins.model.Jenkins

GitLabConnectionConfig descriptor = (GitLabConnectionConfig) Jenkins.getInstance().getDescriptor(GitLabConnectionConfig.class)

GitLabConnection gitLabConnection = new GitLabConnection('MyGitLab',
'https:\\\\gitlaburl.com',
'GitLabTokenId',
false,
10,
10)
descriptor.getConnections().clear()
descriptor.addConnection(gitLabConnection)
descriptor.save()


Cheers!

Art

On Thursday, March 16, 2017 at 3:35:36 PM UTC+1, Art wrote:
Hi,

I am trying to auto-configure my Jenkins environment.

I started with the base Jenkins Docker Image (Alpine) and installing my plugins via install-plugins.sh script.
I am adding a pipeline job, a agent (slave) node, and setting some global variables.

What I am having trouble with is how to configure the global settings of a plugin. I have seen some examples of managing tools, but I'm not clear on how to choose/verify the package/class to use for the plugin.

Here is my Dockerfile:
FROM jenkins:2.32.3-alpine

ENV JAVA_OPTS '-Djenkins.install.runSetupWizard=false'

COPY init.groovy.d/* /usr/share/jenkins/ref/init.groovy.d/

## Install required plugins (auto installs dependencies)
RUN /usr/local/bin/install-plugins.sh \
        config-file-provider \
        credentials-binding \
        docker-workflow \
        git \
        gitlab-plugin \
        job-dsl \
        parameterized-trigger \
        ssh-agent \
        ssh-slaves \
        workflow-aggregator

The two items I am trying to configure is my `Gitlab` connection information and my `Pipeline Global Library`

For the Gitlab plugin this is how I'm starting, but not sure if it's the right direction.
import jenkins.model.*

def instance = Jenkins.getInstance()
// Is this the right class? or do I need to do something entirely different?
def gitlab = instance.getExtensionList(com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty.DescriptorImpl.class)
// TODO: set settings on gitlab and assign credentials by id.
For the Pipeline Global Library, I'm not even sure how to start with that one.

Any help would be greatly appreciated.

Cheers!

Art

--
You received this message because you are subscribed to the Google Groups "Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/75eef4a1-4453-4afc-b9cd-03ff5c380ef3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.