jenkins - Jenkins Multibranch Pipeline - 以编程方式设置构建配置
问题描述
我创建了一个脚本来使用 Groovy 文件中的 Multibranch Pipeline 自动初始化我的 Jenkins 实例
/* Adds a multibranch pipeline job to Jenkins */
import hudson.model.*
import hudson.plugins.git.extensions.impl.UserIdentity
import hudson.util.PersistedList
import jenkins.*
import jenkins.branch.*
import jenkins.model.*
import jenkins.model.Jenkins
import jenkins.plugins.git.*
import jenkins.plugins.git.traits.*
import jenkins.scm.impl.trait.RegexSCMHeadFilterTrait
import com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger
import org.jenkinsci.plugins.workflow.multibranch.*
// Create job
def env = System.getenv()
Jenkins jenkins = Jenkins.instance
String jobName = "Flow"
String jobScript = "flow/cicd/Jenkinsfile"
def job = jenkins.getItem(jobName)
// Create the folder if it doesn't exist
if (job == null) {
job = jenkins.createProject(WorkflowMultiBranchProject.class, jobName)
}
job.getProjectFactory().setScriptPath(jobScript)
// Add git repository
String remote = env.CODE_COMMIT_URL
GitSCMSource gitSCMSource = new GitSCMSource(remote)
BranchSource branchSource = new BranchSource(gitSCMSource)
// Remove and replace?
PersistedList sources = job.getSourcesList()
sources.clear()
sources.add(branchSource)
// Add traits
String username = "Jenkins"
String email = "jenkins@email.com"
String regexExclude = "^(?!no-cicd).*"
def traits = []
traits.add(new BranchDiscoveryTrait())
traits.add(new LocalBranchTrait())
traits.add(new TagDiscoveryTrait())
traits.add(new UserIdentityTrait(new UserIdentity(username, email)))
traits.add(new RegexSCMHeadFilterTrait(regexExclude))
gitSCMSource.setTraits(traits)
// Periodic trigger
job.addTrigger(new PeriodicFolderTrigger("1m"))
我想知道是否有办法从构建配置中删除 Jenkinsfile 并使用 Groovy 文件以编程方式添加它?例如String jobScript = "flow/cicd/Jenkinsfile"
,我没有在 Groovy 文件中,而是
String buildConfiguration = "
pipeline {
agent any
tools {
nodejs "nodejs"
}
environment {
CI = 'true'
}
stages {
stage("Checkout") {
steps {
checkout scm
sh "git fetch --tags"
}
}
...
目前,我唯一的选择是设置一个 Jenkinsfile,如下所示。
解决方案
推荐阅读
- android - 哪款 Android 设备具有 BIOMETRIC_STRONG(第 3 类)人脸身份验证?
- dll - 如何在 BtsCatalogExplorer 中查找管道组件?
- javascript - 是否有扩展或方法来突出显示 laravel Blade 指令 @section .... @end 代码中的代码中的正确代码?
- matlab - 在其他方法中访问从类的方法返回的数据
- javascript - 如果我移动硬编码的引号,查询将不起作用
- image - CV_bridge 压缩图像?
- android - React Native - 用于 Android AAB 生成的 build.gradle 配置
- python - RMSE 比较两个以上的数据样本?
- java - 拆分函数在java中给出不正确的结果
- xamarin.forms - Xamarin Forms 控件失去其风格