如何为含plan={}段的Jenkins独立管道配置每日夜间定时构建
实现Jenkins流水线每日午夜自动触发的配置方法
要让你的测试流水线每日午夜自动运行,只需在Jenkinsfile的顶层配置区域添加定时构建触发器(cron)即可,具体操作如下:
配置位置与代码修改
将triggers配置块放在MyPipeline的顶层属性中,与artefactType、shouldNotifySlackOnAnyBuildStatus等配置同级,示例代码如下:
MyPipeline { artefactType = "dockerTool" shouldNotifySlackOnAnyBuildStatus = true isDockerBuild = true slackChannelName = "****-api-test-notifications-channel" // 添加定时触发配置 triggers { cron('0 0 * * *') // 每日午夜(0点0分)触发构建 } plan = { stage('Build tests') { sh "docker build --network=host --build-arg CACHE_BUST=\$(date +%s) -t ${DOCKER_IMAGE} ." } stage('Run tests') { withCredentials([string(credentialsId: '**-api-test-framework-client-secret', variable: 'CLIENT_SECRET'), string(credentialsId: '**-api-test-framework-client-id', variable: 'CLIENT_ID')]) { script { sh 'docker run --network=host --name $DOCKER_IMAGE -e "clientSecret=$CLIENT_SECRET" -e "clientID=$CLIENT_ID" -e "suiteFile=testng.xml" -e "testplan=testng.xml" -e "env=qa" $DOCKER_IMAGE' } } } } finallyCallback = { stage('Publish Report') { ............ } }
关键说明
- cron表达式含义:
0 0 * * *对应每天的0时0分执行构建,完全匹配午夜需求。如果需要调整时区(比如Jenkins服务器时区与本地不一致),可以在表达式前添加时区标识,例如:TZ=Asia/Shanghai 0 0 * * * - 配置位置:必须将
triggers放在MyPipeline的顶层,不能嵌套在plan或其他块内,否则Jenkins无法识别定时触发规则 - 生效条件:确保Jenkins实例已开启定时任务功能,且流水线所在项目拥有触发构建的权限
内容的提问来源于stack exchange,提问作者user2451016
相关产品推荐
相关产品推荐

