CICD Day7、Jenkins Pipeline 常用指令及Pipeline快捷生成方式(片段生成器)

news/2025/1/8 17:03:30/文章来源:https://www.cnblogs.com/suyj/p/18660143

1、常用指令

在编写Pipeline脚本时,会涉及各种指令,这些指令用于实现构建过程中的不同功能。熟悉这些指令后,编写一个完整的Pipeline脚本将变得十分简单

1.1 sh

  • sh指令用于执行shell命令,配置示例如下
stage('Build') {stage {sh 'hostname'}
}
  • 在上述配置中,在构建的过程中,执行一个hostname命令以显示主机名
  • 如果需要执行多条命令或者shell脚本,可以使用三引号包裹。配置示例如下:
stage('Build') {stage {sh """hostnamepwdls"""}
}

1.2 environment

  • environment指令用于在Pipeline中定义环境变量,这些环境变量可以在任意步骤中使用。配置示例如下:
pipeline {agent anyenvironment {APP_NAME = 'portal'}stages {stage('Build') {steps {echo "$APP_NAME"}}}
}
  • 在上述构建中,environment块定义了一个名为APP_NAME的环境变量,值为portal。在构建过程中,使用$APP_NAME引用变量,并使用echo指令输出它

1.3 parameters

  • parameters指令用于定义参数,既参数化构建。配置示例如下:
pipeline {agent anyparameters {choice (choices: ['dev' ,'main'], description: '请选择发布的分支', name: 'Branch')}stages {stage('Build') {steps {echo "${params.Branch}"}}}
}
  • 在上述配种,parameters块定义了一个选项参数,名称为Branch,该名称将作为环境变量被公开在构建流程中。在构建的步骤中,使用${params.Branch}引用改变量,并使用echo指令输出
  • 完整的配置示例如下:
pipeline {parameters {choice (choices: ['dev' ,'main'], description: '请选择发布的分支', name: 'Branch')}agent {kubernetes {yaml '''apiVersion: v1kind: Podmetadata:labels:app: jenkins-slavespec:containers:- name: jnlpimage: uhub.service.ucloud.cn/librarys/jenkins/inbound-agent:latest-jdk21args: ['\$(JENKINS_SECRET)', '\$(JENKINS_NAME)']'''}}stages {stage('Build') {steps {echo "${params.Branch}"echo  'Build...'}}stage('Test') {steps {echo  'Test...'}}stage('Deploy') {steps {echo  'Deploy...'}}}
}
  • 点击保存后刷新页面,可以看到Build变成了 Build with Parameters
    image

image

1.4 triggers

  • triggers指令用于定义触发器,既自动触发构建的条件,如定时触发、代码变更时触发等。配置示例如下:
pipeline {agent anytriggers {pollSCM '* * * * *'}stages {stage() {steps {echo "Building......"}}}
}
  • 在上述配种,triggers块定义了一个pollSCM触发器,表示每分钟检查一次代码仓库是否有变更

1.5 when

  • when指令用于定义在特定条件下执行某个阶段或步骤。配置示例如下:
pipeline {agent anystages {stage('Build') {when {expression { return params.BUILD_DEV == 'dev' }}steps {echo "Building in dev environment..."}}}
}
  • 在上述配置中,Build阶段使用了when指令,表示只有当参数BUILD_DEV的值为dev时,才执行下面的步骤

1.6 script

  • script指令用于在Pipeline中执行一段Groovy脚本,这样可以实现更复杂的逻辑,如条件判断、循环等。配置示例如下:
pipeline {agent anystages {stage() {steps {script {def colors = ['red', 'blue', 'orange']for (def color in colors) {if (color == 'blue') {echo 'blue'} else {echo color}}}}}}
}
  • 在上述配置中,script块执行了一段Groovy脚本,其中包含了一个基本的数组遍历和逻辑判断

1.7 post

  • post指令用于在Pipeline执行结束后执行一些操作,如通知、清理等。配置示例如下:
pipeline {agent anystages {stage ('Build') {steps {echo "Building..."}}}post {always {echo 'Pipeline completed'}sucess {echo 'Pipeline success'}failure {echo 'Pipeline failed'}}
}
  • 在上述配置中,post模块定义了根据构建状态执行相应的操作,具体如下:
    • always:在Pipeline执行完成后,无论成功与否都会执行
    • success:在Pipeline执行成功时执行
    • failure:在Pipeline执行失败时执行

2 片段生成器

Jenkins片段生成器是一个强大工具,可以帮助用户以图形界面的方式生成Pipeline脚本的代码片段

在Pipeline脚本下方,单击 Pipeline syntax进入片段生成器页面,如下图所示
image

在 Sample Step列表中选择需要生成的功能后,下方会显示相应的图形页面,配置完成后,单击Generate Pipeline Script按钮生成对应的代码片段,可直接将其复制到Pipeline脚本中以供使用。如下图所示
image

  • Jenkins还提供了一个专门为声明式语法风格设计的生成器,名为Declarative Directive Generator(声明式指令生成器),主要用于生成Pipeline指令的代码片段。如下图所示
    image

  • 通过这两个生成器,用户可以很轻松地编写Pipeline脚本,减少手动编写的工作量,提高工作效率

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/865961.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DC-6 靶场通关小记

wordpress用户枚举、暴力破解得密码、CVE-2018-15877 plainview_activity_monitor RCE漏洞、水平权限提示、nmap --interative失效时 提权地址 https://www.vulnhub.com/entry/dc-6,315/环境配置 略,有问题可参考 https://www.cnblogs.com/lrui1/p/18655388 需要向hosts文件添…

【Java编程】一个高性能、支持百万级多任务重试框架:Fast-Retry

前言 假设你的系统里有100万个用户,然后你要轮询重试的获取每个用户的身份信息, 如果你还在使用SpringRetry和GuavaRetry 之类的这种单任务的同步重试框架,那你可能到猴年马月也处理不完,即使加再多的机器和线程也是杯水车薪,而Fast-Retry正是为这种场景而生。 Fast-Retry …

mac m1 安装ffmpeg,配置环境变量

1 首先要安装brew 2 git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg 3 cd ffmpeg 4 执行脚本 ./configure --prefix=/opt/local 5 编译 sudo make ,需要提权,要不系统目录无法创建文件夹 6 安装 make install 7 安装成功,查看 ffmpeg版本 /opt/local/bin/ffmpeg -ve…

如何在 LobeChat 中使用 Ollama

本文介绍了如何在LobeChat中使用Ollama框架运行本地大型语言模型。文章详细说明了在macOS、Windows和Linux操作系统下安装和配置Ollama的步骤,并指导用户如何通过Docker容器部署Ollama。此外,文章还介绍了如何在LobeChat中安装和选择Ollama模型进行对话。Ollama 是一款强大的…

密码综合实战

这种加密本质上是换汤不换药的,我们需要有所创新,下面是我的想法(key{A}和key{B}表示的是A和B独有的秘钥): 假设现在有服务器192.168.1.1,本机扮演角色A,服务器扮演角色B,进行如下逻辑:A拥有A的专属秘钥(汉字秘钥)进行一次加密发送给B,B接受到后再用B的专属秘钥再次加…

FrontEnd性能优化.md

性能优化 性能优化\浏览器渲染原理 Get Started有这样几个问题,我们来思考下:1.我们平常浏览的网页是否是应用?2.在操作系统中的应用是如何运行的3.浏览器究竟是什么4.webkit和浏览器的关系5.浏览器是如何呈现网页的6.经典问题:从浏览器的地址栏输入一个网址直到网页内容呈…

Tita OKR 应用技巧:OKR 评分

OKR 评分价值 OKR(目标与关键成果)评分主要有以下几方面价值: 一、目标管理方面明确目标完成程度OKR评分可以直观地展现目标的达成情况。例如,一个产品团队设定了提升用户满意度的目标,通过OKR评分,可以清楚地看到用户满意度指标从初始的60%提升到了75%还是80%等具体数值…

ArmSoM RK3588/RK3576核心板,Rockchip Display 使用

1. Display简介​ RK3588 的VOP (video output process)分为4个Port:port分辨率VP0 4KVP1 4KVP2 4KVP3 1080PRK3588 VP 和各显⽰接口的连接关系: 需要注意的是,RK3588 的 HDMI 和 DP ⽀持 8K 输出,但是在 8K 输出模式下,⼀个显⽰接口需要同时占⽤ VP0 和 VP1 。所以如果产…

JNI接口--实现Java调用C++

1、JNI原理概述 通常为了更加灵活高效地实现计算逻辑,我们一般使用C/C++实现,编译为动态库,并为其设置C接口和C++接口。用C++实现的一个库其实是一个或多个类的简单编译链产物,然后暴露其实现类的构造方法和纯虚接口类。这样就可以通过多态调用到库内部的实现类及其成员方法…

Leaflet 实现离线瓦片资源 + 飞线迁徙 + 自定义标记点位实现

npm install leaflet 注意构建webpack配置module: {rules: [{test: /\.(png|jpg|gif|jpeg|svg)$/,include: /node_modules[\\/]leaflet/,use: [{loader: url-loader,options: {outputPath: static/images}}]}] } 注意外部资源代理方式proxy: {/cdn: {target: https:// + ip + :…

Training Transformers with 4-bit Integers

目录概符号说明4-bit FQTLearned Step Size QuantizationHadamard QuantizationBit Splitting and Leverage Score Sampling代码Xi H., Li C., Chen J. and Zhu J. Training transformers with 4-bit integers. NeurIPS, 2023.概 本文针对 4-bit 中训练中一些特点 (针对 transf…