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
cb9366ce
Commit
cb9366ce
authored
Oct 24, 2026
by
liguangyu06
Browse files
日常验证 Jenkins 任务禁用邮件通知
spd-ui-verify 仅保留 Playwright 报告,不再生成摘要或 SMTP 发信。
parent
60bb5e32
Changes
2
Hide whitespace changes
Inline
Side-by-side
Jenkinsfile.verify
View file @
cb9366ce
// 日常验证专用流水线:默认 smoke,超时 2 小时,不设定时;与夜间 SPD/full 任务分离。
// 日常验证专用流水线:默认 smoke,超时 2 小时,不设定时
、不发邮件
;与夜间 SPD/full 任务分离。
// Jenkins 任务 Script Path 填 Jenkinsfile.verify
// Jenkins 任务 Script Path 填 Jenkinsfile.verify
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 extraTo = (params.REPORT_EMAIL_TO ?: '').trim()
if (!extraTo) {
extraTo = (env.REPORT_EMAIL_TO ?: '').trim()
}
def cc = (params.REPORT_EMAIL_CC ?: '').trim()
if (!cc) {
cc = (env.REPORT_EMAIL_CC ?: '').trim()
}
def recipients = mergeEmailAddrs([
loadDefaultReportRecipients(),
splitEmailAddrs(extraTo),
splitEmailAddrs(cc),
])
if (!recipients) {
echo '未配置收件人,跳过邮件(日常验证任务通常不必发信)。'
return
}
def to = recipients.join(',')
def subject = fileExists('reports/latest/email-subject.txt')
? readFile(encoding: 'UTF-8', file: 'reports/latest/email-subject.txt').trim()
: "【SPD UI自动化·验证】${params.SUITE} ${currentBuild.currentResult} #${env.BUILD_NUMBER}"
def body = fileExists('reports/latest/email-summary.html')
? readFile(encoding: 'UTF-8', file: 'reports/latest/email-summary.html')
: """<p>构建 ${currentBuild.currentResult},未生成详细摘要。</p>
<p>测试范围:${params.SUITE}</p>
<p>Playwright 报告:<a href='${env.BUILD_URL}Playwright_20Report/'>打开 Playwright 报告</a></p>"""
if (!fileExists('reports/latest/email-summary.html')) {
writeFile encoding: 'UTF-8', file: 'reports/latest/email-summary.html', text: body
}
if (!fileExists('reports/latest/email-subject.txt')) {
writeFile encoding: 'UTF-8', file: 'reports/latest/email-subject.txt', text: subject + '\n'
}
try {
def credId = env.SMTP_CREDENTIALS_ID ?: 'sinopharm-smtp'
withCredentials([
usernamePassword(credentialsId: credId, usernameVariable: 'SMTP_USER', passwordVariable: 'SMTP_PASS')
]) {
withEnv([
"EMAIL_TO=${to}",
'SMTP_HOST=mail.sinopharm.com',
'SMTP_PORT=465',
'SMTP_FROM=liguangyu@sinopharm.com'
]) {
if (isUnix()) {
sh 'python3 scripts/send-ci-email.py'
} else {
bat 'python scripts\\send-ci-email.py'
}
}
}
echo "已发送报告邮件至 ${to}"
} catch (err) {
echo "邮件发送失败:${err}"
}
}
def runCi() {
def runCi() {
if (isUnix()) {
if (isUnix()) {
sh 'node scripts/run-ci.mjs --suite="$SUITE" --shards="$SHARDS"'
sh 'node scripts/run-ci.mjs --suite="$SUITE" --shards="$SHARDS"'
...
@@ -123,8 +35,6 @@ pipeline {
...
@@ -123,8 +35,6 @@ pipeline {
string(name: 'GREP', defaultValue: '', description: '只跑标题匹配的用例,例如 STAT-IES-001 或 @smoke')
string(name: 'GREP', defaultValue: '', description: '只跑标题匹配的用例,例如 STAT-IES-001 或 @smoke')
booleanParam(name: 'ALLURE', defaultValue: false, description: '额外生成 Allure')
booleanParam(name: 'ALLURE', defaultValue: false, description: '额外生成 Allure')
string(name: 'KEEP_ARCHIVES', defaultValue: '0', description: '验证任务建议 0,少占磁盘')
string(name: 'KEEP_ARCHIVES', defaultValue: '0', description: '验证任务建议 0,少占磁盘')
string(name: 'REPORT_EMAIL_TO', defaultValue: '', description: '追加收件人,留空则不发邮件')
string(name: 'REPORT_EMAIL_CC', defaultValue: '', description: '抄送,可选')
}
}
environment {
environment {
...
@@ -255,18 +165,7 @@ pipeline {
...
@@ -255,18 +165,7 @@ pipeline {
} catch (err) {
} catch (err) {
echo "跳过 HTML 报告:${err}"
echo "跳过 HTML 报告:${err}"
}
}
try {
echo 'spd-ui-verify:不发邮件,请在本构建页查看 Playwright Report。'
withEnv(["BUILD_RESULT=${currentBuild.currentResult}"]) {
if (isUnix()) {
sh 'node scripts/ci-email-summary.mjs || true'
} else {
bat returnStatus: true, script: 'node scripts\\ci-email-summary.mjs'
}
}
sendReportEmail()
} catch (err) {
echo "跳过邮件:${err}"
}
}
}
}
}
}
}
...
...
docs/jenkins-job-spd-ui-verify.md
View file @
cb9366ce
# Jenkins 任务:spd-ui-verify(平时验证脚本)
# Jenkins 任务:spd-ui-verify(平时验证脚本)
用于
**手工触发**
的冒烟/单模块验证,与夜间
`SPD`
(full/nightly)分离。
用于
**手工触发**
的冒烟/单模块验证,与夜间
`SPD`
(full/nightly)分离。
**不要**
给本任务配 Build periodically(定时);需要时再点
**Build with Parameters**
。
**不要**
给本任务配 Build periodically(定时);需要时再点
**Build with Parameters**
。
**不发邮件**
(
`Jenkinsfile.verify`
已去掉邮件步骤;报告只看 Jenkins 里的 Playwright Report)。
## 1. 新建任务(约 3 分钟)
## 1. 新建任务(约 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