更新配置
Showing
1 changed file
with
7 additions
and
38 deletions
| 1 | pipeline { | 1 | pipeline { |
| 2 | agent any | 2 | agent any |
| 3 | 3 | ||
| 4 | parameters { | ||
| 5 | choice( | ||
| 6 | name: 'DEPLOY_ENV', | ||
| 7 | choices: ['test', 'uat', 'prod'], | ||
| 8 | description: '选择部署环境' | ||
| 9 | ) | ||
| 10 | } | ||
| 11 | |||
| 12 | triggers { | 4 | triggers { |
| 13 | cron('0 10 * * *') | 5 | cron('0 10 * * *') |
| 14 | } | 6 | } |
| ... | @@ -16,7 +8,10 @@ pipeline { | ... | @@ -16,7 +8,10 @@ pipeline { |
| 16 | environment { | 8 | environment { |
| 17 | PYTHON_VERSION = '3.8' | 9 | PYTHON_VERSION = '3.8' |
| 18 | PROJECT_NAME = 'api_test' | 10 | PROJECT_NAME = 'api_test' |
| 19 | DEPLOY_ENV = "${params.DEPLOY_ENV ?: 'test'}" | 11 | // 根据 Jenkins Job 名称自动识别环境 |
| 12 | // Job 名称格式: APITEST-test / APITEST-uat / APITEST-prod | ||
| 13 | // 提取最后一个 "-" 后面的部分作为环境名 | ||
| 14 | DEPLOY_ENV = "${env.JOB_NAME.split('-').last()}" | ||
| 20 | IP_HOST_TEST = 'ai-test.hikoon.com' | 15 | IP_HOST_TEST = 'ai-test.hikoon.com' |
| 21 | IP_HOST_UAT = 'ai-uat.hikoon.com' | 16 | IP_HOST_UAT = 'ai-uat.hikoon.com' |
| 22 | IP_HOST_PROD = 'api.hikoon.com' | 17 | IP_HOST_PROD = 'api.hikoon.com' |
| ... | @@ -50,15 +45,14 @@ pipeline { | ... | @@ -50,15 +45,14 @@ pipeline { |
| 50 | steps { | 45 | steps { |
| 51 | echo "开始执行API自动化测试 (环境: ${DEPLOY_ENV})..." | 46 | echo "开始执行API自动化测试 (环境: ${DEPLOY_ENV})..." |
| 52 | script { | 47 | script { |
| 53 | def ipHost = 'ai-test.hikoon.com' | 48 | def ipHost = env.IP_HOST_TEST |
| 54 | if (env.DEPLOY_ENV == 'uat') { | 49 | if (env.DEPLOY_ENV == 'uat') { |
| 55 | ipHost = env.IP_HOST_UAT | 50 | ipHost = env.IP_HOST_UAT |
| 56 | } else if (env.DEPLOY_ENV == 'prod') { | 51 | } else if (env.DEPLOY_ENV == 'prod') { |
| 57 | ipHost = env.IP_HOST_PROD | 52 | ipHost = env.IP_HOST_PROD |
| 58 | } else { | ||
| 59 | ipHost = env.IP_HOST_TEST | ||
| 60 | } | 53 | } |
| 61 | env.IP_HOST = ipHost | 54 | env.IP_HOST = ipHost |
| 55 | echo "IP_HOST: ${env.IP_HOST}" | ||
| 62 | } | 56 | } |
| 63 | sh ''' | 57 | sh ''' |
| 64 | . venv/bin/activate | 58 | . venv/bin/activate |
| ... | @@ -102,31 +96,7 @@ pipeline { | ... | @@ -102,31 +96,7 @@ pipeline { |
| 102 | allowEmptyArchive: true, | 96 | allowEmptyArchive: true, |
| 103 | fingerprint: true | 97 | fingerprint: true |
| 104 | 98 | ||
| 105 | // 发布 HTML 报告到 Jenkins | 99 | echo "报告已归档到 Jenkins Artifacts" |
| 106 | script { | ||
| 107 | def reportDir = "reports/${env.DEPLOY_ENV}" | ||
| 108 | sh "ls -la ${reportDir} 2>/dev/null || echo 'Directory not found'" | ||
| 109 | |||
| 110 | def htmlFile = sh( | ||
| 111 | script: "find ${reportDir} -maxdepth 1 -name '*.html' -type f 2>/dev/null | sort -r | head -1 | xargs basename", | ||
| 112 | returnStdout: true | ||
| 113 | ).trim() | ||
| 114 | |||
| 115 | if (htmlFile) { | ||
| 116 | echo "找到HTML报告: ${htmlFile}" | ||
| 117 | publishHTML([ | ||
| 118 | reportDir: reportDir, | ||
| 119 | reportFiles: htmlFile, | ||
| 120 | reportName: "Test Report [${env.DEPLOY_ENV}]", | ||
| 121 | keepAll: true, | ||
| 122 | alwaysLinkToLastBuild: true, | ||
| 123 | allowMissing: false | ||
| 124 | ]) | ||
| 125 | echo "HTML报告已发布到Jenkins" | ||
| 126 | } else { | ||
| 127 | echo "警告: 未找到HTML报告文件 (路径: ${reportDir})" | ||
| 128 | } | ||
| 129 | } | ||
| 130 | } | 100 | } |
| 131 | 101 | ||
| 132 | success { | 102 | success { |
| ... | @@ -138,4 +108,3 @@ pipeline { | ... | @@ -138,4 +108,3 @@ pipeline { |
| 138 | } | 108 | } |
| 139 | } | 109 | } |
| 140 | } | 110 | } |
| 141 | ... | ... |
-
Please register or sign in to post a comment