镜像定义文件: ssoor/cypress:yk-test
FROM ubuntu:latest
RUN sed -i s@/archive.ubuntu.com/@/mirrors.tuna.tsinghua.edu.cn/@g /etc/apt/sources.list
RUN apt-get update &&
DEBIAN_FRONTEND=noninteractive apt-get install -y curl &&
apt-get clean all && rm -rf /var/lib/apt/listsmaster']], extensions: [], userRemoteConfigs: [[credentialsId: '02007fe4-2bff-4989-98a1-1503397b03ea', url: 'https://github.com/ssoor/allure-report.git']]])
dir("${CI_PROJECT_PATH}") {
echo "Install cypress dependency"
sh """
yarn install --production
"""
echo "Generate cypress results"
sh """
rm -rf "results/allure"
npx cypress run -s cypress/integration/judge.spec.js
"""
}
withCredentials([gitUsernamePassword(credentialsId: '02007fe4-2bff-4989-98a1-1503397b03ea', gitToolName: 'Default')]) {
sh 'git checkout origin/master'
}
dir("${CI_PROJECT_PATH}") {
echo "Generate allure-report results from cypress"
sh """
mkdir -p "reports/allure/history"
cp -r "reports/allure/history" "results/allure"
allure generate "results/allure" -o "results/allure-report" --clean
"""
}
}
}
stage("保存测试报告"){
agent {
docker { image 'ssoor:gitlab-runner' }
}
steps{
dir("${CI_PROJECT_PATH}") {
// Jenkins 如果设置 Jenkinsfile 通过 GIT 仓库拉取
// 则每个 stage 都会触发 fetch 操作导致之前 stage 对仓库已有文件的修改丢失
// 所以在这里才真正修改仓库已有文件
echo "Save allure-report to git reports"
sh """
rm -rf "reports/allure"
mv "results/allure-report" "reports/allure"
"""
echo "Commit allure-report to gitlab"
withCredentials([gitUsernamePassword(credentialsId: '02007fe4-2bff-4989-98a1-1503397b03ea', gitToolName: 'Default')]) {
sh """
git config --global user.name "gitlab-ci"
git config --global user.email "gitlab-ci@mail.com"
"""
sh """
git add .
git commit -m "Gitlab generate by ${BUILD_ID}"
git fetch origin master
git rebase origin/master
git push -u origin HEAD:master
"""
}
}
}
}
stage("发送测试结果通知"){
agent {
docker { image 'ssoor:gitlab-runner' }
}
environment {
QYWX_ROBOT_URL = "${QYWX_ROBOT_URL}"
CI_PROJECT_PATH = "${CI_PROJECT_PATH}"
CI_COMMIT_BRANCH = "${CI_COMMIT_BRANCH}"
}
steps{
dir("${CI_PROJECT_PATH}") {
echo "Send test repost to QYWX"
sh '''
RESULT_ALL=`cat reports/allure/history/history-trend.json | jq .[0].data`
RESULT_TOTAL=`echo $RESULT_ALL | jq .total`
RESULT_PASSED=`echo $RESULT_ALL | jq .passed`
RESULT_FAILED=`echo $RESULT_ALL | jq .failed`
RESULT_SKIPPED=`echo $RESULT_ALL | jq .skipped`
cat | bash << EOF
curl --location --request POST '${QYWX_ROBOT_URL}'
--header 'Content-Type: application/json'
--data-raw '{
"msgtype": "markdown",
"markdown": {
"content": "# 仓库:*[${CI_PROJECT_PATH}](https://github.com/${CI_PROJECT_PATH})*\n\n\n\n本次执行用例 ${RESULT_TOTAL} 例,执行分支:**${CI_COMMIT_BRANCH}**\n> 成功:${RESULT_PASSED}例\n> 失败:${RESULT_FAILED}例\n> 跳过:${RESULT_SKIPPED}例\n\n点击查看详情:[Allure-report](http://10.9.40.75:4480/${CI_PROJECT_PATH})"
}
}'
'''
}
}
}
}
}



