一、JenkinsShareLibrary简介
ShareLibrary就是一个库写的的是groovy文件。目录结构
调用库方法
二、Pipline语法
2.1、agent(代理)
agent指定了流水线执行的节点。参数:any在任何可用的节点上执行Pipline,none没指定agent的时候默认,label在指定的节点上运行Pipline
agent {node { label "master" //指定运行节点
customWorkspace "${workspace}" //运行工作目录}}
2.2、post
在Jenkins Pipeline中,post 部分用于定义在Pipeline执行完成后要执行的操作。post 部分通常包含针对不同构建结果(例如成功、失败、中止等)的处理步骤。
post {
success {
echo '构建成功!'
// 在这里可以添加其他成功后的操作
}
failure {
echo '构建失败!'
// 在这里可以添加其他失败后的操作
}
aborted {
echo '构建中止!'
// 在这里可以添加其他中止后的操作
}
always {
echo '不论构建结果如何,都会执行这里的操作!'
// 在这里可以添加其他始终执行的操作
}
}
2.3、stages(阶段)
在Jenkins Pipeline中,stages 部分用于定义Pipeline中的各个阶段(Stage),每个阶段可以包含一组相关的构建步骤。包含一个或多个stage指令。
stages {
stage('Build') {
steps {
// 在这里包含构建步骤
sh 'echo "构建步骤执行中..."'
}
}
stage('Test') {
steps {
// 在这里包含测试步骤
sh 'echo "测试步骤执行中..."'
}
}
stage('Deploy') {
steps {
// 在这里包含部署步骤
sh 'echo "部署步骤执行中..."'
}
}
}
stages和stage:
stages 是一个顶级部分,在Pipeline定义中用来包含所有阶段(stage)。它是一个块(block),用来定义多个阶段的集合。在 stages 块中,可以定义多个 stage,每个 stage 代表一个构建阶段。
2.4、steps(步骤)
steps 是用于定义某个阶段(stage)中的一组构建步骤的部分。steps 是一个必需的块,它包含了Pipeline中实际执行的命令和操作。
stages {
stage('Example') {
steps {
// 在这里定义构建步骤
sh 'echo "Hello, World!"'
sh 'ls -l'
echo '完成构建步骤!'
}
}
}
2.5、environment
是用于设置构建环境变量的部分。通过 environment块,您可以定义一组环境变量,这些变量将在整个Pipeline执行期间对所有步骤都可见。
environment {
// 在这里定义环境变量
MY_VARIABLE = 'hello'
PATH = '/usr/local/bin'
}
stages {
stage('Example') {
steps {
// 在这里使用环境变量
echo "MY_VARIABLE 的值是 ${env.MY_VARIABLE}"
sh 'echo "环境变量 PATH 的值是 $PATH"'
}
}
}
2.6、options
options是一个用于定义Pipeline全局选项的部分。options 可以用来配置Pipeline的行为,例如设置超时时间、并行执行、并发构建限制等。
并发构建限制选项(Concurrent builds limit options):限制同时执行的Pipeline构建数量:
pipeline {
options {
throttleConcurrentBuilds(2)
}
}
2.7、trigger
"trigger" 通常用于指定触发 Pipeline 执行的条件或事件。这些条件或事件可以是外部触发器,例如 SCM 变更、定时触发器、另一个 Pipeline 的完成等。
定时触发器:根据指定的时间表或表达式触发 Pipeline 执行:
pipeline {
triggers {
cron('H * * * *')
}
}
2.8、tool
tool 是用于指定在Pipeline执行期间使用的工具(如编译器、构建工具、静态分析工具等)的部分。通过 tool,您可以指定特定的工具版本或安装路径,以确保Pipeline在执行时使用正确的工具版本。
tools {
// 指定Maven工具
maven 'Maven 3.8.3'
// 指定JDK工具
jdk 'jdk8'
}
stages {
stage('Build') {
steps {
// 在这里使用工具
sh 'mvn clean install'
}
}
}
2.9、input
input 是用于暂停 Pipeline 执行并等待用户输入的部分。input 允许您在 Pipeline 执行过程中插入一个交互式的步骤,以等待用户提供某些信息或执行某些操作。
pipeline {
agent any
stages {
stage('Deploy') {
steps {
// 在部署阶段之前插入输入步骤
input "是否要部署到生产环境?"
}
}
}
}
2.10、when
when 是一个用于根据条件控制步骤执行的部分。when 部分允许您根据指定的条件决定是否执行某个步骤、阶段或者整个 Pipeline。
stages {
stage('Build') {
when {
branch 'master'
}
steps {
echo '执行构建...'
}
}
}
除了 branch 条件外,还可以使用其他条件来控制步骤的执行,例如:
environment:根据环境变量的值来控制步骤的执行。
expression:根据 Groovy 表达式的计算结果来控制步骤的执行。
changeRequest:根据变更请求(比如 Pull Request)的类型来控制步骤的执行。
not:对其他条件的否定
2.11 parallel
parallel(并行)是用于在不同的 Agent 上并行执行一组步骤的部分。通过 parallel,您可以在同一阶段中同时执行多个步骤,从而加速整个 Pipeline 的执行速度。
stages {
stage('Parallel Steps') {
parallel {
stage('Step A') {
steps {
echo '执行步骤 A...'
sh 'sleep 5' // 模拟耗时操作
echo '步骤 A 完成!'
}
}
stage('Step B') {
steps {
echo '执行步骤 B...'
sh 'sleep 5' // 模拟耗时操作
echo '步骤 B 完成!'
}
}
}
}
}