date
related_level
slug
type
relate_date
summary
status
tags
category
last_updated
Jan 3, 2026 10:56 PM
是否已更新
orginal_page
是否推荐
参考资料
Jenkins 流水线核心价值
- 代码化:流水线用代码编写,通常纳入版本控制,便于团队协作修改和优化
- 持久性:即使 Jenkins 主机重启(计划内或意外),流水线仍能继续运行
- 可暂停:支持在关键步骤暂停,等待人工确认后再继续
- 灵活性:支持分支/合并、循环、并行执行等复杂持续交付场景
- 可扩展:支持自定义 DSL 扩展,并能与其他插件集成
Jenkins 流水线核心概念:pipeline, node, stage, step
- Pipeline(流水线):用户定义的持续交付流程,用代码描述整个构建、测试和部署过程
- 在声明式语法中,用
pipeline { }块定义
- Node(节点):能运行流水线的机器(如服务器或代理)
- 在脚本式语法中,用一个或多个
node { }块指定在哪执行任务 - 在声明式语法中,用
agent { }块指定在哪执行任务
- Stage(阶段):流水线中的一个逻辑步骤,比如“构建”、“测试”、“部署”,用于组织任务并方便可视化进度
stages { }块可以包含多个stage { }块
- Step(步骤):具体的单个操作,比如运行命令
sh 'make' steps { }块可以包含多个具体操作- 通常通过安装插件新增步骤来扩展流水线功能
Jenkinsfile 流水线即代码(Pipeline as Code)
Jenkinsfile文件必须放在代码仓库的根目录,包含完整的 Pipeline 脚本(声明式或脚本式),定义构建、测试、部署等步骤
- 通过其中一种 item 类型来发现 Jenkinsfile 并管理作业
- Pipeline 使用 Jenkinsfile 定义 CI/CD 流程,支持并行、条件、回滚
- Multibranch Pipeline 自动按 Jenkinsfile 构建单个代码库的多个分支
- Organization Folder 扫描 GitHub 组织或 Bitbucket 团队 ,以发现组织的存储库,并自动为其创建托管的多分支流水线作业
- 可以通过插件拓展到 Gitea 等组织
- Jenkins 其他 Item 类型
- Freestyle Project(自由风格项目)
- 传统任务类型,通过 Web UI 配置构建步骤,灵活但可维护性较差,不支持 Jenkinsfile
- Folder(文件夹)
- 用于对 Jenkins 任务进行分组管理,本身不执行构建,便于权限和结构化管理
Jenkins 流水线引用变量
默认提供的常用全局变量:env, params, currentBuild
env:访问环境变量,如env.PATH、env.BUILD_ID
params:以只读 Map 形式获取流水线参数,如params.MY_PARAM_NAME
currentBuild:获取当前构建信息,如currentBuild.result、currentBuild.displayName等
常用全局 env 变量
BUILD_NUMBER/BUILD_ID:当前构建编号
BUILD_TAG:格式为jenkins-作业名-编号,便于标识
BUILD_URL:当前构建结果的网页链接
JOB_NAME:当前任务名称
NODE_NAME:运行节点名称(控制器为 "master")
WORKSPACE:工作区绝对路径
JAVA_HOME:若配置了 JDK,则指向其路径
EXECUTOR_NUMBER:当前执行器编号(从 0 开始)
JENKINS_URL:Jenkins 服务地址(需在系统设置中配置)
environment { } 块或 withEnv 步骤设置 env 变量
- 声明式流水线可以使用
environment { }块
- 脚本式流水线必须使用
withEnv步骤
- 作用范围
- 在顶级
pipeline块中使用environment指令将应用于管道内的所有步骤 - 在
stage中定义的environment指令只会将给定的环境变量应用于该stage内的步骤
可以动态设置 env 变量
returnStdout返回字符串结果的结尾会包含一个空格
parameters { } 块设置 params 变量
五种可用变量类型:string, text, booleanParam, choice, password
parameters { string(name: 'DEPLOY_ENV', defaultValue: 'staging', description: '') }
parameters { text(name: 'DEPLOY_TEXT', defaultValue: 'One\nTwo\nThree\n', description: '') }
parameters { booleanParam(name: 'DEBUG_BUILD', defaultValue: true, description: '') }
parameters { choice(name: 'CHOICES', choices: ['one', 'two', 'three'], description: '') }- 首个选项为默认项
parameters { password(name: 'PASSWORD', defaultValue: 'SECRET', description: 'A secret password') }
params 变量样例
字符串变量插值与 Groovy 语法一致,仅双引号支持变量插值
- 前者仅输出
Hello Mr. ${username}
避免将用户输入或凭据变量直接用于 sh、bat、powershell 等命令步骤的插值
- 存在风险:命令注入风险,凭证泄露或失效
用户输入含特殊字符(如 ;、&、|)时,会被当作额外命令执行
错误用法
修改为单引号,让 sh 自行处理
凭证含特殊字符(如 %、$)时,经 Groovy 插值后可能被 shell 错误解析
错误用法
修改为单引号,让 sh 自行处理
- 对用户输入或环境变量,使用单引号(如
sh 'echo ${STATEMENT}'),让 shell 自行解析变量,而非 Groovy
Jenkins 流水线引用凭据
- 在
environment { }块里通过credentials()方法安全使用凭证
三种常用凭证类型:secretText, secretFile, usernamePassword
secretText
- 如 AWS 密钥,直接映射为环境变量
- 示例:
AWS_SECRET_ACCESS_KEY = credentials('id')
- 在日志中自动屏蔽为
***,防止意外泄露
secretFile
- 用于上传的文件类凭证(如 kubeconfig、GPG 文件)
credentials('id') 返回临时文件路径,供命令行工具使用
usernamePassword
- 一个凭证 ID 会生成三个变量
VAR→username:passwordVAR_USR→ 用户名VAR_PSW→ 密码
usernamePassword 样例
- 生成以下三个变量
BITBUCKET_COMMON_CREDSBITBUCKET_COMMON_CREDS_USRBITBUCKET_COMMON_CREDS_PSW
- 同样自动屏蔽敏感内容
其他凭证类型需使用 withCredentials 代码块:basicSSHUserPrivateKey, certificate, x509ClientCert
- 支持在同一个
withCredentials中绑定多个凭证
basicSSHUserPrivateKey 私钥以及对应 SSH 用户名
- 可选 Passphrase 用于加密私钥
certificate 指定 PKCS#12 证书
- 可选 Password 用于解密证书
x509ClientCert 包含 cert.pem, key.pem, ca.pem,用于 mtls 认证
- 由 Docker Common 插件提供,之前叫
dockerCert
- docker 客户端默认通过
DOCKER_CERT_PATH来设置证书路径
Jenkins 错误处理
声明式流水线通过 post { } 定义不同条件下的操作
- post 条件块
always { }无论成功失败都执行success / failure / unstable / aborted仅当流水线在对应状态时执行unsuccessful { }只要不是成功(即失败、不稳定或中止)就执行changed { }当前结果与上次不同时执行fix { }本次成功,且上次失败或不稳定时执行regression { }本次失败/不稳定/中止,而上次成功时执行cleanup { }在所有其他post条件执行完毕后运行,常用于清理资源
- 脚本式流水线依赖 Groovy 的
try/catch/finally控制流程,可精细处理异常并确保清理操作(如收集报告)执行
错误处理步骤
catchError捕获错误但不让流水线立即中断
error主动抛出错误并中止
unstable标记构建为“不稳定”(不失败但有问题)
warnError将错误降级为警告,继续执行
多代理处理和使用 parallel 步骤并行执行
- 每个
stage可指定不同agent,通过stash/unstash在节点间传递文件
样例:在标记为“linux”和“windows”的代理上测试构筑结果
- 使用
parallel步骤并行执行
样例:重构之前的测试样例为并行处理
Jenkins 流水线片段复用 Shared Libraries
- Pipeline 支持创建共享库(Shared Libraries),并加载到现有的 Pipeline 中
共享库(Shared Library) 定义时需指定:
- 名称:简短标识符,供脚本引用
- 源码来源(SCM):推荐使用支持“Modern SCM” API 的插件(如新版 Git、SVN),可直接检出任意版本
- 若 SCM 插件不支持 Modern 模式,需用 Legacy SCM,并在 SCM 配置中包含
${library.库名.version}变量(如 SVN URL 中写.../tags/${library.mylib.version})以动态切换版本
- 默认版本:可选,可设为分支、标签或提交哈希(如
main、v1.0)
- 加载方式:可选是否自动加载(全局可用)或需脚本显式引入
- 版本锁定:可在 Jenkins 配置中固定版本,禁止脚本覆盖
共享库目录结构 src, vars, resources
目录样例
src/存放标准 Java/Groovy 包结构的类文件- 如
org/foo/Bar.groovy→ 对应org.foo.Bar类 - 自动加入流水线的 classpath,可在脚本中通过
new org.foo.Bar()使用
vars/定义全局变量/函数,文件名即变量名- 如
foo.groovy→ 流水线中可用foo.xxx()) - 可附带同名
.txt文件提供文档(支持 Markdown/HTML),在成功运行一次后显示在“全局变量参考”页面
resources/存放非代码资源文件(如 JSON、配置文件)- 通过
libraryResource 'org/foo/bar.json'加载(仅限外部共享库,内部库不支持)
不同层级的共享库以及可信等级
可信等级分为两类:Trusted(可信)和 Untrusted(不可信)
- trusted(可信):可调用任意 Java/Groovy/Jenkins 内部 API
- 需
Overall/RunScripts权限(通常仅管理员) - 任何能够向此 SCM 存储库推送提交的人都可能获得对 Jenkins 的无限制访问权限
- untrusted(不可信):运行在 Groovy 沙箱中,权限受限
- 仅需
Overall/Manage权限
- 全局共享库(Global Shared Libraries)
- 在 Manage Jenkins > System 中配置,对所有流水线可用
- 可以设置为 untrusted 或 trusted
- 文件夹级共享库(Folder-level)
- 绑定到特定文件夹,仅该文件夹及子文件夹内的流水线可用
- 始终为 untrusted
- 自动共享库(Automatic)
- 由插件动态加载(如 GitHub 库插件),无需预先配置,但为 untrusted
共享库版本
- 在 Jenkins 全局配置中设置默认版本
- 脚本中只写库名或者隐式加载(开启 "Load implicitly")时使用
- 如果启用 “Allow default version to be overridden”,可通过
@Library('mylib@v2')覆盖默认版本
library 步骤支持动态版本(变量、参数、分支名等)
- 不能用
library步骤覆盖已隐式加载的库版本(隐式库在脚本运行前已加载,且同名库不可重复加载)
- 共享库一般在编译阶段加载(支持类型检查),
vars/中的全局变量在运行时解析
使用@Library 注解引入共享库
隐式加载:若库标记为 “Load implicitly”,可直接使用其变量或类
- 会使用默认版本
显式加载:通过 @Library('库名') 注解引入
@Library('xxx') _ 是使用 vars/ 全局变量的标准方式
- 适用于
- 仅定义全局变量 (vars/) 的共享库
- 仅需要全局变量的 Jenkinsfile
加载后通过 import 使用 src/ 中的类
使用 library 步骤动态加载共享库
仅用 vars/ 全局变量
使用 src/ 中的类(无静态类型支持)
- 不能
import(脚本已编译完成),必须通过全限定名动态调用
- 使用类似 Java 的语法调用
static方法 library('my-shared-library').com.mycorp.pipeline.Utils.someStaticMethod()
Jenkins 流水线:声明式和脚本式
参考资料
- 脚本式流水线支持完整的 Groovy 语法(如循环、异常处理、函数等)
声明式流水线样例
脚本式流水线样例
Jenkins 声明式流水线语法
pipeline { }或node { }作为最外层容器
Jenkins 声明式流水线语法组成:Sections, Directives, Steps
- Sections 包含一个或多个 Directives,Directives 又包含一个或多个 Steps
Stages 结构
Sequential Stages 定义按顺序执行的嵌套子阶段
- 每个
stage必须且只能包含以下之一:steps、stages、parallel或matrix
- 在顺序阶段中,可以嵌套并行(
parallel)或矩阵(matrix)阶段
Parallel Stages 定义同时执行的多个子阶段
- 不能在已经处于
parallel或matrix中的stage内再嵌套parallel或matrix
可通过以下方式启用“快速失败”(fail-fast)
- 在并行 stage 中设置
failFast true;
- 或在 pipeline 的
options中使用parallelsAlwaysFailFast(),使所有并行阶段都启用 fail-fast
Matrix Stages 定义一个多维参数组合,每个组合并行执行一组顺序阶段
- 不能在已经处于
parallel或matrix中的stage内再嵌套parallel或matrix
一个 matrix 必须包含以下两部分:axes, stages
axes:定义一个或多个维度(axis),每个维度有名称和值列表
- 所有维度的值进行笛卡尔积,生成所有单元格
- 示例:3 个 axis(3×4×2)→ 24 cells
stages:定义在每个单元格中顺序执行的一组 stage
可在 matrix 块内直接定义适用于每个单元格的 stage 指令
- 如:
agent、environment、tools、when、options、input、post等
- 在运行时引用当前单元格的 axis 变量(如
${PLATFORM})
- 条件判断(如
when)可用于动态控制哪些单元格实际执行
excludes 可选,可移除不需要的单元格(即“稀疏化”矩阵)
- 每个
exclude定义一组匹配条件,满足该条件的单元格将被剔除。 - 支持
values(排除指定值)和notValues(排除非指定值)
- 多个
exclude规则独立生效,可组合使用
可通过以下方式启用“快速失败”(fail-fast)
- 在并行 stage 中设置
failFast true;
- 或在 pipeline 的
options中使用parallelsAlwaysFailFast(),使所有并行阶段都启用 fail-fast
Matrix 样例
可用 Sections
agent 指定整个流水线或某个 stage 在哪个 Jenkins 节点(或容器)上执行
- 可位于
pipeline顶层(全局)或单个stage内(局部)
关键参数类型
none:不分配全局 agent,要求每个 stage 自行声明。
any:在任意可用节点执行
label:在具有指定标签的节点上运行
- 可以使用 label 条件
docker:在 Docker 容器中运行
- 支持通过 args 参数来指定 docker run 参数
- 支持 registryUrl 和 registryCredentialsId 来使用私有仓库
dockerfile:用源仓库中的 Dockerfile 构建容器来执行流水线或阶段
- 通常使用源存储库根目录中的 Dockerfile,通过
dir 'someSubDir’指定其他文件夹路径
kubernetes:在 Kubernetes Pod 中运行
- Pod 模板在
kubernetes { }块内定义
一些选项
label 指定 Jenkins 节点的标签(或标签表达式),用于选择符合条件的执行节点
- node 必须,对 docker, dockerfile 有效
customWorkspace 覆盖默认的工作空间路径,指定自定义工作目录
- 对 node, docker, dockerfile 有效
- 可以指定绝对路径和相对路径(自定义工作区将位于节点上的工作区根目录下)
reuseNode 是否复用节点
- 若设为
true,容器将在顶层agent已分配的同一节点上启动,并复用其工作空间,而不是重新分配新节点
- 对 docker, dockerfile 有效
args 向 docker run 命令传递额外的运行时参数
- 挂载目录:
-v /host/path:/container/path
- 设置环境变量:
-e MY_VAR=value
- 指定用户:
--user 1000
- 对 docker, dockerfile 有效
- 注意:顶层
agent的分配时间 不计入options { timeout };而 stage 级agent的分配时间 会计入超时限制
stages 包含一个或多个 stage,是流水线主体逻辑所在
pipeline/node包含至少一个stages区块
- 结构:
stages→ 多个stage→ 每个stage包含steps
- 建议:按 CI/CD 阶段划分,如 Build → Test → Deploy
steps 定义在某个 stage 中实际执行的操作
steps必须位于每个stage内部
- 由一个或多个 step 命令组成
sh '...'(执行 shell)bat '...'(Windows 批处理)junit '...'(发布测试报告)input(人工确认)archiveArtifacts(归档产物)
- 可以通过安装插件添加更多可用 step 命令
post 定义在流水线或 stage 结束后根据其状态执行的清理或通知操作
- 位置:可在
pipeline顶层或stage内
- post 条件块
always { }无论成功失败都执行success / failure / unstable / aborted仅当流水线在对应状态时执行unsuccessful { }只要不是成功(即失败、不稳定或中止)就执行changed { }当前结果与上次不同时执行fix { }本次成功,且上次失败或不稳定时执行regression { }本次失败/不稳定/中止,而上次成功时执行cleanup { }在所有其他post条件执行完毕后运行,常用于清理资源
可用 Directives
environment 用于定义环境变量
- 作用范围
- 在
pipeline顶层定义 → 对所有 steps生效。 - 在
stage内定义 → 仅对该 stage 内的 steps 生效
- 支持一个特殊的辅助方法
credentials()集成 Jenkins 凭据 - 详见 Jenkins 流水线引用凭据部分
options 用于配置流水线或特定阶段(stage)的运行行为
- 作用范围
- 在
pipeline顶层定义 → 影响整个流水线 - 在
stage内定义 → 影响该 stage
- 优先级:
options中的逻辑(如timeout)先于agent分配和when条件判断执行
pipeline 常用选项
选项 | 作用 | 示例 |
timeout | 设置流水线的超时时间 | timeout(time: 30, unit: 'MINUTES') |
retry | 流水线失败时重试指定次数 | retry(2) |
disableResume | 控制器重启后不恢复流水线 | disableResume() |
quietPeriod | 设置静默期(秒) | quietPeriod(10) |
timestamps | 在控制台输出前添加时间戳 | timestamps() |
overrideIndexTriggers | 允许覆盖分支索引触发器的默认处理方式 | overrideIndexTriggers(false) |
skipDefaultCheckout | 跳过默认的 SCM 代码检出 | skipDefaultCheckout() |
checkoutToSubdirectory | 在工作区的子目录中执行自动源代码控制检出 | checkoutToSubdirectory('foo') |
skipStagesAfterUnstable | 当构建状态变为 UNSTABLE 时,跳过相应阶段 | skipStagesAfterUnstable() |
preserveStashes | 保留 stash 供“从阶段重启”使用 | preserveStashes(buildCount: 3) |
buildDiscarder | 保留最近 N 次构建记录/产物 | buildDiscarder(logRotator(numToKeepStr: '5')) |
newContainerPerStage | 配合 Docker agent,每个 stage 用新容器 | newContainerPerStage() |
parallelsAlwaysFailFast | 启用并行阶段的 failfast | parallelsAlwaysFailFast() |
disableConcurrentBuilds | 禁止并发构建(可选是否中止旧构建) | disableConcurrentBuilds(abortPrevious: true) |
stage 常用选项
选项 | 作用 | 示例 |
timeout | 设置该阶段的超时时间 | timeout(time: 1, unit: 'HOURS') |
retry | 流水线失败时重试指定次数 | retry(3) |
timestamps | 在控制台输出前添加时间戳 | timestamps() |
skipDefaultCheckout | 跳过从源代码控制系统检出代码 | skipDefaultCheckout() |
parameters 用于定义用户在手动触发流水线时需提供的输入参数
- 仅允许在
pipeline顶层定义一次
五种可用变量类型:string, text, booleanParam, choice, password
parameters { string(name: 'DEPLOY_ENV', defaultValue: 'staging', description: '') }
parameters { text(name: 'DEPLOY_TEXT', defaultValue: 'One\nTwo\nThree\n', description: '') }
parameters { booleanParam(name: 'DEBUG_BUILD', defaultValue: true, description: '') }
parameters { choice(name: 'CHOICES', choices: ['one', 'two', 'three'], description: '') }- 首个选项为默认项
parameters { password(name: 'PASSWORD', defaultValue: 'SECRET', description: 'A secret password') }
triggers 用于定义自动触发流水线执行的机制
- 支持触发器类型
cron按 Jenkins cron 表达式定期触发流水线cron('H */4 * * 1-5')→ 工作日每 4 小时一次pollSCM定期轮询 SCM(如 Git)是否有新提交,有则触发构建pollSCM('H/15 * * * *')upstream当指定的上游任务以特定结果(如 SUCCESS)完成时触发本流水线upstream(upstreamProjects: 'build-job', threshold: SUCCESS)
stage 定义流水线中的一个逻辑步骤
- stages 至少需要一个 stage
- 必须提供名称作为参数
stage('Example') {}
tools 自动安装并配置预定义的构建工具(如 Maven、JDK、Gradle),并加入 PATH
- 支持工具:
maven、jdk、gradle - 工具必须已在 Jenkins → Manage Jenkins → Tools 中预先配置
- 作用范围
- 在
pipeline顶层定义 → 影响整个流水线 - 在
stage内定义 → 影响该 stage
input 在 stage 开始前暂停流水线,等待用户确认或输入参数
可用参数
message必填,提示用户的问题
id可选,iput 元件的 ID- 默认值为 stage 的名称
ok可选,确认按钮文字- 默认为 “Proceed”
submitter可选,允许审批的用户/组- 如
"admin,dev-team"
submitterParameter可选,将审批人用户名存入指定环境变量
parameters可选,让用户填写额外参数
样例
when 用于条件控制:决定某个 stage 是否应被执行
- 逻辑规则:
- 多个并列条件 → 全部为 true 才执行(等价于隐式
allOf) - 使用
anyOf→ 任一为 true 即执行 - 使用
not→ 取反条件
- 嵌套支持:
not、allOf、anyOf可任意深度嵌套,构建复杂逻辑
常用内置条件:多数条件 comparator 支持 EQUALS / GLOB / REGEXP 匹配方式
branch:按分支名判断(仅多分支流水线)
when { branch pattern: "release-\\d+", comparator: "REGEXP"}
buildingTag / tag:按 Git tag 构建判断
when { buildingTag() }
when { tag pattern: "release-\\d+", comparator: "REGEXP"}
changeset / changelog:按代码变更文件或日志匹配
when { changeset pattern: ".TEST\\.java", comparator: "REGEXP" }
when { changeset pattern: "*/*TEST.java", caseSensitive: true }
when { changelog '.*^\\[DEPENDENCY\\] .+$' }
changeRequest:针对 PR / MR / Gerrit Change
when { changeRequest authorEmail: "[\\w_-.]+@example.com", comparator: 'REGEXP' }
environment:按环境变量值判断
when { environment name: 'DEPLOY_TO', value: 'production' }
equals:值相等判断
when { equals expected: 2, actual: currentBuild.number }
expression:自定义 Groovy 表达式
when { expression { return params.DEBUG_BUILD } }
triggeredBy:按触发方式(SCM、定时、用户等)
when { triggeredBy 'SCMTrigger' }
when { triggeredBy 'TimerTrigger' }
when { triggeredBy 'BuildUpstreamCause' }
when { triggeredBy cause: "UserIdCause", detail: "vlinde" }
执行时机控制:默认情况下,when 在 进入 agent 之后、input/options 之前 评估
beforeAgent true:条件通过才进入 agent
beforeInput true:条件通过才显示 input- 默认
beforeOptions true:条件通过才应用 options
样例:多条件嵌套
可用 Steps
- 声明式流水线可以使用 Pipeline Steps 参考文档中列出的所有标准步骤
script 允许在声明式流水线中嵌入 Scripted Pipeline(脚本式流水线)代码块
- 对于简单或临时逻辑可使用
script
- 若代码块较大或复杂,应将其移至 Shared Libraries(共享库) 中
其他:Jenkins Cron 语法
- 格式:
MINUTE HOUR DayOfMonth MONTH DayOfWeek
- 支持操作符:
*:所有值M-N:范围(如9-17)/X或M-N/X:步长(如/10表示每 10 分钟)A,B,C:枚举多个值
- 推荐使用
H(Hash)代替具体数字,避免多任务同时执行造成资源争抢 H基于任务名哈希生成稳定但分散的时间点(非随机)
Jenkins 脚本式流水线语法
- Scripted Pipeline 是基于 Groovy 语言构建的通用领域特定语言(DSL),运行在 Jenkins Pipeline 子系统之上
- 使用标准 Groovy 控制结构实现逻辑分支:
- 条件判断:
if/else - 异常处理:
try/catch/finally(Pipeline 步骤失败时会抛出异常)
- Scripted Pipeline 不引入专属 step,完全依赖 Pipeline 及插件提供的通用 step
- 与普通 Groovy 的差异
- 为支持 持久化(durability)(即 Jenkins 控制器重启后能恢复运行中的流水线),Scripted Pipeline 需要将数据序列化回控制器。
- 因此,某些 Groovy 习惯用法(如
collection.each { ... })可能不被完全支持,需注意兼容性问题
与 Declarative Pipeline 的对比
特性 | Scripted Pipeline | Declarative Pipeline |
编程范式 | 命令式(Imperative) | 声明式(Declarative) |
语法灵活性 | 高(几乎无限制,仅受 Groovy 约束) | 低(结构严格、预定义) |
学习曲线 | 较陡(需了解 Groovy) | 平缓(简洁、易读) |
适用场景 | 复杂、定制化需求 | 简单、标准化 CI/CD 流程 |
VSCode 安装插件 jenkins-pipeline-linter-connector 执行 Jenkinsfile 语法检查
- 相当于使用
curl通过 HTTP POST 向 jenkins 服务器发送代码检查请求
- 在 settings 里添加 jenkins url, user, token 即可
- token 在
/user/<username>/security里创建
- Shirt + Alt + V 快捷键调用插件进行验证
- 或者 Shirt + Ctrl + P 调出命令行,选择 Validate Jenkins
- Author:白鸟3
- URL:https://blog.kun2peng.top/operation/jenkins_pipeline_jenkinsfile
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
