导语:jenkins 流水线有个.git比较大的job,还在测试阶段,经常1个多月不部署,导致job里下载的git等被清理。重新下200G 又要一天。打算用定时任务去每周触发一次构建,并且跳过部署阶段。
在 Jenkins 的 pipeline 中,您可以使用 cron
表达式来设置定期构建任务。要在 pipeline 中实现这个功能,您需要在 pipeline 脚本中添加 triggers
属性,并配置 cron
表达式来定时触发构建操作。
以下是一个示例 pipeline 脚本,用于每周一次构建并只执行部分模块:
pipeline {
agent any
triggers {
cron('0 0 * * 1') // 每周一凌晨触发构建操作
}
stages {
stage('拉取代码') {
steps {
git url: 'git@github.com:myorg/myrepo.git'
}
}
stage('构建模块A') {
when {
changeset "path/to/moduleA/**"
}
steps {
sh 'mvn clean install -f path/to/moduleA/pom.xml'
}
}
stage('构建模块B') {
when {
changeset "path/to/moduleB/**"
}
steps {
sh 'mvn clean install -f path/to/moduleB/pom.xml'
}
}
// 其他阶段...
}
}
在这个示例脚本中,我们使用 triggers
属性来设置 cron
表达式,以在每周一次构建操作。我们还使用 when
语句来限制只有指定的模块或路径中的代码更改时才执行对应的构建操作。
希望这个示例能够帮助您实现 pipeline 定期构建的需求。
可以针对每个 Stage 进行定时构建。只需在您想要定时触发的 Stage 中添加 triggers
属性并配置 cron
表达式即可。
以下是一个示例 pipeline 脚本,其中包含两个 Stage,您可以在其中针对其中一个 Stage 进行定期构建:
pipeline {
agent any
stages {
stage('拉取代码') {
steps {
git url: 'git@github.com:myorg/myrepo.git'
}
}
stage('构建模块A') {
triggers {
cron('0 0 * * 1') // 每周一次触发构建操作
}
steps {
sh 'mvn clean install -f path/to/moduleA/pom.xml'
}
}
stage('构建模块B') {
steps {
sh 'mvn clean install -f path/to/moduleB/pom.xml'
}
}
// 其他阶段...
}
}
在这个示例脚本中,我们使用了 triggers
属性来为 构建模块A
这个 Stage 配置定时构建,即每周一次。其他 Stage 并没有配置构建触发器,所以不会受到定时构建的影响。
希望这个示例能够帮助您实现针对 Stage 的定时构建需求。
通过判断构建用户来确认是否是自动触发的
pipeline {
agent {
label "ssd"
}
triggers {
// cron('0 0 * * 1') // 每周一次触发构建操作
cron('*/2 * * * *') // 每周一次触发构建操作
}
stages {
stage('确认发布') {
environment {
CAUSE = "${currentBuild.getBuildCauses()[0].shortDescription}"
}
steps {
echo "Build caused by ${env.CAUSE}"
script{
echo "${env.CAUSE}"
if ( "${env.CAUSE}" == "Started by timer" ){
echo "1"
} else{
echo "2"
}
}
}
}
}
}
其他写法
pipeline {
agent {
label "ssd"
}
triggers {
cron('0 0 * * 1') // 每周一次触发构建操作
// cron('* * * * *') // 每周一次触发构建操作
}
environment {
CAUSE = "${currentBuild.getBuildCauses()[0].shortDescription}"
}
stages {
stage('Example') {
when {
expression { return env.CAUSE == 'Started by timer' }
expression { "1" == "1" }
}
steps {
sh "echo 'This is an example triggered by timer'"
}
}
}
}
参考
https://blog.csdn.net/tiny_du/article/details/120739270