脚本式流水线和声明式流水线
脚本式流水线
node('name'){
stage('Source'){
git 'git@xxx.git'
}
stage('Compile'){
pwd()
do something()
}
}
优点:
- 更少的代码段落和弱规范要求
- 更强大的程序代码能力
- 更像编程代码程序
- 传统的流水线即代码模型,用户熟悉并向后兼容性
- 更灵活的自定义代码操作
- 能够构建更复杂的工作流和流水线
缺点:
- 要求更高编程水平
- 首先与Groovy语言和环境
- 和传统Jenkins模型有很大差异
- 与声明式流水线相比,同一工作流会更复杂
声明式流水线
pipeline{
agent{label 'name'}
stages{
stage('Source'){
steps{
git 'git@xxx.git'
}
}
stage('Compile'){
steps{
pwd()
do something()
}
}
}
}
优点:
- 结构化,贴近Jenkins Web的表单形式
- 高可读性
- 可以通过图形化界面自动生成
- 段落可以映射到常见的Jenkins概念,比如通知
- 更友好的语法检查和错误识别
- 提升流水线间的一致性
缺点:
- 迭代较弱
- 开发不完善
- 结构严格
- 难以处理复杂的任务
说明
声明式流水线的agent和脚本式流水线的node都是指运行的节点,对于没有配置节点(默认只有master节点),使用node{}(把label省略掉)和agent any即可
修改节点需要在工作台->系统管理->节点管理
处进行
构建配置
配置示例
proprties([
pipelineTriggers([
upstream(
threshold:hudson.model.Result.SUCCESS,
upstreamProjects:'name'
)
])#在名为name的项目构建成功后构建
pipelineTriggers([cron('0 9 * * 1-5')])
#这里表示每周一到周五,上午9点的定时任务
pipelineTriggers([cron('*\20 * * * *')])
#*/<value>表示每隔,这里表示每隔20分钟
pipelineTriggers([cron('*H H(0-7) * * *')])
#H(s,e)随机选择从s到e的任意值,这里表示0点到7点的任意时间
#定时任务
#五个参数分别表示分钟、小时、每月第几天、第几个月、每周第几天(0和7表示周日)
pipelineTriggers([pollSCM('H H 1,15 1-11 *')])
#除了12月之外,每个月的第1,15天扫描一次SCM变化
pipelineTriggers([cron('H H(9-16)/2 * * 1-5')])
#每两