【问题标题】:Jenkins how to create pipeline manual stepJenkins如何创建管道手动步骤
【发布时间】:2018-05-09 03:45:56
【问题描述】:

在 Jenkins2 之前,我使用 Build Pipeline Plugin 构建应用程序并将其手动部署到服务器。 旧配置:

效果很好,但我想使用从 groovy 脚本 (Jenkinsfile) 生成的新 Jenkins 管道来创建手动步骤。

到目前为止,我想出了inputjenkins step。

使用 jenkinsfile 脚本:

node {
   stage 'Checkout'
   // Get some code from repository

   stage 'Build'
   // Run the build
}

stage 'deployment'
input 'Do you approve deployment?'
node {
    //deploy things
}

但这会等待用户输入,注意构建尚未完成。我可以向input 添加超时,但这不允许我选择/触发构建并在以后部署它:

如何使用新的 jenkins-pipeline 获得与之前使用 Build Pipeline Plugin 相同/相似的手动步骤/触发器结果?

【问题讨论】:

  • 我遇到了同样的问题。管道可以工作,但我非常希望我的构建显示为成功,并有手动操作来部署/提升构建。
  • 这应该用“检查点”插件解决。但目前这在 OSS 版本中仍然是不可能的,但投票正在他们的问题跟踪器JENKINS-33846
  • 我正计划从 Build Pipeline Plugin 迁移到 Jenkins Pipelines,但我和你的情况相同。我看到你的帖子是 2016 年的,有没有办法解决这个问题?谢谢

标签: jenkins groovy jenkins-pipeline


【解决方案1】:

这是 Jenkins Pipeline 功能 IMO 中的一个巨大差距。由于管道是一项单一的工作,因此绝对难以提供。一种解决方案可能是将工作区“归档”为“工件”(tar 并将 **/* 归档为“workspace.tar.gz”),然后让另一个管道复制工件并将其解压缩到新的工作区中。这允许第二个管道从前一个停止的地方开始。当然,没有办法保证第二个管道不能不按顺序执行或多次执行。这太糟糕了。 Delivery Pipeline Plugin 在这里真的很出色。您可以直接从视图中执行一个新管道 - 而不是第一个作业。无论如何 - 没有太多答案 - 但它是我要尝试的路径。

编辑:这个插件看起来很有前途:

https://github.com/jenkinsci/external-workspace-manager-plugin/blob/master/doc/PIPELINE_EXAMPLES.md

【讨论】:

  • 差距如此之大,可以称之为“设计破坏”。出于这个原因,我们继续使用交付管道插件。设置作业链接有点复杂,但它运行良好并且允许细粒度的权限。不过,我们正在研究切换到 Gitlab CI,他们的管道可以很好地执行手动步骤。不确定是什么阻碍了 Jenkins。
  • 嗯,那个插件看起来很有前途,所以如果我理解我可以将上游管道作为单独的自动作业放置到位,它将执行构建和下游管道,这将与上游共享工作空间以及我可以在哪里实现按钮,然后应该可以工作。