我正在编写一个Groovy脚本,其中包含部署terraform的作业。我正在使用作业DSL并使种子作业由JCasC实现,一切正常。然后我有一个包含作业的Groovy文件的存储库。
如果我将Groovy文件保持为单个作业,它就可以正常工作。
然而,我希望能够构建具有构建阶段的管道。我知道我可以把管道写在詹金斯文件中
我有这个作为开始:
pipelineJob('Deploy-K8s-Cluster') {
definition {
cps {
script('''
pipeline {
agent any
stages {
stage('Checkout'){
steps {
scm {
git {
branch('master')
remote {
url 'jenkins@bitbucket.org:jjbbtt/aws-infrastructure.git'
credentials('bitbucket-ssh')
}
}
}
}
}
stage('Terraform Initialize') {
steps {
'terraform init'
}
}
stage('Terraform Plan') {
steps{
'terraform plan -out=create.tfplan'
}
}
stage('Terraform Apply') {
steps{
'terraform apply -auto-approve create.tfplan'
}
}
stage('Deploy Sealed Secrets Controller') {
steps{
'kubectl apply -f sealed-secrets/controller.yaml'
}
}
}
}
'''.stripIndent())
sandbox()
}
}
}
但是,我看到了这个错误:
General error during semantic analysis: There's no @DataBoundConstructor on any constructor of class javaposse.jobdsl.plugin.casc.FromUrlScriptSource
我已经尝试了各种方法,并阅读了一堆文档…但问题是我不太熟悉工作DSL。
我错过了什么简单的东西吗?还是完全找错了人?
我想明白了…我的误解是没有看到cps的script()
部分中的任何内容不是Job DSL。如果我更改语法,就可以工作。
是否有可能通过一个作业DSL创建多分支管道作业,该作业通过“管道脚本”而不是每个Git存储库包含的Jenkinsfile来定义作业? 我们希望避免在100个Git存储库中生成和维护相同的Jenkins文件(除了一些参数)。 目前,我们正在使用管道作业和工厂作业播种的作业DSL,但目前我们在多分支构建(功能分支)方面受到限制。因此,我们希望切换到多分支管道作业,但在播种方面我们受到了限制。 我知道我
我试图从流水线步骤中运行一个job-dsl脚本。一般来说,这应该是可能的,正如这里所描述的,在管道步骤中添加了以下代码片段: null 我如何知道脚本的真实位置,以及如何指定一个jobDsl作为目标,它本身位于不同的repo中?还是我完全走错了方向? 编辑 经过进一步的研究,共享库存储库被签出到“真实”工作区旁边的一个目录中,后缀为@libs,这似乎是事实。所以我认为使用以下方法是个好主意: 与此
我正在使用jenkins job DSL插件创建一个jenkins pipeline作业来播种作业。如何获得DSL文件中的工作空间路径?詹金斯管道代码是这样的: 失败的 DSL 代码是: 出现错误: 在管道区域中创建的变量在作业DSL步骤中不可访问
我试图使用Jenkins DSL groovy来创建Jenkins工作。我对Git参数使用的方法,很少有参数无法识别,并出现以下错误。 方法:javaposse.jobdsl.dsl.helpers.gitParamContext.SelectedValue()的签名不适用于参数类型:(java.lang.String)值:[NONE] 方法:javaposse.jobdsl.dsl.helper
问题内容: 我想在管道作业中使用EnvInject插件。因此,我可以设置复选框“为运行准备一个环境”,但是 没有动作“注入环境变量”,就像在自由式作业中一样。我在“属性内容”块中声明了变量:在此处输入图片说明 如何使用EnvInject在管道作业中注入环境变量? 问题答案: 如果在“属性内容”块中声明了以下变量: 然后,您可以将它们放入管道中,以便:
null null 我怎样才能想象这些工作类型之间的关系?还有其他插件支持这些类型吗?