Jenkins 中的种子工作是什么,它是如何工作的?

What are seed jobs in Jenkins and how does it work?

Jenkins 中的种子作业是什么?它是如何工作的?

我们可以在不使用 github 的情况下从种子作业创建新作业吗?

这取决于上下文。 Jenkins 本身不提供 "seed jobs".

有允许从其他作业创建作业的插件,例如出色的 Job-DSL plugin。这样,您就可以创建工作,其中 groovy 脚本可以为您创建更多工作。

Job-DSL 插件将这些作业称为 "seed jobs"(但它们是常规的自由式作业)。 Job-DSL 插件不需要 github 连接。

种子作业是运行作业 DSL 脚本的普通 Jenkins 作业;反过来,该脚本包含创建额外工作的指令。简而言之,种子工作是创造更多就业机会的工作。在此步骤中,您将构建作业 DSL 脚本并将其合并到种子作业中。您将定义的作业 DSL 脚本将创建一个自由式作业,该作业在作业的控制台输出中打印 'Hello World!' 消息。

Job DSL脚本由Job DSL插件提供的API个方法组成;您可以使用这些 API 方法来配置作业的不同方面,例如其类型(自由式作业与流水线作业)、构建触发器、构建参数、post-构建操作等。您可以在 API 参考网站上找到所有支持的方法。

我们用于创建新作业的作业称为种子作业,该种子作业使用 Jenkins 文件(使用 JobDSL 插件)生成新作业。

在这里,我们禁用此功能(为作业 DSL 脚本启用脚本安全)

Jenkins Dashboard→ Manage Jenkins → Configure Global Security

创建种子作业的方法:

用于生成新作业的 JobDSL 脚本。

Job1.groovy

job("Job1"){
    description("First job")
    authenticationToken('secret')
    label('dynamic')
    scm {
        github('Asad/jenkins_jobDSL1', 'master')
    }
    triggers {
        gitHubPushTrigger()   
    }
    steps {
        shell ('''
    echo "test"
''')
    }
}
buildPipelineView('project-A') {
    title('Project A CI Pipeline')
    displayedBuilds(5)
    selectedJob('Job1')
    showPipelineParameters()
    refreshFrequency(60)
}

并以相同的方式创建其他人 Job2.groovy 等等。

对于 Jenkins Job DSL 文档:- 关注 https://jenkinsci.github.io/job-dsl-plugin/

想想一份工作 - 它到底是什么?

它实际上只是一个java/jre对象,表示像this

你是如何生成这样的 job/build 的?

配置 Jenkins UI -> rest api 到 Jenkins url -> Jenkins 服务在相关端点接收你的调用 -> 调用相关 code/method 和生成这个新工作

种子工作将如何完成?

仅在 Jenkins UI 上配置种子作业一次 -> 运行 此种子作业 -> 此代码 运行 针对 Jenkins 内部方法并跳过上述所有手动过程

现在,当您的代码可以直接与 Jenkins 代码对话时,事情就多了 easier.just 在相关的 repo 上更新您的代码 - 您就完成了