61制作工厂网站,百度推广课程,天眼免费查询个人,石碣镇做网站点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接#xff1a;https://ceshiren.com/t/topic/26711 1. Jenkins节点
1.1 常用的节点
内建节点SSH节点Java Web节点
1.1.1 SSH节点配置 远程工作目录 节点中必须有该目录#xff0c;用于下载和运行j…点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接https://ceshiren.com/t/topic/26711 1. Jenkins节点
1.1 常用的节点
内建节点SSH节点Java Web节点
1.1.1 SSH节点配置 远程工作目录 节点中必须有该目录用于下载和运行jenkins 主机 节点的ip
1.1.2 Java Web节点配置 全局安全配置 代理勾选Java代理协议
1.2 节点管理的缺陷
没有负载监控能力任务数量做的负载均衡高可用能力差资源利用率 使用k8s和jenkins集成来解决 1.3 环境变量/工具位置的配置
全局环境变量节点环境变量点击配置从节点进行配置
1.4 父子job配置
在子job的设置中构建触发器配置父job 2. pipeline
2.1 语法 Declarative pipeline
语法树
必须包含在一个pipeline块内 pipeline{}
pipeline {agent any // 定义构建代理environment {param xx}stages { // 定义阶段stage(pull source code) {steps {echo pull source codesleep 5}}stage(build){steps {echo build source codesleep 5}}}post{ // 定义全局后置处理程序always {echo say goodbye}}
}agent定义pipeline执行节点 必须出现的指令 参数 any可以在任意agent上执行pipeline nonepipeline将不分配全局agent, 每个stage分配自己的agent label指定运行节点的Label node自定义运行节点配置 指定 label指定 customWorkspace docker控制目标节点上的docker运行相关内容 pipeline {agent {label mastercustomWorkspace myWorkspace}
}stages定义阶段集
必须出现的指令包含一个或多个stage的序列每个Pipeline 代码区间中必须只有一个stages
stage定义阶段
必须出现的指令无参数包含在stages中Pipeline完成的所有实际工作都需要包含到stage中需要定义stage的名字
steps定义步骤
必须出现的指令无参数具体执行步骤包含在 stage 代码区间中
post定义Pipeline或stage运行结束时的操作 不是必须出现的指令 参数: always无论Pipeline运行的完成状态如何都会运行changed只有当前Pipeline运行的状态与先前完成的Pipeline的状态不同时才能运行failure仅当当前Pipeline处于“失败”状态时才运行success 仅当当前Pipeline具有“成功”状态时才运行unstable只有当前Pipeline具有“不稳定”状态才能运行aborted只有当前Pipeline处于“中止”状态时才能运行 post {always {echo say always}success {echo say success}failure {echo say failure}
}options定义pipeline 的专有属性 不是必须出现的指令 参数: buildDiscarder保持构建的最大个数disableConcurrentBuilds不允许并行执行pipeline任务timeoutpipeline 超时时间retry失败后重试整个Pipeline的次数timestamps预定义由Pipeline生成的所有控制台输出时间skipStagesAfterUnstable一旦构建状态进入了“Unstable”状态就跳过此stage
options {timeout(time: 30, unit: SECONDS)buildDiscarder(logRotator(numToKeepStr: 10))retry(5)
}environment定义Pipeline或stage运行时的环境变量
不是必须出现的指令无参数 environment {PERSON Kevin}stages {stage(pull source code) {steps {echo hello ${PERSON}echo PERSON}}parameters定义pipeline 的专有参数列表 不是必须出现的指令 使用 ${变量名} 进行参数化调用 参数: 支持数据类型booleanParam, choice, credentials, file, text, password, run, string类似参数化构建的选项结合environment可避免首次构建失败 parameters {string(name: PERSON ,defaultValue:Jenkins,description:输入的文本参数)}environment {PERSON $params.PERSON}stages {stage(pull source code) {steps {echo hello ${PERSON}echo pull source code}}triggers定义了Pipeline自动化触发的方式 不是必须出现的指令 参数: cron接受一个cron风格的字符串来定义Pipeline触发的常规间隔pollSCM接受一个cron风格的字符串来定义 Jenkins 检查SCM源更改的常规间隔如果存在新的更改则Pipeline将被重新触发
triggers {cron(H/2 * * * *)
}script定义脚本
在script块内可执行groovy脚本 2.2 语法 Scripts pipeline
流程控制 if-else
node {stage(Example) {if (env.BRANCH_NAME master) {echo I only execute on the master branch} else {echo I execute elsewhere}}
}流程控制 try-catch
stage(Test) {node{echo This is test stage which run on the slave agent.try {echo This is in the try block. sh exit 1}catch (exc) {echo Something failed, Im in the catch block.}finally {echo Finally, Im in the finally block.}}
}环境变量定义及引用 环境工具变量的定义 设置位置 “Manage Jenkins”- “Global Tool Configuration” Script 代码中引用环境变量调用java、maven工具
stage(env tools) {node(master){ //定义maven java环境def mvnHome tool Maven 3.9.3def jdkHome tool jdk1.8_master//引用环境变量配置PATH变量env.PATH ${mvnHome}/bin:${env.PATH}env.PATH ${jdkHome}/bin:${env.PATH}//调用java mvn 工具sh java -versionsh mvn --version}
}