You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Bash脚本实现Git克隆、Maven测试及Extent报告展示

Bash脚本复刻Jenkins流水线实现自动化测试与报告推送

以下是完全贴合需求的Bash脚本实现方案,涵盖代码拉取、测试执行、报告整理、Teams推送及本地报告预览全流程,可直接在已配置Git和Maven的Linux服务器上运行:

完整Bash脚本代码

#!/bin/bash

# -------------------------- 配置参数 --------------------------
GIT_REPO_URL="你的Git仓库地址"
CODE_DIR="./test-project"
TEST_REPORT_DIR="./test-reports"
TEAMS_WEBHOOK_URL="你的Microsoft Teams频道Webhook URL"
EXTENT_REPORT_PATH="${CODE_DIR}/target/surefire-reports/extent.html"
SCREENSHOT_SOURCE_DIR="${CODE_DIR}/target/screenshots"
# -------------------------------------------------------------

# 1. Git克隆/拉取最新代码
echo "=== 开始处理代码仓库 ==="
if [ -d "${CODE_DIR}" ]; then
    echo "仓库目录已存在,拉取最新代码..."
    cd "${CODE_DIR}" && git pull origin main || { echo "Git拉取失败"; exit 1; }
    cd ..
else
    echo "克隆代码仓库..."
    git clone "${GIT_REPO_URL}" "${CODE_DIR}" || { echo "Git克隆失败"; exit 1; }
fi

# 2. 执行Maven测试命令
echo "=== 开始执行Maven测试 ==="
cd "${CODE_DIR}"
mvn clean test -Djdk.tls.client.protocols=TLSv1.2 || { echo "Maven测试执行失败"; exit 1; }
cd ..

# 3. 整理测试报告及截图
echo "=== 开始整理测试报告 ==="
mkdir -p "${TEST_REPORT_DIR}"

# 复制Extent报告
if [ -f "${EXTENT_REPORT_PATH}" ]; then
    cp "${EXTENT_REPORT_PATH}" "${TEST_REPORT_DIR}/"
    echo "Extent报告已复制到${TEST_REPORT_DIR}"
else
    echo "警告:未找到Extent报告文件"
fi

# 复制截图
if [ -d "${SCREENSHOT_SOURCE_DIR}" ]; then
    cp -r "${SCREENSHOT_SOURCE_DIR}" "${TEST_REPORT_DIR}/"
    echo "测试截图已复制到${TEST_REPORT_DIR}"
else
    echo "警告:未找到截图目录"
fi

# 4. 推送测试结果到Microsoft Teams
echo "=== 推送结果到Teams频道 ==="
# 根据Maven执行状态判断测试结果
TEST_STATUS="成功"
if [ $? -ne 0 ]; then
    TEST_STATUS="失败"
fi

# 构造Teams消息卡片
TEAMS_PAYLOAD=$(cat <<EOF
{
    "@type": "MessageCard",
    "@context": "http://schema.org/extensions",
    "summary": "自动化测试结果通知",
    "themeColor": "$([ "${TEST_STATUS}" = "成功" ] && echo "0078D7" || echo "FF0000")",
    "sections": [
        {
            "activityTitle": "自动化测试${TEST_STATUS}",
            "activitySubtitle": "项目: $(basename ${GIT_REPO_URL})",
            "facts": [
                {
                    "name": "测试状态",
                    "value": "${TEST_STATUS}"
                },
                {
                    "name": "报告存储路径",
                    "value": "${TEST_REPORT_DIR}"
                }
            ],
            "text": "测试执行完成,详细报告请查看本地目录"
        }
    ]
}
EOF
)

# 发送Teams请求
curl -H "Content-Type: application/json" -d "${TEAMS_PAYLOAD}" "${TEAMS_WEBHOOK_URL}" || echo "Teams推送失败"

# 5. 本地浏览器打开测试报告
echo "=== 打开测试报告 ==="
FINAL_REPORT_PATH="${TEST_REPORT_DIR}/extent.html"
if [ -f "${FINAL_REPORT_PATH}" ]; then
    # Linux默认使用xdg-open,macOS替换为open,Windows替换为start
    xdg-open "${FINAL_REPORT_PATH}" || echo "无法打开浏览器查看报告"
else
    echo "无法打开报告:文件不存在"
fi

echo "=== 所有步骤执行完成 ==="

关键模块说明

  • 代码仓库管理:自动判断本地是否已有代码目录,存在则拉取最新分支代码,不存在则直接克隆,避免重复操作。
  • Maven测试执行:严格执行指定的Maven命令,命令失败时立即终止脚本,防止后续无效流程。
  • 报告整理:自动创建目标报告目录,复制Extent报告和测试截图,同时加入文件/目录存在性检查,避免因缺失文件导致脚本报错。
  • Teams消息推送:根据测试结果生成带主题色的消息卡片(成功为蓝色,失败为红色),通过curl发送到Teams频道;如果需要更详细的测试统计(如用例通过率、失败数),可解析Extent报告的HTML或JSON内容提取数据。
  • 本地报告预览:使用Linux系统默认的xdg-open命令打开报告,其他系统可替换为对应命令(macOS用open,Windows用start)。

注意事项

  • 确保服务器已安装git、mvn、curl、xdg-utils(用于打开浏览器)等依赖工具,缺失可通过apt/yum安装。
  • 替换脚本顶部的配置参数为实际值:Git仓库地址、Teams Webhook URL、报告/截图路径等。
  • Git仓库若需认证,建议提前配置SSH密钥;若用HTTPS方式,可在克隆时输入账号密码,或配置Git凭据缓存。
  • 若Maven测试需指定JDK版本,可在脚本开头添加export JAVA_HOME=/path/to/jdk指定环境变量。
  • Teams Webhook URL需在对应频道创建:右键频道 > 连接到服务 > 搜索"Incoming Webhook" > 添加并复制生成的URL。

内容的提问来源于stack exchange,提问作者wheelerlc64

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:53:21