【问题标题】:Provide access to workspace files in log while Jenkins Build is running在 Jenkins Build 运行时提供对日志中工作区文件的访问权限
【发布时间】:2018-05-09 04:49:40
【问题描述】:

我们希望有一个管道,它构建我们的应用程序而不是暂停,在构建的应用程序经过手动测试后恢复并交付测试的应用程序。

所以我想出了使用 Input 来暂停管道的想法,如下所示:

...
stage ("Build"){
    // build application here and archive it as artefact
}
timeout(time:5, unit:'DAYS') {
    input message:'Approve deployment?'
}
stage ("Deliver"){
   // deliver the built application
}

测试人员有 5 天的时间来测试应用程序,然后恢复管道并交付。

我的问题是,虽然构建仍在运行,但测试人员还无法访问状态页面上的工件。

那么有没有办法在日志输出中提供任何类型的下载链接,指向我在构建阶段存档的应用程序文件? 或者有没有其他好的方法可以在一个管道作业中实现这个构建->暂停->测试->恢复->交付工作流?

流水线中的测试自动化不是一个选项,因为应用程序需要在某些硬件上手动刷新。

【问题讨论】:

  • 你为什么不把管道一分为二呢?体力劳动之前和体力劳动之后? (或 2 份工作 - 取决于你在那里做什么)
  • 这是客户要求。我知道 2 条管道会更容易,但我们被告知至少要尝试找到一种解决方案来完成它。
  • 那么也许你可以创建一个“假”作业测试并让它运行直到测试人员完成他的测试,然后在交付时你可以使用这个插件wiki.jenkins.io/display/JENKINS/Build+Blocker+Plugin来检查假测试作业是否是跑步。当测试人员完成他的测试后,他可以手动结束虚假工作。但这是解决此问题的一种令人讨厌的方法,并且将来可能会导致问题(主要是由于人为错误:p)。
  • 手动恢复工作不是问题,因为我可以通过暂停来做到这一点。我的需要是在它仍在运行(暂停)时轻松访问作业的工件。
  • 是的,这就是我说你需要创建另一个工作“假测试”的原因。因此,您将有 3 个工作:1. 构建和创建工件 -> 2. 假测试并等待 3. 部署。当您在工作 3 并等待 2 时。您已经拥有所有工件(如果您使用 maven 将它们存储在工件或类似的东西中,您将拥有它们)

标签: jenkins jenkins-pipeline pause artifact


【解决方案1】:

这将使您进入工件列表(如果您希望链接指向特定文件,您可以在 artifact 之后添加更多):

...
timeout(time:5, unit:'DAYS') {
    echo "Archive available for download: ${env.BUILD_URL}artifact"
    input message:'Approve deployment?'
}

这需要在系统配置中设置JENKINS_URL 的值:在您的 Jenkins 主页中,单击 Manage Jenkins --> Configure System 并查找Jenkins 位置

下的 Jenkins URL

如果您没有 Jenkins 的管理员权限,并且未设置 JENKINS_URL,您可以使用类似

https://known-jenkins-url/job/${JOB_NAME}/${BUILD_NUMBER}/artifact

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多