Linux下Jenkins任务调度的主要方法
这是最基础的执行方式,无需配置调度规则。登录Jenkins管理界面,进入目标任务页面,点击顶部导航栏的**“立即构建”**按钮即可手动启动任务。适用于临时测试或调试场景。
Jenkins提供了**“构建周期性”(Build periodically)触发器,通过Cron表达式**定义任务的执行时间。操作步骤如下:
分钟 小时 日期 月份 星期几,特殊字符含义:*表示任意值,*/n表示每n个单位,,分隔多个值,-表示范围)。0 10 * * *:每天上午10点执行;*/5 * * * *:每5分钟执行一次;H 18 * * 1-5:每周一至周五下午6点执行(H表示随机分钟,避免并发冲突)。借助Jenkins Remote Access API,可通过外部脚本或工具(如Shell、Python)触发任务。常用命令示例:
curl -X POST http://<JENKINS_HOST>:<JENKINS_PORT>/job/<JOB_NAME>/build \
--user <USERNAME>:<API_TOKEN> \
--data-urlencode json='{"parameter": [{"name":"delay", "value":"300sec"}]}' # 可选:添加参数
说明:
<JENKINS_HOST>、<JOB_NAME>为实际值;<API_TOKEN>需在Jenkins用户配置页面生成;--data-urlencode传递参数(如delay用于延迟构建)。Pipeline是Jenkins的代码化持续集成工具,可通过triggers块直接嵌入定时规则。示例如下:
pipeline {
agent any // 指定执行节点(any表示任意可用节点)
triggers {
cron('H 9 * * *') // 每天上午9点执行
}
stages {
stage('Build') {
steps {
echo 'Building application...'
sh 'mvn clean package' // 示例:执行Maven构建
}
}
stage('Test') {
steps {
echo 'Running tests...'
sh 'mvn test'
}
}
}
}
优势:将调度逻辑与构建流程整合,支持复杂场景(如条件分支、多阶段执行),且代码可版本控制。
若Jenkins运行在Kubernetes集群中,可通过Kubernetes插件动态创建Pod执行任务,提升资源利用率和扩展性。配置步骤:
pipeline {
agent {
kubernetes {
label 'jenkins-agent' // Pod标签
yaml """
apiVersion: v1
kind: Pod
metadata:
labels:
app: jenkins-agent
spec:
containers:
- name: maven
image: maven:3.8.6-openjdk-11
command: ["cat"]
tty: true
"""
}
}
stages {
stage('Build in Kubernetes') {
steps {
container('maven') {
sh 'mvn -v' # 在Kubernetes Pod中执行命令
}
}
}
}
}
适用场景:需要弹性伸缩、隔离环境的分布式构建任务。
通过Linux系统的crontab命令,可直接调度Jenkins任务脚本(如Shell脚本),适用于需要与系统其他任务集成的场景。操作步骤:
crontab -e;0 3 * * * /usr/bin/curl -X POST http://<JENKINS_HOST>:<JENKINS_PORT>/job/<JOB_NAME>/build
crontab -l查看当前用户的Cron任务列表。