Search code examples
jenkinsgroovy

Triggering a Job on start up in Jenkins


I am trying to get a new job to run every time my Jenkins restarts. I want to do this through "init.groovy" script. For example let's say if I restart my jenkins server it will execute a job that says "Hello world". And I have to create this job from my init.groovy script.

I have this code so far

import jenkins.model.Jenkins
import org.jenkinsci.plugins.workflow.job.WorkflowJob

WorkflowJob job = Jenkins.instance.createProject(WorkflowJob, 'my-pipeline2')

now I don't know how to configure this job instance without getting into the GUI. I want to add pipeline scripts to it. Like echo "Hello world". And then I want to finally build this job. I want to do all that from this one init.groovy script. I couldn't find any solution to this over internet. So any help is greatly appreciated. Thanks


Solution

  • So I have finally done this with the following groovy script.

    #!groovy
    
    import jenkins.model.*
    import hudson.security.*
    import jenkins.install.*;
    import hudson.triggers.SCMTrigger;
    import org.jenkinsci.plugins.workflow.job.WorkflowJob;
    
    def instance = Jenkins.getInstance()
    
    println "--> creating local user 'admin'"
    
    def hudsonRealm = new HudsonPrivateSecurityRealm(false)
    hudsonRealm.createAccount('admin','admin')
    instance.setSecurityRealm(hudsonRealm)
    
    def strategy = new FullControlOnceLoggedInAuthorizationStrategy()
    
    instance.setAuthorizationStrategy(strategy)
    instance.save()
    
    jenkins = Jenkins.instance;
    
    workflowJob = new WorkflowJob(jenkins, "workflow2");
    jobName = "create-dsl-job2";
    gitTrigger = new SCMTrigger("* * * * *");
    
    dslProject = new hudson.model.FreeStyleProject(jenkins, jobName);
    dslProject.addTrigger(gitTrigger);
    jenkins.add(dslProject, jobName);
    job = jenkins.getItem(jobName)
    builders = job.getBuildersList()
    
    hudson.tasks.Shell newShell = new hudson.tasks.Shell("echo \"Hello\" ")
    builders.replace(newShell)
    
    gitTrigger.start(dslProject, true);