使用jenkins中的归档构建产物archiveArtifacts,可以详细查看每次build生成的报告信息

archiveArtifacts:归档构建产物

archiveArtifacts 是 Jenkins 提供的一个后处理步骤,其主要目的是在构建过程(例如编译、测试)成功完成后,将指定的文件或目录归档保存下来,并提供统一的界面供用户查看和下载。你可以把它想象成一个"成果收集器"。构建过程会产生一些有价值的输出(比如编译好的 .jar 包、生成的报告、部署包等),archiveArtifacts 会把这些输出收集起来,与本次构建关联,确保它们不会被后续的构建覆盖或清理掉。

语法:

复制代码
archiveArtifacts artifacts: '路径/模式', allowEmptyArchive: true/false

参数详解:

参数 含义
artifacts: "目录*" 指定要归档的文件路径和匹配模式。目录* 表示该目录下的所有文件。
allowEmptyArchive: true 即使没有匹配到文件,也不报错,构建继续。如果设为 false 且没有文件匹配,Jenkins 会标记构建为 失败。

实际作用:

  • dependency-check-report/ 目录下的所有文件(如 HTML、JSON、XML 报告)保存到 Jenkins 服务器上。
  • 这些文件会随构建历史长期保留(取决于 Jenkins 的日志保留策略)。
  • 可通过 Jenkins Web 界面下载这些文件,用于审计或分析。

示例归档内容:

  • dependency-check-report.html
  • dependency-check-report.json
  • dependency-check-report.xml

归档后,点击具体build,显示效果如下:

为什么需要它?(解决了什么问题)

  1. 持久化构建成果 :Jenkins 的工作空间(Workspace)通常是不稳定的。每次构建可能会清理 workspace,或者新的构建会覆盖旧的文件。archiveArtifacts 将重要的文件复制到一个专属于本次构建的安全位置,使其长期存在。

  2. 便于访问和分发:无需登录到构建服务器去翻找文件。任何有权限的人都可以在 Jenkins 的构建页面上直接点击下载归档的文件。这对于将构建好的软件分发给测试团队、客户或用于部署非常方便。

  3. 历史记录和审计:你可以回溯任何一次历史构建,并查看当时生成的准确文件。这对于排查问题、版本对比和审计至关重要。

  4. 集成与下游作业:归档的 artifacts 可以被其他 Jenkins 作业或工具使用。例如,一个打包作业归档了一个 RPM 包,另一个部署作业可以下载这个包并部署到服务器上。

如何使用它?

archiveArtifacts 通常用在 Jenkins Pipeline 的 post 块(success 条件下)或在 Freestyle 项目的"构建后操作"中添加。

1. 在声明式 Pipeline 中的用法
复制代码
pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                // 模拟编译步骤,例如使用 Maven
                sh 'mvn clean package'
            }
        }
    }
    post {
        success {
            // 构建成功后,归档 target 目录下的所有 .jar 文件
            archiveArtifacts artifacts: 'target/*.jar', fingerprint: true
        }
        always {
            // 还可以归档测试报告(例如 JUnit 的 XML 报告)
            junit 'target/surefire-reports/*.xml'
        }
    }
}
2. 在脚本式 Pipeline 中的用法
复制代码
node {
    stage('Build') {
        sh 'mvn clean package'
    }
    stage('Archive') {
        // 构建后归档
        archiveArtifacts artifacts: 'target/*.war', fingerprint: true
    }
}
3. 在 Freestyle 项目中的用法
  1. 在项目配置中,找到 "构建后操作" 部分。

  2. 点击 "增加构建后操作"。

  3. 选择 "Archive the artifacts"。

  4. 在 "要归档的文件" 输入框中,填写文件路径模式(例如 target/*.jar)。

关键参数和语法

  • artifacts (必需):指定要归档的文件路径模式。支持 Ant 风格的模式匹配。

    • *:匹配任意数量的字符(不包括路径分隔符)。

    • **:匹配任意数量的字符(包括路径分隔符)。

    • ?:匹配单个字符。

    • ,:分隔多个模式。

    • !:排除模式。

    示例:

    • target/*.jar:归档 target 目录下所有 .jar 文件。

    • target/myapp-*.zip:归档所有以 myapp- 开头的 .zip 文件。

    • **/build/libs/*.jar:递归搜索所有 build/libs 目录下的 .jar 文件。

    • target/**/*:归档 target 目录及其子目录下的所有文件。

    • target/*, !target/*-sources.jar:归档 target 目录下的所有文件,但排除以 -sources.jar 结尾的文件。

  • fingerprint (可选):布尔值,默认为 false。如果设置为 true,Jenkins 会为归档的每个文件计算一个唯一的指纹(MD5 checksum)。这主要用于跟踪一个 artifact 是在哪次构建中产生的,以及被哪些其他构建所使用,实现构建之间的依赖追踪。

  • onlyIfSuccessful (可选):布尔值,默认为 false。如果设置为 true,则仅在构建状态为"成功"时才归档。即使在构建不稳定(Unstable)状态下也会跳过归档。在 Pipeline 中,我们通常通过在 post { success { ... } } 块中调用来实现这个逻辑。

  • allowEmptyArchive (可选):布尔值,默认为 false。如果设置为 true,即使没有找到任何匹配的文件,构建也不会失败。如果设置为 false,且没有文件匹配,则构建会被标记为失败。

注意事项

  1. 磁盘空间管理:归档会占用 Jenkins 服务器的磁盘空间。大量或频繁的构建可能会快速消耗空间。务必设置"丢弃旧的构建"策略,自动删除旧的构建记录及其关联的 artifacts。

  2. 不要归档所有内容:只归档必要的、有价值的输出文件(如二进制包、安装程序、汇总报告)。切勿归档整个工作空间或源代码(源代码应由 SCM 如 Git 管理),这会导致磁盘迅速爆满。

  3. 路径是相对于工作空间的:指定的文件路径是基于当前作业的工作空间的。

如何查看归档的 Artifacts?

在 Jenkins 构建历史中,点击任何一次成功的构建,你会在左侧菜单看到一个 "Artifacts" 链接或直接在页面中看到一个文件列表。从这里你可以直接浏览或下载文件。

相关推荐
宋均浩2 天前
# Docker 镜像瘦身实战:从 1.2G 到 80MB 的五个优化步骤
ci/cd·docker
宋均浩7 天前
# GitHub Actions 实战:从零搭建 CI/CD 流水线的 5 个核心配置
ci/cd
lunzi_08269 天前
【开源治理】05-把流程翻译成门禁:开源治理嵌入 DevOps 流水线实战
供应链管理·devops·开源治理
程序员老赵9 天前
服务器没有桌面?Docker 跑个 Chrome,浏览器就能远程用
docker·容器·devops
醉颜凉9 天前
Elasticsearch高性能优化:Bulk API大规模数据导入性能调优全攻略
elasticsearch·性能优化·jenkins
宋均浩9 天前
# pytest 的 5 个 fixture 骚操作,我用了 3 年才学会
devops
睡不醒男孩0308239 天前
云原生运维实战:高并发架构下的云原生可观测性、韧性降级与自动化干预体系
数据库·kubernetes·高并发·prometheus·devops·sre·缓存调优
爱学习的程序媛9 天前
DevOps 深度解析:从文化理念到落地实践
运维·devops
霸道流氓气质9 天前
GitLab CI/CD 完全指南
linux·ci/cd·gitlab
sbjdhjd9 天前
从零搭建企业级 CI/CD(下):Jenkins+GitLab+Harbor 全链路实战指南
git·servlet·ci/cd·云原生·云计算·gitlab·jenkins