审计 jenkins获取构建历史,生成excel

审计 jenkins获取构建历史,生成excel

脚本入口

在这里插入图片描述

脚本内容

def jobName = "城市云-生产环境-M/0102-CCDCSM平台-AUTH"
def job = Jenkins.instance.getItemByFullName(jobName)
def startDate = new Date(123, 0, 1) // 2023-01-01

// 打印表头(拆分Git字段)
println "构建编号,构建结果,构建时间(标准),构建链接,Git提交ID,提交作者,提交信息,变更文件"

job.builds.each { build ->
    if (build.getTimeInMillis() >= startDate.getTime()) {
        // 转换时间为标准格式
        def buildTime = new Date(build.timeInMillis).format("yyyy-MM-dd HH:mm:ss")
        
        // 处理Git变更
        def changeSet = build.changeSet
        def commitId = "", author = "", msg = "", files = ""
        
        if (changeSet != null && !changeSet.isEmptySet()) {
            def firstEntry = changeSet.iterator().next()
            commitId = firstEntry.commitId?.take(8) ?: "未知"
            author = firstEntry.author?.displayName ?: "未知"
            msg = firstEntry.msg?.replaceAll(",", " ")?.take(50) ?: "无提交信息"
            files = firstEntry.affectedPaths?.join(";")?.take(100) ?: "无文件变更"
        } else {
            commitId = "无变更记录"
        }
        
        // 输出拆分后的字段
        println "${build.number},${build.result},${buildTime},${build.absoluteUrl},${commitId},${author},${msg},${files}"
    }
}

其中 jobName 为项目名称,如果有文件夹的话,则是 文件夹/项目名 的格式;

获取的内容类似

在这里插入图片描述

复制这些内容,通过在线网站 Table Convert - Free Online Table Converter and Generator

进行转换生成excel
在这里插入图片描述
然后将下载的excel文件给审计人员即可。

在软件开发中,**Jenkins 或 CI/CD 的实施** 是指: 👉 **通过自动化工具(如 Jenkins)实现代码集成、构建、测试和部署的全流程自动化**,以提升交付效率、减少人为错误。 --- ## ✅ 什么是 CI/CD? | 缩写 | 全称 | 含义 | |------|------|------| | **CI** | Continuous Integration(持续集成) | 开发人员频繁地将代码变更合并到主干,并自动触发构建与测试 | | **CD** | Continuous Delivery / Deployment(持续交付 / 部署) | 自动将通过测试的代码打包并发布到指定环境(如测试、预生产、生产) | > 🎯 目标:**让每次提交都可发布(release-ready)** --- ## 🔧 Jenkins 在 CI/CD 中的角色 Jenkins 是最流行的开源 CI/CD 工具之一,它通过“任务(Job)”或“流水线(Pipeline)”来定义自动化流程。 ### ✅ Jenkins 能做什么? | 功能 | 示例 | |------|------| | 拉取 Git/SVN 代码 | `git clone https://github.com/myteam/app.git` | | 编译项目 | `mvn clean package`、`make all`、`npm build` | | 运行单元测试 | `pytest`, `junit`, `go test` | | 执行静态代码检查 | SonarQube、ESLint、Checkstyle | | 构建 Docker 镜像 | `docker build -t myapp:v1.0 .` | | 部署到服务器 | SCP、Ansible、Kubernetes | | 发送通知 | 邮件、企业微信、钉钉、Slack | --- ## 🛠️ 实施 Jenkins CI/CD 的完整流程(7 步法) ### ✅ 第一步:明确目标和范围 先回答以下问题: - 我们想自动化什么?(编译?测试?烧录?) - 哪些团队参与?(开发、测试、Calib、SQA?) - 是否支持多车型/多版本? - 是否需要权限控制或审批流程? 📌 示例目标: > “每次提交代码后,自动拉取 → 编译固件 → 生成 CHK 文件 → CRC 校验 → 输出报告” --- ### ✅ 第二步:搭建 Jenkins 环境 #### 1. 安装 Jenkins ```bash # Linux(Ubuntu) wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' sudo apt update sudo apt install jenkins # 启动服务 sudo systemctl start jenkins ``` 访问地址:`http://your-server:8080` #### 2. 初始化设置 - 输入初始密码(位于 `/var/lib/jenkins/secrets/initialAdminPassword`) - 安装推荐插件 - 创建管理员用户 #### 3. 推荐安装的插件 | 插件名 | 用途 | |-------|------| | **Git Plugin** | 支持从 Git 拉取代码 | | **Pipeline** | 使用 Jenkinsfile 定义流程 | | **HTML Publisher Plugin** | 展示 HTML 报告(如 CRC 结果) | | **Email Extension Plugin** | 发送构建结果邮件 | | **Workspace Cleanup Plugin** | 清理工作空间 | | **Build Timeout Plugin** | 设置超时防止卡死 | | **Parameterized Trigger Plugin** | 触发下游任务 | --- ### ✅ 第三步:配置 Agent(执行节点) 对于嵌入式开发(如 ECU 固件),通常需要 Windows 环境运行 Excel 宏、Make 编译等。 #### 方案:使用 Windows Slave 节点 1. 在 Windows 机器上安装 Java 和 Jenkins Agent(通过 JNLP 或 SSH) 2. 在 Jenkins 中添加节点:Manage Jenkins → Nodes → New Node - 名称:`win-calib-node` - 类型:Permanent Agent - Labels:`windows-calib` 3. 连接方式:Launch agent via Java Web Start 然后在 Pipeline 中指定: ```groovy agent { label 'windows-calib' } ``` 确保该节点已安装: - Git - Python + xlwings/pandas - Cygwin(用于 checksum 工具) - Excel(支持 VBA 宏) --- ### ✅ 第四步:编写 Jenkinsfile(声明式 Pipeline) ```groovy pipeline { agent { label 'windows-calib' } environment { WORKSPACE_W = 'W:\\mainline\\spa_traveo' CALIB_XLSM = "${WORKSPACE_W}\\tool_bin\\calibration\\Calibration.xlsm" } stages { stage('🔍 映射 W 盘') { steps { bat ''' net use W: \\\\fileserver\\mainline\\spa_traveo /user:jenkins pass123 || echo 已连接 ''' } } stage('📝 更新 Calib 配置') { steps { sh 'python update_calibration_config.py' } } stage('⚙️ 运行 Excel 宏') { steps { bat 'python run_excel_macro.py' } } stage('🛠️ 全编译固件') { steps { dir("${WORKSPACE_W}\\prj\\Amber_BB_va1") { bat 'make clean && make all' } } } stage('📦 生成 CHK & CRC 校验') { steps { bat ''' cd ${WORKSPACE_W}\\tool_bin\\checksum call create_chk.bat ''' sh 'python verify_crc.py' } } stage('📊 发布报告') { steps { publishHTML([ target: [ reportDir: 'dst', reportFiles: 'CRCチェック結果.xlsx', reportName: 'CRC Validation Report' ] ]) } } } post { success { emailext(subject: "✅ 构建成功", body: "详见 ${env.BUILD_URL}", recipientProviders: [developers()]) } failure { emailext(subject: "🚨 构建失败", body: "查看日志: ${env.BUILD_URL}/console", recipientProviders: [developers()]) } } } ``` --- ### ✅ 第五步:配置参数化构建(可选) 允许用户选择参数启动构建: ```groovy parameters { string(name: 'VEHICLE_MODEL', defaultValue: 'TZAA', description: '输入车型') choice(name: 'BUILD_TYPE', choices: ['Debug', 'Release'], description: '构建类型') booleanParam(name: 'RUN_CRC_CHECK', defaultValue: true, description: '是否运行 CRC 校验') } ``` 在脚本中使用:`${params.VEHICLE_MODEL}` --- ### ✅ 第六步:触发方式配置 | 触发方式 | 配置方法 | |--------|---------| | **手动触发** | 用户点击 【Build Now】 | | **定时构建** | 使用 cron 表达式,如每天凌晨 `H 2 * * *` | | **Git Hook 触发** | GitHub/GitLab 提交后自动触发(需 Webhook) | | **上游任务触发** | Job A 成功后自动运行 Job B | --- ### ✅ 第七步:监控与优化 | 优化项 | 建议 | |-------|------| | 日志高亮 | 使用 ANSI Color Plugin 彩色输出 | | 构建归档 | `archiveArtifacts 'dst/*.hex, dst/*.chk'` | | 权限控制 | 使用 Role-based Authorization Strategy 控制谁能构建 | | 构建超时 | 添加 `timeout(time: 30, unit: 'MINUTES')` | | 失败重试 | `retry(2)` 尝试最多 3 次 | --- ## 📊 实施效果对比 | 传统模式 | 实施 CI/CD 后 | |--------|--------------| | 手动操作,容易出错 | 全流程自动化,稳定可靠 | | 一天只能构建一次 | 每次提交都能验证 | | 问题发现滞后 | 提交即发现问题(左移测试) | | 报告靠人工整理 | 自动生成 HTML/PDF 报告 | | 权限混乱 | 可控的构建权限和审计日志 | --- ## ✅ 成功案例(汽车行业 ECU 开发) 某 Tier1 厂商使用 Jenkins 实现: - Calib 数据更新 → 自动运行 Excel 宏 → 生成 C 文件 → 编译固件 → CRC 校验 - 每天自动构建 Nightly Build - 所有输出文件归档 + 报告邮件通知 SQA 团队 - 构建成功率从 60% 提升至 98% ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JavaOpsPro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值