Jenkins在Linux中的任务调度方法
这是Jenkins最常用的任务调度方式,适用于需要周期性执行任务的场景。操作步骤如下:
分钟 小时 日期 月份 星期几(共5个字段),支持特殊字符(如*表示任意值、*/n表示每n单位、,表示多个值)。0 10 * * *:每天上午10点执行;H/15 * * * *:每隔15分钟执行一次(H表示随机分钟,避免任务同时启动);0 4 * * 1-5:每周一至周五凌晨4点执行。若项目采用Pipeline as Code模式,可直接在Pipeline脚本中通过triggers块配置定时任务。这种方式将调度逻辑与代码绑定,适合版本控制。示例如下:
pipeline {
agent any
triggers {
cron('H 10 * * 1-5') // 每周一到周五上午10点执行(H表示随机分钟)
}
stages {
stage('Build') {
steps {
echo 'Building the project...'
}
}
}
}
注意:Pipeline脚本需保存为Jenkinsfile并提交至代码仓库,或在Jenkins中直接创建Pipeline任务并粘贴脚本。
若需要在Linux系统层面统一管理Jenkins任务(而非通过Jenkins界面),可通过编辑crontab文件实现。步骤如下:
crontab -e(当前用户)或sudo crontab -e(root用户)编辑Cron表;curl或wget命令触发Jenkins任务的构建接口。示例如下:0 2 * * * /usr/bin/curl -X POST http://jenkins-server:8080/job/my-job/build --user username:api_token
说明:
0 2 * * *:每天凌晨2点执行;/usr/bin/curl:调用curl命令(需确保路径正确);--user username:api_token:替换为Jenkins用户名和API Token(用于身份验证,避免密码泄露);http://jenkins-server:8080/job/my-job/build:替换为目标Jenkins任务的完整URL。借助Jenkins Remote Access API,可实现远程触发任务(如从其他系统或脚本调用)。示例如下:
curl命令发送POST请求触发任务(需替换JENKINS_HOST、JOB_NAME、USER和PASSWORD):curl -X POST http://JENKINS_HOST:8080/job/JOB_NAME/build --user USER:PASSWORD
json参数传递(如延迟300秒执行):curl -X POST http://JENKINS_HOST:8080/job/JOB_NAME/build --user USER:PASSWORD --data-urlencode json='{"parameter": [{"name":"delay", "value":"300sec"}]}'
说明:API Token可通过Jenkins用户配置页面生成,替代密码提升安全性。若Jenkins运行在Kubernetes集群中,可通过Kubernetes插件动态调度任务到Pod中执行,提升资源利用率和扩展性。步骤如下:
pipeline {
agent {
kubernetes {
label 'jenkins-agent' // Pod标签
yaml """
metadata:
labels:
app: jenkins-agent
spec:
containers:
- name: jnlp
image: jenkins/inbound-agent:latest
resources:
limits:
cpu: "500m"
memory: "512Mi"
requests:
cpu: "250m"
memory: "256Mi"
"""
}
}
stages {
stage('Test') {
steps {
sh 'echo "Running in a Kubernetes Pod..."'
}
}
}
}
说明:Pod模板可根据需求自定义,支持多容器配置(如构建工具、依赖库)。