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

相关推荐
大傻^18 小时前
07_Elasticsearch知识体系之集群架构高可用与快照恢复实战
elasticsearch·架构·jenkins
做个文艺程序员20 小时前
第05篇:K8s CI/CD 全流程:GitOps × ArgoCD × Harbor——Java SaaS 从代码提交到生产部署一键直达
ci/cd·kubernetes·argocd
无心水1 天前
【Harness:落地实战】23、从CI/CD到AI原生底座:Harness平台全景深度解析——现代软件交付的最终答案?
人工智能·ci/cd·ai-native·openclaw·harness·hermes·honcho
STDD1 天前
Gitea Actions Runner 搭建指南:为 Gitea 添加 CI/CD 自动化执行器
ci/cd·自动化·gitea
fangdengfu1231 天前
jenkins使用pipeline实现滚动发布
运维·jenkins
深圳行云创新1 天前
企业现有的 CI/CD 流程,如何融入 AI 能力?
人工智能·ci/cd
行者-全栈开发1 天前
SpringBoot CI/CD 流水线实战|Jenkins+GitLab CI,从手动到自动化交付
ci/cd·jenkins·springboot·devops·自动化部署·gitlab ci
Rain5091 天前
GitLab-Runner + AI 代码审查服务 + 远程大模型 全套部署运维实战
linux·运维·人工智能·python·ci/cd·gitlab·ai编程