中铁航空港建设集团网站,高端网站鉴赏,怎么申请自媒体平台账号,怎么知道网站是phpJenkinsFile可以通过两种语法来声明流水线结构#xff0c;一种是声明式语法#xff0c;另一种是脚本式语法。
脚本式语法以Groovy语言为基础#xff0c;语法结构同Groovy相同。
由于Groovy学习不适合所有初学者#xff0c;所以Jenkins团队为编写Jenkins流水线提供一种更简…
JenkinsFile可以通过两种语法来声明流水线结构一种是声明式语法另一种是脚本式语法。
脚本式语法以Groovy语言为基础语法结构同Groovy相同。
由于Groovy学习不适合所有初学者所以Jenkins团队为编写Jenkins流水线提供一种更简单、更有主见的语法-声明式。
两者本质上是相同的流水线子系统。即他们都是 “流水线即代码” 的持久实现都能够使用构建到流水线中或插件提供的步骤都能够使用 共享库
但是它们的区别在于语法和灵活性。声明式限制了用户使用更严格和预定义的结构 但是略显繁琐。脚本化提供了很少的限制, 以至于对脚本和语法的唯一限制往往是由Groovy子集本身定义的而不是任何特定于流水线的系统, 这也使得脚本式语法成为高级用户和那些有更复杂需求的人的理想选择。
脚本式语法
流水线脚本结构
node{
stage(Build){
checkout scm
echo start build
}
stage(Test){
echo start test
}
stage(Deploy){
echo start deploy
}
}Node节点: 一个 Node 就是一个 Jenkins 节点或者是 Master或者是 Agent是执行 Step 的具体运行环境Pipeline 执行中的大部分工作都是在一个或多个声明 Node 步骤的上下文中完成的。如果不指定参数则默认在master节点运行job
Stage环节: 一个 Pipeline 可以从逻辑上划分为若干个 Stage每个 Stage 代表一组操作如Build、Test、Deploy。注意Stage 是一个逻辑分组的概念可以跨多个 Node。即一个stage语句块可以包含node表示不同的节点执行响应的任务步骤。
Step步骤: Step 是最基本的操作单元小到执行一个 Shell 脚本大到构建一个 Docker 镜像由各类 Jenkins 插件提供当插件扩展Pipeline DSL 时通常意味着插件已经实现了一个新的步骤。
另外在 Jenkins Pipeline 中定义的 Stage各个阶段的逻辑划分Jenkins 提供了 Stage View 插件按照 Stage 逻辑划分任务对用户透明化、可视化展示流水线的执行如下图 基本语法
脚本式语法遵从Groovy脚本语言设计常见的Groovy语法都可以用到流水线脚本中
内置函数
有很多特殊的Step用于pipeline脚本中如前面提到的node或stage。下面列出一些在你当前插件集合中所有可以用到的step。其他插件提供的pipeline集成功能可以通过更新插件做到。
通常Step 的参数是以键值对形式传递的但是如果此步骤只有一个必填参数那么可以省略参数名如
readFile build.properties是下面这种方式的简写
readFile file: build.properties但是如果有多个必填参数那么参数名必须指定
readFile file: build.properties, encoding: ISO-8859-1参数直接用逗号隔开
许多步骤的参数会用到复杂的嵌套配置一些嵌套配置对象反过来有对象类型的参数下面列出三种方式指定嵌套对象按照优先级排列。
1.一些配置对象定义自定义符号。这些用于表示步进调用的符号或者使用命名参数映射的其他函数调用
splitTests count(3)或拼出强制性参数名称
splitTests parallelism: count(size: 3)与使用旧的第二语法选项的等效项比较
splitTests parallelism: [$class: CountDrivenParallelism, size: 3]委托给单个对象的某些Pipeline步骤允许在明确的情况下省略实际的步骤名称因此您可以简单地编写
archiveArtifacts **.txt而不是
step([$class: ArtifactArchiver, artifacts: **.txt])嵌套配置是一个实际值可以保存到变量等中
def parallelism(deterministic) {
deterministic ? count(3) : time(15)
}
splitTests parallelism(true)2.使用参数的键值对。可以省略默认值。注意这[1, 2, 3]是Groovy中的列表而是[a: 1, b: 2, c: 3]字典。
特殊映射键 c l a s s 用于表示所请求对象的简单或必要时完全限定类名。如果包含的参数只允许一种嵌套对象或列表则 class用于表示所请求对象的简单或必要时完全限定类名。如果包含的参数只允许一种嵌套对象或列表则 class用于表示所请求对象的简单或必要时完全限定类名。如果包含的参数只允许一种嵌套对象或列表则class可以省略
checkout([$class: GitSCM, userRemoteConfigs: [[url: git://…], extensions: [[$class: CleanBeforeCheckout]]])在这个例子中GitSCM必须指定来区分的种类SCM所使用的delegate的checkout 单强制参数名称delegate可省略;
并且CleanBeforeCheckout必须被指定来区分不同类别的GitSCMExtension由所使用extensions的GitSCM-a“异质”列表;
但$class: UserRemoteConfig’由于可以省略userRemoteConfigs的GitSCM被定义为只包含UserRemoteConfigS-它是一个“均匀的”列表。在第一种语法中同类列表不允许有这样的遗漏。
请注意如果给出单个参数省略名称并且该参数是映射则必须将其括在括号中以避免语法歧义。
3使用Java对象
import hudson.plugins.git。*
import hudson.plugins.git.extensions.impl。*
checkoutnew GitSCM[new UserRemoteConfiggit// ...nullnullnull]nullfalse[]nullnull[new CleanBeforeCheckout]除了细节程度更深入Groovy语法这些脚本如果没有签名批准通过则无法在Groovy沙箱中运行这使得此模式在典型的安全Jenkins中无法运行。
代码生成器
在流水线任务的主页面有一个pipeline语法菜单点击进入可以生成常用的语法 选择下拉框里面的示例步骤可以选择你需要的step如读取文件填入相关参数点击生成流水线脚本再把生成的流水脚本复制到你的pipeline脚本中即可。 最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你