Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
test
autotest-playwright-web-spd
Commits
b753d42b
Commit
b753d42b
authored
Sep 16, 2026
by
liguangyu06
Browse files
将测试报告默认收件人写入仓库名单,Jenkins 发信时自动带上。
parent
e6617b87
Changes
5
Hide whitespace changes
Inline
Side-by-side
Jenkinsfile
View file @
b753d42b
def
splitEmailAddrs
(
String
raw
)
{
return
(
raw
?:
''
)
.
split
(
/[,;\s]+/
)
.
collect
{
it
.
trim
()
}
.
findAll
{
it
.
contains
(
'@'
)
}
}
def
loadDefaultReportRecipients
()
{
def
path
=
'config/report-email-recipients.txt'
if
(!
fileExists
(
path
))
{
return
[]
}
return
readFile
(
encoding:
'UTF-8'
,
file:
path
)
.
split
(
'\n'
)
.
collect
{
it
.
trim
()
}
.
findAll
{
it
&&
!
it
.
startsWith
(
'#'
)
&&
it
.
contains
(
'@'
)
}
}
def
mergeEmailAddrs
(
List
parts
)
{
def
seen
=
[]
def
all
=
[]
parts
.
flatten
().
findAll
{
it
}.
each
{
addr
->
def
key
=
addr
.
toLowerCase
()
if
(!
seen
.
contains
(
key
))
{
seen
.
add
(
key
)
all
.
add
(
addr
)
}
}
return
all
}
def
sendReportEmail
()
{
def
sendReportEmail
()
{
def
t
o
=
(
params
.
REPORT_EMAIL_TO
?:
''
).
trim
()
def
extraT
o
=
(
params
.
REPORT_EMAIL_TO
?:
''
).
trim
()
if
(!
t
o
)
{
if
(!
extraT
o
)
{
t
o
=
(
env
.
REPORT_EMAIL_TO
?:
''
).
trim
()
extraT
o
=
(
env
.
REPORT_EMAIL_TO
?:
''
).
trim
()
}
}
def
cc
=
(
params
.
REPORT_EMAIL_CC
?:
''
).
trim
()
def
cc
=
(
params
.
REPORT_EMAIL_CC
?:
''
).
trim
()
if
(!
cc
)
{
if
(!
cc
)
{
cc
=
(
env
.
REPORT_EMAIL_CC
?:
''
).
trim
()
cc
=
(
env
.
REPORT_EMAIL_CC
?:
''
).
trim
()
}
}
if
(!
to
)
{
def
recipients
=
mergeEmailAddrs
([
echo
'未配置 REPORT_EMAIL_TO,跳过邮件。在任务参数或环境变量里填写收件人(逗号分隔)。'
loadDefaultReportRecipients
(),
splitEmailAddrs
(
extraTo
),
splitEmailAddrs
(
cc
),
])
if
(!
recipients
)
{
echo
'未配置收件人,跳过邮件。默认名单见 config/report-email-recipients.txt,也可填任务参数 REPORT_EMAIL_TO。'
return
return
}
}
def
to
=
recipients
.
join
(
','
)
def
subject
=
fileExists
(
'reports/latest/email-subject.txt'
)
def
subject
=
fileExists
(
'reports/latest/email-subject.txt'
)
?
readFile
(
encoding:
'UTF-8'
,
file:
'reports/latest/email-subject.txt'
).
trim
()
?
readFile
(
encoding:
'UTF-8'
,
file:
'reports/latest/email-subject.txt'
).
trim
()
:
"【SPD UI自动化】${params.SUITE} ${currentBuild.currentResult} #${env.BUILD_NUMBER}"
:
"【SPD UI自动化】${params.SUITE} ${currentBuild.currentResult} #${env.BUILD_NUMBER}"
...
@@ -20,9 +57,6 @@ def sendReportEmail() {
...
@@ -20,9 +57,6 @@ def sendReportEmail() {
<p>测试范围:${params.SUITE}</p>
<p>测试范围:${params.SUITE}</p>
<p>Playwright 报告:<a href='${env.BUILD_URL}Playwright_20Report/'>打开 Playwright 报告</a></p>
<p>Playwright 报告:<a href='${env.BUILD_URL}Playwright_20Report/'>打开 Playwright 报告</a></p>
<p>Allure 报告:<a href='${env.BUILD_URL}allure'>打开 Allure 报告</a></p>"""
<p>Allure 报告:<a href='${env.BUILD_URL}allure'>打开 Allure 报告</a></p>"""
if
(
cc
)
{
to
=
[
to
,
cc
].
findAll
{
it
}.
join
(
','
)
}
if
(!
fileExists
(
'reports/latest/email-summary.html'
))
{
if
(!
fileExists
(
'reports/latest/email-summary.html'
))
{
writeFile
encoding:
'UTF-8'
,
file:
'reports/latest/email-summary.html'
,
text:
body
writeFile
encoding:
'UTF-8'
,
file:
'reports/latest/email-summary.html'
,
text:
body
}
}
...
@@ -87,8 +121,8 @@ pipeline {
...
@@ -87,8 +121,8 @@ pipeline {
booleanParam
(
name:
'RUN_FULL'
,
defaultValue:
false
,
description:
'包含 @full 全列排序(耗时长)'
)
booleanParam
(
name:
'RUN_FULL'
,
defaultValue:
false
,
description:
'包含 @full 全列排序(耗时长)'
)
string
(
string
(
name:
'REPORT_EMAIL_TO'
,
name:
'REPORT_EMAIL_TO'
,
defaultValue:
'
liguangyu@sinopharm.com
'
,
defaultValue:
''
,
description:
'
测试报告收件人(同事邮箱,多个用英文逗号)。留空则读任务环境变量 REPORT_EMAIL_TO;都空则不发信
'
description:
'
追加收件人(逗号分隔,可选)。默认名单在 config/report-email-recipients.txt,构建时自动带上
'
)
)
string
(
name:
'REPORT_EMAIL_CC'
,
defaultValue:
''
,
description:
'抄送,逗号分隔,可选'
)
string
(
name:
'REPORT_EMAIL_CC'
,
defaultValue:
''
,
description:
'抄送,逗号分隔,可选'
)
}
}
...
...
README.md
View file @
b753d42b
...
@@ -34,7 +34,7 @@ Chromium 缓存在项目内 `.playwright-browsers/`(已 gitignore),与 `@p
...
@@ -34,7 +34,7 @@ Chromium 缓存在项目内 `.playwright-browsers/`(已 gitignore),与 `@p
并行默认按
**文件**
(
`PW_WORKERS`
)。不要开
`PW_FULLY_PARALLEL=1`
:本仓库大量同页 serial,拆开后同一账号会互踩。总浏览器约
`SHARDS × WORKERS`
,单机建议不超过 6。详见
[
docs/jenkins.md
](
docs/jenkins.md
)
。
并行默认按
**文件**
(
`PW_WORKERS`
)。不要开
`PW_FULLY_PARALLEL=1`
:本仓库大量同页 serial,拆开后同一账号会互踩。总浏览器约
`SHARDS × WORKERS`
,单机建议不超过 6。详见
[
docs/jenkins.md
](
docs/jenkins.md
)
。
产物在
`reports/latest/`
:Playwright HTML、
`junit.xml`
、Allure results、
`summary.json`
。定时跑完会发
**HTML 摘要邮件**
(测试范围、执行数、成功/失败、通过率、报告链接),不要把完整报告当附件。收件人
配
`
REPORT_EMAIL_TO
`
,SMTP 与任务拆分见
[
docs/jenkins.md
](
docs/jenkins.md
)
。
产物在
`reports/latest/`
:Playwright HTML、
`junit.xml`
、Allure results、
`summary.json`
。定时跑完会发
**HTML 摘要邮件**
(测试范围、执行数、成功/失败、通过率、报告链接),不要把完整报告当附件。
默认
收件人
在
`
config/report-email-recipients.txt
`
,SMTP 与任务拆分见
[
docs/jenkins.md
](
docs/jenkins.md
)
。
Jenkins:仓库根目录
`Jenkinsfile`
。逐步配置见
[
docs/Jenkins配置指南.md
](
docs/Jenkins配置指南.md
)
,套件与并行约定见
[
docs/jenkins.md
](
docs/jenkins.md
)
。凭据 ID 默认
`spd-ui-test-account`
。
Jenkins:仓库根目录
`Jenkinsfile`
。逐步配置见
[
docs/Jenkins配置指南.md
](
docs/Jenkins配置指南.md
)
,套件与并行约定见
[
docs/jenkins.md
](
docs/jenkins.md
)
。凭据 ID 默认
`spd-ui-test-account`
。
...
...
config/report-email-recipients.txt
0 → 100644
View file @
b753d42b
# SPD UI 自动化测试报告默认收件人(一行一个,# 开头为注释)
liguangyu@sinopharm.com
xubin11@sinopharm.com
zhouwenjie@sinopharm.com
wangjianmin7@sinopharm.com
wangyufen6@sinopharm.com
jiangshuaijun@sinopharm.com
xiaofeng@sinopharm.com
sujie6@sinopharm.com
18910520617@163.com
972876648@qq.com
535495248@qq.com
jjyin2@126.com
2672152029@qq.com
qizhenjun1@sinopharm.com
guangfeihong@sinopharm.com
xiawenfang@sinopharm.com
liqiuling5@sinopharm.com
zhanghanlong@sinopharm.com
lankeyuyang@sinopharm.com
lvxiaoming1@sinopharm.com
qiaoyi3@sinopharm.com
yangpei10@sinopharm.com
docs/Jenkins配置指南.md
View file @
b753d42b
...
@@ -125,14 +125,9 @@ git --version
...
@@ -125,14 +125,9 @@ git --version
打开任务
`spd-ui-smoke`
→ 左边
**Configure**
。
打开任务
`spd-ui-smoke`
→ 左边
**Configure**
。
**办法 A(推荐)**
**办法 A(推荐)**
勾选
**This project is parameterized**
,找到参数
**REPORT_EMAIL_TO**
,填:
默认收件人已写在仓库
`config/report-email-recipients.txt`
,拉代码后发信会自动带上,不必在每个任务里再贴一遍。
```
text
若还要临时多加几个人:勾选
**This project is parameterized**
,找到参数
**REPORT_EMAIL_TO**
,填追加邮箱(英文逗号分隔,不要用中文逗号)。抄送填
**REPORT_EMAIL_CC**
(可空)。
zhangsan@公司.com,lisi@公司.com
```
多个同事用
**英文逗号**
分隔,不要用中文逗号。
抄送填
**REPORT_EMAIL_CC**
(可空)。
**办法 B**
**办法 B**
同一配置页找到
**Build Environment**
或最下面环境变量,增加:
同一配置页找到
**Build Environment**
或最下面环境变量,增加:
...
@@ -151,7 +146,7 @@ nightly、full 两个任务同样填一份邮箱。
...
@@ -151,7 +146,7 @@ nightly、full 两个任务同样填一份邮箱。
-
**Console Output**
里应有:
`已发送报告邮件至 ...`
-
**Console Output**
里应有:
`已发送报告邮件至 ...`
-
同事邮箱主题类似:
`【SPD UI自动化】smoke 通过 12/12 #3`
-
同事邮箱主题类似:
`【SPD UI自动化】smoke 通过 12/12 #3`
若日志写「未配置
REPORT_EMAIL_TO,跳过邮件」:第 5.3 步没填上或没保存
。
若日志写「未配置
收件人,跳过邮件」:确认仓库里有
`config/report-email-recipients.txt`
,或任务参数里填了追加邮箱
。
---
---
...
@@ -163,7 +158,7 @@ nightly、full 两个任务同样填一份邮箱。
...
@@ -163,7 +158,7 @@ nightly、full 两个任务同样填一份邮箱。
| git 不是内部命令 | 没装 Git |
| git 不是内部命令 | 没装 Git |
| Authentication failed | GitLab 凭据错了 |
| Authentication failed | GitLab 凭据错了 |
| spd-ui-test-account not found | 第二个凭据 ID 写错了 |
| spd-ui-test-account not found | 第二个凭据 ID 写错了 |
| 未配置
REPORT_EMAIL_TO,跳过邮件 | 任务参数 REPORT_EMAIL_TO 没填同事邮箱
|
| 未配置
收件人,跳过邮件 | 仓库里没有
`config/report-email-recipients.txt`
,参数也没填
|
| 邮件发送失败 / Email Extension | 没装插件,或系统配置里 SMTP 不通 |
| 邮件发送失败 / Email Extension | 没装插件,或系统配置里 SMTP 不通 |
不要在「自由风格 → Execute Windows batch command」里贴命令。那种方式和仓库
`Jenkinsfile`
不是同一条路。
不要在「自由风格 → Execute Windows batch command」里贴命令。那种方式和仓库
`Jenkinsfile`
不是同一条路。
docs/jenkins.md
View file @
b753d42b
...
@@ -124,13 +124,15 @@ Default user e-mail suffix: @公司域名
...
@@ -124,13 +124,15 @@ Default user e-mail suffix: @公司域名
### 2. 收件人
### 2. 收件人
任选其一(参数优先):
默认名单在仓库
`config/report-email-recipients.txt`
(一行一个邮箱),Jenkins 发信时自动带上,改名单只需改这个文件并推送。
-
任务参数
`REPORT_EMAIL_TO`
:
`leader@公司.com, qa-all@公司.com`
还可追加:
-
或任务环境变量
`REPORT_EMAIL_TO`
(多人共用同一 Job 时更合适)
-
任务参数
`REPORT_EMAIL_TO`
:临时多加的同事邮箱,逗号分隔
-
或任务环境变量
`REPORT_EMAIL_TO`
-
抄送:
`REPORT_EMAIL_CC`
-
抄送:
`REPORT_EMAIL_CC`
都为空则
**不发信**
(避免本地/调试构建刷爆邮箱)
。
`post`
里失败不会把构建标红,日志会写「跳过邮件」或 SMTP 错误。
文件、参数、抄送都会去重合并。全都空则
**不发信**
。
`post`
里失败不会把构建标红,日志会写「跳过邮件」或 SMTP 错误。
### 3. 领导看到什么
### 3. 领导看到什么
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment