jenkins - 在构建后操作中查找工件
问题描述
简而言之:
如何在构建或构建后操作中启动的 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)中生成工件,该目录随每次构建而变化。
由于工件在已完成的作业状态视图中正确列出,我希望将工件详细信息提供给脚本(例如通过环境变量)。但显然情况并非如此。我已经广泛搜索解决方案,但没有发现任何有用的东西。或者是我(在詹金斯中仍然是一个新秀),在这里采取了错误的做法?
解决方案
您可以使用archiveArtifacts。您binaries.tmp
在工作区中有目录,您可以使用它,但在使用deleteDir()
.
管道示例:
pipeline {
agent any
stages {
stage('Build') {
steps {
deleteDir()
...
}
}
}
post {
always {
archiveArtifacts artifacts: 'binaries*/**', fingerprint: true
}
}
}
推荐阅读
- java - Android 密钥库密码正确但无法恢复密钥
- php - php foreach 从文件夹中删除 mysql 和图像
- powershell - 如何获取用户有权访问 Exchange2010 的所有共享邮箱的列表 Exchange 命令行管理程序还是 PowerShell?
- powershell - 指定所有属性时,Get-ADUser 未返回所有可能的 AD 属性
- django - wagtail 中是否有文件大小限制或扩展名限制?
- c# - 捆绑包的 MVC5 授权
- openshift - OpenShift 主机路径卷和重音字符
- python - 从打开的简历中的图片中删除大对象
- json - 提取数据后在 JSON 行之间插入分隔符
- r - 警告:在 predict.lm 中,来自秩不足拟合的预测可能会产生误导