首页 > 解决方案 > 在构建后操作中查找工件

问题描述

简而言之:

如何在构建或构建后操作中启动的 shell 脚本中访问生成的工件的位置?

更长的故事:

我正在尝试设置一个 jenkins 作业来自动化 debian 包的构建和传播。到目前为止,我已经成功地使用了debian-pbuilder 插件来执行构建过程,这样 jenkins 会在成功完成工作后呈现最终的工件:

mypackage_1+020200224114528.NOREV.4_all.deb
mypackage_1+020200224114528.NOREV.4_amd64.buildinfo
mypackage_1+020200224114528.NOREV.4_amd64.changes
mypackage_1+020200224114528.NOREV.4.dsc
mypackage_1+020200224114528.NOREV.4.tar.xz

现在我还想将部署过程自动化到本地 reprepro 存储库中,这实际上只需要一个简单的 shell 脚本调用,我已经放在一起了。

我的问题:我无法确定该部署脚本要运行的工件位置。“debian-pbuilder”插件在临时目录($WORKSPACE/binaries.tmp15567690749093469649)中生成工件,该目录随每次构建而变化。

由于工件在已完成的作业状态视图中正确列出,我希望将工件详细信息提供给脚本(例如通过环境变量)。但显然情况并非如此。我已经广泛搜索解决方案,但没有发现任何有用的东西。或者是我(在詹金斯中仍然是一个新秀),在这里采取了错误的做法?

标签: jenkinsjenkins-plugins

解决方案


您可以使用archiveArtifacts。您binaries.tmp在工作区中有目录,您可以使用它,但在使用deleteDir().

管道示例:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                deleteDir()
                ...
            }
        }
    }

    post {
        always {
            archiveArtifacts artifacts: 'binaries*/**', fingerprint: true
        }
    }
}

您也可以查看https://plugins.jenkins.io/copyartifact/


推荐阅读