标签: jenkins-workflow

如何使用Jenkinsfile(groovy)中的变量执行shell命令的输出?

我在Jenkinsfile(Groovy)上有这样的东西,我想在变量中记录stdout和退出代码,以便稍后使用这些信息.

sh "ls -l"
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做,特别是因为你似乎无法在里面运行任何类型的groovy代码Jenkinsfile

groovy jenkins-workflow jenkins-pipeline jenkinsfile

178
推荐指数
6
解决办法
24万
查看次数

如何在本地测试对Jenkinsfile所做的更改?

在编写jenkins管道时,为了查看它是否有效,提交每个新更改似乎非常不方便.

有没有办法在不提交代码的情况下在本地执行这些?

jenkins jenkins-workflow jenkins-pipeline

177
推荐指数
8
解决办法
9万
查看次数

如何使用GitHub Org插件从jenkins管道(jenkinsfile)触发另一个作业?

如何从内部触发另一个作业的构建Jenkinsfile

我假设这个工作是同一个github组织下的另一个存储库,一个已经有自己的Jenkins文件.

我也想在分支名称为master时执行此操作,因为触发任何本地分支的下游构建没有意义.

更新:

stage 'test-downstream'
node {
     def job = build job: 'some-downtream-job-name'
}
Run Code Online (Sandbox Code Playgroud)

仍然,执行时我得到一个错误

找不到名为some-downtream-job-name的参数化作业

我确信这个工作存在于jenkins中,并且与当前工作文件夹在同一组织文件夹下.这是另一项有自己的工作Jenkinsfile.

请注意,此问题特定于GitHub组织插件,该插件可从GitHub组织自动创建和维护每个存储库和分支的作业.

groovy jenkins jenkins-workflow jenkins-pipeline

118
推荐指数
5
解决办法
18万
查看次数

是否可以从管道中的sh DSL命令捕获stdout

例如:

var output=sh "echo foo";
echo "output=$output";
Run Code Online (Sandbox Code Playgroud)

我会得到:

output=0
Run Code Online (Sandbox Code Playgroud)

所以,显然我得到退出代码而不是标准输出.是否有可能将stdout捕获到管道变量中,这样我就可以得到: output=foo 作为我的结果?

jenkins jenkins-workflow jenkins-pipeline

74
推荐指数
4
解决办法
7万
查看次数

如何为Jenkins管道中的失败阶段实现重试选项?

我有一个具有多个阶段的Jenkins文件,其中一个实际上是另一个工作(部署一个),在某些情况下可能会失败.

我知道我可以使用Jenkinsfile提示,但我真的不知道如何为这个作业实现重试机制.

我希望能够单击失败的舞台并选择重试它. 詹金斯-管道与 - 阶段

groovy jenkins-workflow jenkins-pipeline jenkinsfile

58
推荐指数
3
解决办法
4万
查看次数

检查jenkins管道中是否存在文件

我正在尝试运行块,如果我的jenkins工作空间中存在一个目录,并且工作空间中的管道步骤"fileExists:验证文件存在"似乎无法正常工作.

我正在使用Jenkins v 1.642和Pipeline v 2.1.并试图有一个像这样的条件

if ( fileExists 'test1' ) {
  //Some block
}
Run Code Online (Sandbox Code Playgroud)

我在管道中有哪些其他选择?

jenkins jenkins-workflow jenkins-pipeline

57
推荐指数
2
解决办法
7万
查看次数

获取Jenkins Pipeline插件中工作空间目录的绝对路径

我目前正在对Jenkins Pipeline插件(以前称为Workflow插件)进行一些评估.阅读文档我发现我目前无法使用env.WORKSPACE以下方法检索工作区路径 :

工作流脚本中当前不可使用以下变量:

NODE_LABELS

工作区

特定于SCM的变量,例如SVN_REVISION

有没有其他方法如何获得当前工作区的绝对路径?我需要运行一些测试,然后获取一些参数(一些可执行文件的绝对路径).我已经尝试new File("").absolutePath()在一个@NonCPS部分内部使用,但看起来非CPS的东西总是在主服务器上执行.

有没有人知道如何在运行某些批处理脚本的情况下获取此路径,该脚本将路径存储到某个文件中,以后可以再次读入该文件?

jenkins jenkins-workflow jenkins-pipeline

54
推荐指数
3
解决办法
11万
查看次数

如何使用Jenkins Pipeline插件实现Post-Build阶段?

在阅读了解释Pipeline插件的Jenkins 教程后,似乎插件应该可以实现Post-Build步骤.但是,文档在具体说明方面相当有限.

例如,我想知道如何实现:

  • 仅在构建成功时运行
  • 仅在构建成功或不稳定时运行
  • 无论构建结果如何都运行

(我注意到最终的构建状态被设置为SUCCESS,即使某些阶段,即'build'在基于最后阶段设置时失败了.这是否意味着最终构建状态需要明确设置,即currentBuild.result = 'UNSTABLE'?)

jenkins jenkins-workflow jenkins-pipeline

49
推荐指数
3
解决办法
7万
查看次数

将Jenkins管道阶段显示为失败而不会使整个作业失败

这是我正在玩的代码

node {
    stage 'build'
    echo 'build'

    stage 'tests'
    echo 'tests'

    stage 'end-to-end-tests'
    def e2e = build job:'end-to-end-tests', propagate: false
    result = e2e.result
    if (result.equals("SUCCESS")) {
        stage 'deploy'
        build 'deploy'
    } else {
        ?????? I want to just fail this stage
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让我将"端到端测试"阶段标记为失败,而不会使整个工作失败?传播假只是总是将舞台标记为真,这不是我想要的,但传播真实标志着失败的工作,我也不想要.

groovy jenkins jenkins-workflow jenkins-pipeline

48
推荐指数
5
解决办法
7万
查看次数

如何使用Jenkins Pipeline属性步骤?

我正在研究Jenkins Pipeline:Multibranch的功能.据说最近推出的properties步骤在那里可能有用,但我无法理解它是如何工作的以及它的目的是什么.

它的提示信息似乎不是很清楚:

更新运行此步骤的作业的属性.主要用于多分支工作流,因此Jenkinsfile本身可以编码静态作业配置.

所以我用这个脚本创建了一个新的Pipeline(直接粘贴到Jenkins而不是SCM中):

properties [[$class: 'ParametersDefinitionProperty',
   parameterDefinitions: [[$class: 'StringParameterDefinition',
       defaultValue: '', description: '', name: 'PARAM1']]
]]
Run Code Online (Sandbox Code Playgroud)

我运行它并没有发生任何事情,工作没有收到一个新的参数,即使它确实我没有得到为什么我可能需要这个.有人可以解释一下吗?

UPDATE1:我尝试将带有属性步骤的虚拟管道放入我的git仓库,然后配置了一个多分支作业.

println 1
properties [[$class: 'ParametersDefinitionProperty', parameterDefinitions: [[$class: 'StringParameterDefinition', defaultValue: 'str1', description: '', name: 'PARAM1']]], [$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false]]
println 2
Run Code Online (Sandbox Code Playgroud)

它找到了我的分支,创建了一个工作,但构建失败了:

groovy.lang.MissingPropertyException: No such property: properties for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java:62)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:185)
at org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:241)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:238)
at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:23)
at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:17)
at WorkflowScript.run(WorkflowScript:2)
at ___cps.transform___(Native Method)
at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.get(PropertyishBlock.java:62)
at com.cloudbees.groovy.cps.LValueBlock$GetAdapter.receive(LValueBlock.java:30)
at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.fixName(PropertyishBlock.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) …
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-workflow jenkins-pipeline

47
推荐指数
2
解决办法
5万
查看次数