You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Groovy脚本在Jenkins中创建指定Pipeline流水线

解决方案

你可以直接在原有初始化Groovy脚本的基础上追加Pipeline创建逻辑,直接调用Jenkins内置API完成Pipeline任务的创建,无需额外手动操作。

前置依赖

请确保Jenkins实例已经预先安装以下Pipeline必备插件,再执行脚本:

  • workflow-job
  • workflow-cps
  • pipeline-model-definition(支持声明式Pipeline语法)

完整整合脚本

#!groovy
import hudson.security.*
import jenkins.model.*
import hudson.util.*;
import jenkins.install.*;
import jenkins.model.Jenkins
import jenkins.model.JenkinsLocationConfiguration
// 导入Pipeline相关类
import workflow.job.WorkflowJob
import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition

// parameters
def jenkinsParameters = [
  email:  '{{ jenkins_username_name }} <{{ jenkins_username_email }}>',
  url:    '{{ jenkins_tls_url }}'
]

// get Jenkins location configuration
def jenkinsLocationConfiguration = JenkinsLocationConfiguration.get()

// set Jenkins URL
jenkinsLocationConfiguration.setUrl(jenkinsParameters.url)

// set Jenkins admin email address
jenkinsLocationConfiguration.setAdminAddress(jenkinsParameters.email)


def instance = Jenkins.getInstance()

def hudsonRealm = new HudsonPrivateSecurityRealm(false)

hudsonRealm.createAccount('{{ jenkins_admin_username }}', '{{ jenkins_admin_password }}')
instance.setSecurityRealm(hudsonRealm)
instance.setInstallState(InstallState.INITIAL_SETUP_COMPLETED)

// ------------------- 新增Pipeline创建逻辑 -------------------
// 定义Pipeline任务名称
def pipelineName = "bees-buzz-pipeline"
// 检查任务是否已存在,避免重复创建报错
if (!instance.getItem(pipelineName)) {
    // 创建Pipeline类型任务
    WorkflowJob pipelineJob = instance.createProject(WorkflowJob.class, pipelineName)
    // 填入你的Jenkinsfile内容
    def jenkinsfileContent = '''pipeline {
  agent any
  stages {
    stage('Buzz Buzz') {
      steps {
        echo 'Bees Buzz!'
      }
    }

    stage('Bees Bees Bees') {
      steps {
        echo 'Buzz, Bees, Buzz!'
        echo 'Bees Buzzing!'
      }
    }

  }
}'''
    // 配置Pipeline定义,第二个参数设为false代表禁止页面修改脚本,需可编辑改为true即可
    pipelineJob.setDefinition(new CpsFlowDefinition(jenkinsfileContent, false))
    pipelineJob.save()
}
// ------------------- Pipeline创建逻辑结束 -------------------

jenkinsLocationConfiguration.save()
instance.save()

配置说明

  • 你可以修改pipelineName变量的值自定义生成的Pipeline任务名称
  • CpsFlowDefinition的第二个布尔参数控制该Pipeline脚本是否允许在Jenkins Web端修改,设置为true时用户可以在页面上直接编辑Jenkinsfile内容,设置为false时仅能通过脚本更新
  • 如果需要从外部文件加载Jenkinsfile,只需要把jenkinsfileContent变量替换为读取本地文件的逻辑即可

内容的提问来源于stack exchange,提问作者Kaguei Nakueka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 02:09:03