使用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" 链接或直接在页面中看到一个文件列表。从这里你可以直接浏览或下载文件。

相关推荐
伊布拉西莫6 小时前
GitHub Actions 自动化发布指南
github·devops
研发小能11 小时前
DevOps 工具链怎么选?已有工具的企业,先评估整合能力
运维·devops
垚垚学技术_聚焦云原生1 天前
Ansible Playbook 进阶:when 条件、loop 循环、handlers 触发器落地
linux·ansible·自动化运维·devops
长不大的杨瑞杰1 天前
OpenCode v2 多源上下文实战:Websearch、References、Attachments 与缓存预热
人工智能·安全·云计算·软件工程·devops
蒸鱼Yuzheng1 天前
性能 CI 成本优化:设备分钟、风险分层与自适应测试选择
自动化测试·ci/cd·性能测试·测试平台·成本优化
知已难寻2 天前
第 5 篇 · 云原生生态与实践:微服务、DevOps、可观测性与 Serverless
大数据·linux·服务器·微服务·云原生·云计算·devops
长不大的杨瑞杰2 天前
OpenCode v2 远程开发实战:Web UI、Pair、SSH 隧道与 OpenTunnel 安全接入
人工智能·安全·云计算·软件工程·devops
7177772 天前
2026年CI/CD工具选哪家比较好:主流方案对比与Gitee选型解析
ci/cd·gitee
biaov2 天前
Jenkins + Docker 搭建前端 CI:前端一键打包部署
前端·docker·jenkins
吴建旭 智宅焕3 天前
智能家居全国交付模式选型架构设计:连接型与兜底型的决策矩阵与匹配逻辑
运维·智能家居·devops