在 Jenkins 启动时触发作业

Sha*_*did 6 groovy jenkins

我试图在每次詹金斯重新启动时运行一项新工作。我想通过“init.groovy”脚本来做到这一点。例如,假设我重新启动詹金斯服务器,它将执行一个显示“Hello world”的作业。我必须从我的 init.groovy 脚本创建这个作业。

到目前为止我有这个代码

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

WorkflowJob job = Jenkins.instance.createProject(WorkflowJob, 'my-pipeline2')
Run Code Online (Sandbox Code Playgroud)

现在我不知道如何在不进入 GUI 的情况下配置这个作业实例。我想向其中添加管道脚本。就像回声“Hello world”一样。然后我想最终完成这项工作。我想通过这个 init.groovy 脚本来完成所有这些工作。我在互联网上找不到任何解决方案。因此,非常感谢任何帮助。谢谢

Ash*_*waq 5

您还可以尝试启动触发器插件。

安装后,转到启动后要触发的作业,并在“构建触发器”部分中,选中“Jenkins 首次启动时构建”

(这个问题可能很旧,但希望我的回答对某人有所帮助)


Sha*_*did 1

所以我终于用下面的常规脚本完成了这个任务。

#!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);
Run Code Online (Sandbox Code Playgroud)