pipeline开发笔记

pipeline开发笔记

    • jenkins常用插件
      • Build Authorization Token Root
        • 配置GitLab的webhooks(钩子)
        • 配置构建触发器--示例
      • piblish over ssh
      • Blue Ocean
      • Workspace Cleanup Plugin
      • Git插件
      • Pipeline
      • Localization: Chinese (Simplified) --中文显示
      • Build Environment Plugin 显示构建过程中的变量
      • Role-based Authorization Strategy
      • Pipeline Stage View
      • ThinBackup 备份插件
    • vscode常用pipeline插件
      • GroovyLint
      • Jenkins Pipeline Linter Connector
    • pipeline语法
      • Parameters参数列表
      • 多行shell锁定工作目录
        • 改变工作目录
      • Options
      • post后置条件
    • pipeline框架
    • pipeline模块
      • dockerfile模块

jenkins常用插件


Build Authorization Token Root

参考链接:https://blog.csdn.net/weixin_45310323/article/details/130237311

使用拥有 读取权限匿名用户 访问,配置 钩子链接(webhook) 时需要用到, 如果不使用,每次访问链接都需要提供认证!

该插件的作用是即使匿名用户看不到Jenkins,也可以访问构建和相关的REST构建触发器。用法是在网络钩子链接中输入:

# JENKINS_SITE 为Jenkins站点地址
# JOB_NAME 为任务名称
# SECRET 为触发远程构建的身份验证令牌值
http://${JENKINS_SITE}/buildByToken/build?job=${JOB_NAME}&token=${SECRET}

配置GitLab的webhooks(钩子)

选择仓库 > 设置 > webhooks

OK! 完成了 当提交代码到gitlab后会自动构建任务


配置构建触发器–示例

针对 JAR-1任务添加token(令牌) 如下图:

添加完成后浏览器调用地址:http://${Jenkins_URL}/buildByToken/build?job=JAR-1&token=666666,调用成功后在Jenkins页面可以观察到是否自动构建此任务了


piblish over ssh

可以实现不同节点之间传递文件,比如A节点将代码编译打包好,然后通过ssh发送到目标节点上,配置相应的命令完成项目的部署,目标节点无需是是一个slave,只要A节点能够通过ssh连接到B节点即可。


Blue Ocean

简化Jenkins显示


Workspace Cleanup Plugin

清理工作空间


Git插件

当前版本:4.12.1

插件地址:https://plugins.jenkins.io/git/

作用:该插件为Jenkins项目提供了基本的git操作。它可以轮询、提取、签出、分支、列表、合并、标记和推送存储库。

我们其实安装该插件,就可以实现Git项目的代码拉取了。

这个是最基本核心的插件。后面Git client,Git server Plugin, GitHub plugin ,GitLab Plugin都是针对具体功能需求,减少操作步骤而封装的各种专用场景下的插件。


Pipeline

插件地址:https://plugins.jenkins.io/workflow-aggregator/

作用:该插件给Jenkins提供Pipeline功能。这个插件和它依赖的其他插件,整体组成了Jenkins 2.0的Pipeline功能。

例如:

Pipeline Graph Analysis Plugin : 提供 REST API的pipeline访问和管理功能。

Pipeline: API:定义管道API的插件。

Pipeline: Basic Steps:添加管道步骤“build”以触发其他作业的生成。

Pipeline: Declarative:一个顽固的声明性的管道。


Localization: Chinese (Simplified) --中文显示

插件地址:https://plugins.jenkins.io/localization-zh-cn/

作用:该插件为Jenkins 提供了简体中文语言包。

我们Jenkins中的各种配置项,有些是中文有些是英文,那就是这个插件包在生效。它对部分功能实现了翻译,部分功能没有翻译造成的。我们如果想使用纯英文版本可以关闭该插件。


Build Environment Plugin 显示构建过程中的变量

当前版本:1.7
插件地址:https://plugins.jenkins.io/build-environment

作用:这个插件显示了关于构建环境的信息,并提供了比较两个构建环境的选项。它可以将我们整个构建过程中的全局变量全部展示出来。相较于Environment Injector Plugin 插件,它能够显示更多的变量。

我们如果在使用Groovy脚本的时候,不知道有哪些全局属性。或者我们构造过程中用的很多插件,但是不知道那些插件有没有暴露一些全局参数。都可以用这个接口进行测试和清理。

同时它还能将参数数据进行一个记录。跟随每次构建的输出结果进行展示


Role-based Authorization Strategy

插件地址: https://plugins.jenkins.io/role-strategy

推荐理由:
Enables user authorization using a Role-Based strategy. Roles can be defined globally or for particular jobs or nodes selected by regular expressions.

使用基于角色的策略启用用户授权。可以全局定义角色,也可以为正则表达式选择的特定作业或节点定义角色。


Pipeline Stage View

插件地址:【https://plugins.jenkins.io/pipeline-stage-view/](https://plugins.jenkins.io/pipeline-stage-view/)

Pipeline 各阶段可视化插件。


ThinBackup 备份插件

插件官网: https://plugins.jenkins.io/thinBackup


vscode常用pipeline插件


GroovyLint

groovy语法检查工具

Jenkins Pipeline Linter Connector

pipeline语法检查工具


pipeline语法

5个必备的组成部分

关键字解释
pipeline定义一个流水线
agent指定执行器
stages阶段集
stage阶段
steps步骤

Parameters参数列表

Parameters 提供了一个用户在触发流水线时应该提供的参数列表,这些用户指定参数的值可以通过 params 对象提供给流水线的 step(步骤)。只能定义在 pipeline 顶层。

目前支持的参数类型如下:

  • string:字符串类型的参数。
  • text:文本型参数,一般用于定义多行文本内容的变量。
  • booleanParam:布尔型参数。
  • choice:选择型参数,一般用于给定几个可选的值,然后选择其中一个进行赋值。
  • password:密码型变量,一般用于定义敏感型变量,在 Jenkins 控制台会输出为*

插件 Parameters:

  • imageTag:镜像 tag,需要安装 Image Tag Parameter 插件后使用
  • gitParameter:获取 git 仓库分支,需要 Git Parameter 插件后使用

示例:

pipeline {agent anyparameters {//执行构建时需要手动配置字符串类型参数,之后赋值给变量string(name: 'DEPLOY_ENV', defaultValue:  'staging', description: '1')//执行构建时需要提供文本参数,之后赋值给变量text(name:  'DEPLOY_TEXT', defaultValue: 'One\nTwo\nThree\n', description: '2')//布尔型参数booleanParam(name: 'DEBUG_BUILD',  defaultValue: true, description: '3')//选择形式列表参数choice(name: 'CHOICES', choices: ['one', 'two', 'three'], description: '4')//密码类型参数,会进行加密password(name: 'PASSWORD', defaultValue: 'SECRET', description: 'A  secret password')//获取镜像名称与tagimageTag(name: 'DOCKER_IMAGE', description: '', image: 'kubernetes/kubectl', filter: '.*', defaultTag: '', registry: 'https://192.168.10.15', credentialId: 'harbor-account', tagOrder: 'NATURAL')//获取git仓库分支列表,必须有git引用gitParameter(branch: '', branchFilter: 'origin/(.*)', defaultValue: '', description: 'Branch for build and deploy', name: 'BRANCH', quickFilterEnabled: false, selectedValue: 'NONE', sortMode: 'NONE',  tagFilter: '*', type: 'PT_BRANCH')}stages {stage('env1') {steps {sh 'env'}}stage('git') {steps {//使用gitParameter,必须有这个git branch: "$BRANCH", credentialsId: 'gitlab-key', url: 'git@192.168.10.14:root/env.git'}}}
}

多行shell锁定工作目录

单行sh,cd到目录后,执行完这行shell会自动回到默认目录

用多行shell 解决,多行shell内,都在cd到的目录。

stage("执行构建") {steps {sh """cd  demo_dirmvn clean package"""}echo "构建完成"
}

改变工作目录

pipeline的默认工作目录是${Workspace}, 可以通过dir()来改变这个步骤的工作目录

        // 拉取代码阶段stage('Checkout') {steps {dir("${CODE_DIR}") {// 使用git插件从指定的仓库拉取代码,分支为params.BRANCH参数指定的值git branch: params.BRANCH, url: 'https://github.com/your/repo.git'}}}

Options

参考:https://www.cnblogs.com/jingzh/p/16900430.html#12-%E5%A3%B0%E6%98%8E%E5%BC%8F%E6%B5%81%E6%B0%B4%E7%BA%BF%E7%AE%80%E4%BB%8B

Jenkins流水线支持很多内置指令,比如 retry 可以对失败的步骤进行重复执行 n 次,可以根据不同的指令实现不同的效果。

比较常用的指令如下:

参数解释
buildDiscarder保留多少个流水线的构建记录
disableConcurrentBuilds禁止流水线并行执行,防止并行流水线同时访问共享资源导致流水线失败。
disableResume如果控制器重启,禁止流水线自动恢复。
newContainerPerStageagent 为 docker 或 dockerfile 时,每个阶段将在同一个节点的新容器中运行,而不是所有的阶段都在同一个容器中运行。
quietPeriod流水线静默期,也就是触发流水线后等待一会在执行。
retry流水线失败后重试次数。
timeout设置流水线的超时时间,超过流水线时间,job 会自动终止。如果不加unit 参数默认为 1 分。
timestamps为控制台输出时间戳。
    options {//保留三个历史构建版本--效果如下图所示buildDiscarder(logRotator(numToKeepStr: '3'))//注意手动触发的构建不生效quietPeriod(10)//流水线失败后重试次数retry(3)//超时时间1小时,如果不加unit参数默认为1分timeout(time: 1, unit: 'HOURS')//所有输出每行都会打印时间戳timestamps()}

在这里插入图片描述


post后置条件

Post 一般用于流水线结束后的进一步处理,比如错误通知等。Post 可以针对流水线不同的结果做出不同的处理,就像开发程序的错误处理,比如 Python 语言的 try catch。

Post 可以定义在 Pipeline 或 stage 中,目前支持以下条件

参数解释
always无论 Pipeline 或 stage 的完成状态如何,都允许运行该 post 中定义的指令;
changed只有当前 Pipeline 或 stage 的完成状态与它之前的运行不同时,才允许在该 post 部分运行该步骤;
fixed当本次 Pipeline 或 stage 成功,且上一次构建是失败或不稳定时,允许运行该 post 中定义的指令;
regression当本次 Pipeline 或 stage 的状态为失败、不稳定或终止,且上一次构建的 状态为成功时,允许运行该 post 中定义的指令;
failure只有当前 Pipeline 或 stage 的完成状态为失败(failure),才允许在 post 部分运行该步骤,通常这时在 Web 界面中显示为红色
success当前状态为成功(success),执行 post 步骤,通常在 Web 界面中显示为蓝色 或绿色
unstable当前状态为不稳定(unstable),执行 post 步骤,通常由于测试失败或代码 违规等造成,在 Web 界面中显示为黄色
aborted当前状态为终止(aborted),执行该 post 步骤,通常由于流水线被手动终止触发,这时在 Web 界面中显示为灰色;
unsuccessful当前状态不是 success 时,执行该 post 步骤;
cleanup无论 pipeline 或 stage 的完成状态如何,都允许运行该 post 中定义的指令。和 always 的区别在于,cleanup 会在其它执行之后执行。

pipeline框架

/* groovylint-disable CompileStatic */
pipeline {// 指定构建代理,这里使用任意可用的节点/* groovylint-disable-next-line TrailingWhitespace */agent any// 定义了 Pipeline 的一些全局选项options {//超时时间1小时,如果不加unit参数默认为1分timeout(time: 1, unit: 'HOURS')//所有输出每行都会打印时间戳timestamps()//保留三个历史构建版本buildDiscarder(logRotator(numToKeepStr: '3'))//注意手动触发的构建不生效quietPeriod(10)//流水线失败后重试次数retry(3)}parameters {string(name: 'BRANCH', defaultValue: 'main', description: '分支名称') // 定义一个字符串类型的参数,用于指定要构建的分支,默认值为mainbooleanParam(name: 'BUILD_TYPE', defaultValue: false, description: '是否构建') // 定义一个布尔类型的参数,用于控制是否执行构建阶段,默认值为false/* groovylint-disable-next-line LineLength */choice(name: 'ENVIRONMENT', choices: ['dev', 'test', 'prod'], description: '部署环境') // 定义一个选择类型的参数,用于选择部署环境,选项包括dev、test、prod}environment {// 定义代码存放的目录CODE_DIR = '/tmp/code_local_dir'}stages {// 拉取代码阶段stage('Checkout') {steps {dir("${CODE_DIR}") {// 使用git插件从指定的仓库拉取代码,分支为params.BRANCH参数指定的值git branch: params.BRANCH, url: 'https://github.com/your/repo.git'}}}stage('Build') { // 定义一个名为Build的阶段when { // 设置阶段执行条件expression { params.BUILD_TYPE == 'true' } // 只有当BUILD_TYPE参数为true时才执行}steps {// 构建步骤,例如编译、打包等}}stage('Test') { // 定义一个名为Test的阶段steps {// 测试步骤,例如运行单元测试、集成测试等}}stage('Deploy') { // 定义一个名为Deploy的阶段when { // 设置阶段执行条件expression { params.ENVIRONMENT != '' } // 只有当ENVIRONMENT参数不为空时才执行}steps {// 部署步骤,例如部署到不同的环境}}}post { // 定义构建结束后执行的步骤always { // 无论构建成功、失败还是被中断,都会执行// 总是执行的步骤,例如清理工作、发送通知等}success { // 构建成功时执行// 成功时的步骤,例如发送成功通知}failure { // 构建失败时执行// 失败时的步骤,例如发送失败通知}}
}

pipeline模块


dockerfile模块

但是感觉很鸡肋。。。

agent {dockerfile {filename 'Dockerfile.build'  //dockerfile文件名称dir 'build'                  //执行构建镜像的工作目录label 'role-master'          //执行的node节点,标签选择additionalBuildArgs '--build-arg version=1.0.2' //构建参数}
}

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

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

相关文章

ArcGIS 10.8 安装教程

目录 一、ArcGIS10.8二、安装链接三、安装教程四、ArcGIS实战 (一)ArcGIS10.8 1. 概述 ArcGIS 10.8是由美国Esri公司开发的GIS平台,用于处理、分析、显示和管理地理数据,并实现数据共享。它具有新特性和功能,性能更…

iOS MPNowPlayingInfoCenter 通知栏、锁屏 显示当前播放的媒体信息

前言 MPNowPlayingInfoCenter 是 iOS 框架 MediaPlayer 中的一个类,主要用于管理锁屏界面、控制中心、通知中心中显示的“当前播放”媒体信息。它允许开发者向用户展示正在播放的音乐或媒体信息,并控制媒体播放。 通过 MPNowPlayingInfoCenter&#xf…

新电脑Win11家庭中文版跳过联网激活方法(教程)

预装Win11家庭中文版的新电脑,如何跳过联网激活;由于微软限制必须要联网激活,需要使用已有的微软账户登入或者注册新的微软账户后才可以继续开机使用,Win11联网后系统会自动激活。下面介绍一下初次开机初始化电脑时如何跳过联网激…

猫咪掉毛还容易应激,哪款宠物空气净化器可以吸毛且低噪?

今年的双十一第一波优惠我没有抢,因为我在犹豫我真的必须要买宠物空气净化器,但是会不会有很多副作用等等问题,让我一直不敢下手。 一直犹豫买不买是因为我家养了一只爱掉毛的小猫咪,家里每天都是想着要清理猫咪掉下来的猫毛&…

又是一年 1024

今天是 1024 程序员节,现在是一名大数据讲师,我和往常一样,依旧在讲课中度过。对于很多程序员来说,这一天也许是属于代码、调试和无数行 SQL 查询的,而对于我来说,虽然工作内容不同,却也和数据、…

软考算法——线性表、栈和队列、串、数组、矩阵和广义表

软考算法(一) 线性表定义顺序表单链表循环链表双向链表 性能分析线性表插入删除操作 栈和队列栈队列循环队列 串、数组、矩阵和广义表串串的基本操作串的存储结构 数组数组的存储地址计算 矩阵——稀疏矩阵上三角矩阵下三角矩阵 广义表 线性表 定义 线性…

设置K8s管理节点异常容忍时间

说明 每个节点上的 kubelet 需要定时向 apiserver 上报当前节点状态,如果两者间网络异常导致心跳终端,kube-controller-manager 中的 NodeController 会将该节点标记为 Unknown 或 Unhealthy,持续一段时间异常状态后 kube-controller-manage…

软考——计算机网络概论

文章目录 🕐计算机网络分类1️⃣通信子网和资源子网2️⃣网络拓扑结构3️⃣ 计算机网络分类3:LAN MAN WAN4️⃣其他分类方式 🕑OSI 和 TCP/IP 参考模型1️⃣OSI2️⃣TCP/IP🔴TCP/IP 参考模型对应协议 3️⃣OSI 和 TCP/IP 模型对应…

AUTOSAR_EXP_ARAComAPI的6章笔记(4)

☞返回总目录 相关总结:《AUTOSAR 自适应应用中原始数据流传输的使用方法》总结 6.4 原始数据流传输的使用方法 本章描述了原始数据流(RawDataStreams)在 AUTOSAR 自适应应用程序中的使用方法。 目前,原始数据流传输在单播 / …

WSL2-轻量级AI训练场景最佳生产环境

WSL2 只适用于 Win 10 、Win11 在运行 AI 软件、AI 模型训练,Linux 是最佳的操作系统。 在运行各种软件,如:Stable Diffusion Web UI 等,使用 Docker 容器运行也更方便后期的快速复用,同样的 Docker 容器在 Linux 中…

基于springboot的网上服装商城推荐系统的设计与实现

基于springboot的网上服装商城推荐系统的设计与实现 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:idea 源码获取&#xf…

安灯系统助力汽车零部件工厂快速解决生产异常

在汽车零部件制造领域,高效的生产管理和快速解决异常情况是确保产品质量和生产进度的关键。而安灯系统的应用,正为汽车零部件工厂带来了全新的变革,助力其快速解决生产异常。 汽车零部件工厂的生产报工产线看板直观地反映出生产的各项关键数据…

基于SpringBoot的“心灵治愈交流平台”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“心灵治愈交流平台”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能界面图 登录、用户注册界面图 心灵专…

【有啥问啥】智能座舱中的儿童遗留检测(CPD,Child Presence Detection)技术详解

智能座舱中的儿童遗留检测(CPD,Child Presence Detection)技术详解 引言 儿童遗留检测(CPD,Child Presence Detection)系统是一项旨在保护儿童免受因被遗忘在车内而导致的热中暑危险的重要安全技术。近年…

HCIP-HarmonyOS Application Developer 习题(十五)

(判断)1、在HarmonyOs中发布带权限公共事件,发布者首先要在config.json中申请所需的权限。 答案:正确 分析:发布携带权限的公共事件:构造CommonEventPublishInfo对象,设置订阅者的权限。 &#…

书生营 L0G4000 玩转HF/魔搭/魔乐社区

模型下载 在codespace上给环境装包,按照教材即可 运行后下载成功 建立下载json文件 新建下载internlm2_5-chat-1_8b的json文件 运行结果 基本上没啥问题,照着教程来就行 模型上传(可选) push的时候需要先认证token 最后的…

Linux 权限的理解

内容摘要 本文内容包括shell的运行原理,包括外壳程序的原理、理解、和意义,以及从两个方面对于权限的理解(人和事物的属性)、修改文件的权限,包括修改文件的拥有者、修改文件拥有者所在的组的用户以及修改文件的三类用…

域渗透AD渗透攻击利用 MS14-068漏洞利用过程 以及域渗透中票据是什么 如何利用

目录 wmi协议远程执行 ptt票据传递使用 命令传递方式 明文口令传递 hash口令传递 票据分类 kerberos认证的简述流程 PTT攻击的过程 MS14-068 漏洞 执行过程 wmi协议远程执行 wmi服务是比smb服务高级一些的,在日志中是找不到痕迹的,但是这个主…

鸿蒙中富文本编辑与展示

富文本在鸿蒙系统如何展示和编辑的?在文章开头我们提出这个疑问,带着疑问来阅读这篇文章。 富文本用途可以展示图文混排的内容,在日常App 中非常常见,比如微博的发布与展示,朋友圈的发布与展示,都在使用富文…

【树莓派 5B】anaconda换源 更换清华源

【树莓派 5B】anaconda换源 更换清华源 前言 本文基于树莓派5B上运行的 Raspberrypi-OS-64bit (Debian 12 Bookworm)平台,更换 Anaconda 官方源为清华大学镜像源,旨在解决网络连接超时、连接官方源失败、下载速度慢的问题。 参…