一、保留历史构建Discard old builds

传统方法

在这里插入图片描述

脚本式

properties([
            buildDiscarder(logRotator(numToKeepStr:'30')),
    ])

声明式

options {
        buildDiscarder logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '30')   //保留历史构建数30个
    }

二、定时构建

每隔30分钟去轮询git仓库,如果有变更则触发流水线执行

传统方法

在这里插入图片描述

脚本式

properties([
            pipelineTriggers ([pollSCM("H/30 * * * *")])
    ])

声明式

暂未找到

三、清理工作空间

传统方法

Build Environment
在这里插入图片描述

脚本式

step([$class: 'WsCleanup'])		//清理工作空间
deleteDir()		//递归清理工作空间

声明式

deleteDir()		//递归清理工作空间

四、触发下游job构建

传统方法

Tragger parameterized build on other projects
在这里插入图片描述

脚本式

wait:是否等待下游job构建完成。默认为true
propagate:继承下游job的构建状态,如果下游job报错,则自己也报错

build(job: '下游job名', parameters: [string(name: 'VERSION', value: env.VERSION)], propagate: true, wait: true)

声明式

上游Job需有VERSION参数
JOB_NAME是Jenkins内置变量,代表当前Job的名字
下游job需有JOB参数

build job: '下游job名字', parameters: [string(name: 'VERSION', value: env.VERSION),string(name: 'JOB', value: env.JOB_NAME)], propagate: true, wait: true

五、指定执行机

Jenkins添加Slave执行机详解

传统方法

slave_1为执行机的名字
在这里插入图片描述

脚本式

node(slave_1){
	    	println "xxxx"
	    }

声明式

pipeline {
   agent slave_1
   }

六、执行shell命令

传统方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

脚本式

  • 获取groovy定义的变量——${key}
  • 获取shell变量——${key} #需要通过\进行转义
sh """
	shell命令
"""

声明式

  • 获取shell变量——${key}
  • 不能获取groovy通过def定义的变量
  • 可以获取参数化定义的值
  • shell自身定义的变量会覆盖jenkins参数化定义的变量
sh '''
	shell命令
'''

七、编写Description描述信息

传统方法

在这里插入图片描述

八、给job构建号设置描述信息

在这里插入图片描述
需安装Build Name and Description Setter插件
在这里插入图片描述

声明式

script {
            buildDescription "123"
        }

脚本式

buildDescription("123")

九、upstream—在其他项目构建后构建

properties([
	pipelineTriggers([ 
		upstream( 
			threshold : hudson.model.Result.SUCCESS,
			upstreamProjects: 'job1,job2' 
		)
	]) 
])

如果你需要列出多个任务,可以使用逗号分隔。
如果你需要指定一个任务的某个分支(如多分支任务),在任务名称的后面添加斜线和分支名称(如’ Job1/master )。

十、周期性构建

周一到周五上午9点运行

传统方法

在这里插入图片描述

声明式

triggers { cron(0 9 * * 1-5) }

脚本式

properties([
	pipelineTriggers([
		cron(0 9 * * 1-5)
	])
])

cron语法

各字段的含义参考Linux的定时任务,需要注意的是,这里可以使用H符号。

H符号表示在一个范围内,使用该项目名称的散列值计算出一个唯一的偏移量。
这个偏移量与范围的最小值相加后,用于定义范围内的实际执行时间。

这个符号可以避免所有配置相同 cron 值的项目在同一时间启动。从散列算法获得的偏移 ,用于错开执行具有相同 cron 时间的项目

这个值是项目名称的散列值,每 个值都与其他项目的值是不同的,但是同一项目的值随着时间的流逝则保持不变。

上面的定时用H符号表示可以写成

cron(H 9 * * 1-5)	//周一到周五上午9点的某一分钟运行

十一、SCM轮询

每30分钟轮询一次

传统方法

在这里插入图片描述

声明式

triggers { pollSCM(H/30 * * * *) }

脚本式

properties([pipelineTriggers ([pollSCM(H/30 * * * *)])])

十二、sshPublisher传送文件到远程机器

发送backend/app.jar到远程机器java_161(这个需要在Jenkins的系统配置中设置)的/opt下,并执行如下命令

source /etc/profile
java -jar app.jar &

声明式

sshPublisher(publishers: [sshPublisherDesc(configName: 'java_161', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''
                source /etc/profile
                java -jar app.jar &
                ''', 
                execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/opt/', 
                remoteDirectorySDF: false, removePrefix: 'backend/', sourceFiles: 'backend/app.jar')], 
                usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐