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语法
      • 多行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步骤

多行shell锁定工作目录

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

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

stage("执行构建") {
    steps {
    sh """
    cd  demo_dir
    mvn 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: '分支名称') // 定义一个字符串类型的参数,用于指定要构建的分支,默认值为main
        booleanParam(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' //构建参数
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vscode离线状态ssh连接不断输入密码登不上:配置commit_id

如题,vscode在一个离线服务器上,通过remote-ssh登录远程服务器,不断弹出密码框,总是进不去,后来了解到主要是不同vscode版本需要下载对应抑制commit-id的vscode-server-linux-x64.tar.gz包。 1)vscode, 点…

Jupyter Notebook汉化(中文版)

原版jupyter notebook是英文的,想要将其改为中文 在jupyter notebook所在环境输入以下命令 pip install jupyterlab-language-pack-zh-CN打开jupyter notebook,在设置语言中将其设置为中文

提升小学语文教学效果的思维导图方法

众所周知,教学不仅仅是站在讲台上传授知识,它还包括了备课、评估学生学习成果以及不断调整教学方法等多个环节。在面对教学中的各种挑战时,思维导图可以成为解决这些问题的有力工具。思维导图是一种利用图形来组织和表达发散性思维的工具&…

【DBA Part01】国产Linux上安装Oracle进行数据迁移

内容如下: 1.1.生产环境RHEL/OEL Linux8Oracle11gR2安装配置 1.2.国产麒麟操作系统Oracle11gR2安装配置 1.3.国产麒麟操作系统Oracle11gR2 RAC集群安装配置 1.4.Oracle11gR2迁移到国产麒麟操作系统(单机/RAC) 本阶段课程项目需求说明&am…

Spring配置/管理bean-IOC(控制反转) 非常详细!基于XML及其注解!案例分析! 建议复习收藏!

目录 1.Spring配置/管理bean介绍 2.基于XML配置bean 2.1基于id来获取bean对象 2.2基于类型获取bean对象 2.3通过指定构造器配置bean对象 2.4通过p名称空间配置bean 2.5通过ref配置bean(实现依赖注入) 2.6注入内部Bean对象,依赖注入另一种方式 2.7 注入集合…

PCL 基于距离阈值去除错误对应关系

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 获取初始对应点对 2.1.2 基于距离的对应关系筛选函数 2.1.3 可视化函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实…

批量处理文件权限:解决‘/usr/bin/chmod: Argument list too long’的有效方法

批量处理文件权限:解决‘/usr/bin/chmod: Argument list too long’的有效方法 错误原因解决方案1. 分批处理2. 使用xargs3. 增加ARG_MAX限制4. 使用脚本 结论 在Linux系统中,有时你可能会遇到这样的错误消息:“/usr/bin/chmod: Argument lis…

大数据之hive(分布式SQL计算工具)加安装部署

1.分布式SQL计算: 对数据进行统计分析, SQL是目前最为方便的编程工具. 2.hive:主要功能: 将 SQL语句翻译成MapReduce程序运行,提供用户分布式SQL计算能力 3.构建分布式SQL计算:(hive核心组件) 需要有: 一:元数据管理功能, 即:数据位置,数据结构,等对数…

SpringBoot篇(二、制作SpringBoot程序)

目录 一、代码位置 二、四种方式 1. IDEA联网版 2. 官网 3. 阿里云 4. 手动 五、在IDEA中隐藏指定文件/文件夹 六、复制工程-快速操作 七、更改引导类别名 一、代码位置 二、四种方式 1. IDEA联网版 2. 官网 官网制作:Spring Boot 3. 阿里云 阿里云版制…

HTTP和RPC通信协议

在软件开发中,通信协议扮演着关键的角色,它们定义了不同系统或组件之间进行通信的规则和方式。HTTP(Hypertext Transfer Protocol)和RPC(Remote Procedure Call Protocol)是两种常见的通信协议。然而RPC 和…

开源模型应用落地-Qwen2.5-7B-Instruct与vllm实现推理加速的正确姿势-Gradio

一、前言 目前,Qwen模型已经升级到了2.5版本。无论是语言模型还是多模态模型,它们都是在大规模的多语言和多模态数据上进行预训练的,并通过高质量的数据进行后期微调,以更好地符合人类的需求。 Gradio作为一个强大的工具&#xff…

Windows--使用node.js的免安装版本

原文网址:Windows--使用node.js的免安装版本_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Windows下如何使用node.js的免安装版本。 下载 1.访问官网 https://nodejs.org/en 记住这个版本号,这个是长期支持的版本。 2.找到压缩包 点击其他下载&#…

Verilog基础:层次化标识符的使用

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 一、前言 Verilog HDL中的标识符(identifier)是一个为了引用而给一个Verilog对象起的名字,分为两大类:普通标识符大类和层次化标识符大类。…

【OpenCV】人脸识别方法

代码已上传GitHub:plumqm/OpenCV-Projects at master EigenFace、FisherFace、LBPHFace 这三种方法的代码区别不大所以就一段代码示例。 EigenFace与FisherFace 1. 将人脸图像展开为一维向量,组成训练数据集 2. PCA(EigenFace)或…

Spring MVC 原理与源码

Spring MVC 整体代码量有 5w 行,通过本专栏,可以快速的研读核心部分的代码,节省你的时间。 DispatcherServlet 的流程处理如下图: 但是随着前后端分离,后端大多提供 Restful API ,里面的 ViewResolver 和 …

word怎么清除格式,Word一键清除所有格式教程

你是否曾在编辑Word文档时遇到过复制内容时格式混乱的情况?别担心,这只需要清除一下格式就可以了,很多朋友还不知道word怎么清除格式,下面小编就来给大家讲一讲word一键清除所有格式的方法教程,操作非常简单,有需要的…

02电力电子技术简介

电力电子技术简介 第一章主要是做通识性的介绍,介绍电力电子涉及的基本概念、学习方法和关联学科。最重要的是希望大家能理解电力电子在现实生活中的广泛应用。这一章简介主要分三部分来介绍。首先是概要性的通盘介绍。然后会通过力电子技术性的内容来了解一些拓扑…

用Python将Office文档(Word、Excel、PowerPoint)批量转换为PDF

在处理不同格式的Office文档(如Word、Excel和PowerPoint)时,将其转换为PDF格式是常见的需求。这种转换不仅确保了文件在不同设备和操作系统间的一致性显示,而且有助于保护原始内容不被轻易修改,非常适合于正式报告、提…

InnoDB引擎(架构,事务原理,MVCC详细解读)

目录 架构分析 逻辑存储结构​ 内存结构​ Buffer Pool​ ChaneBuffer 自适应哈希​ LogBuffer​ 磁盘结构​ 后台线程​ 事务原理​ redolog日志 undolog日志​ MVCC​ 三个隐藏字段​ undolog版本链 readview​ RC(读已提交原理分析)​ RR(可重复读原理分析…

yolov8-ultralytics-利用TP、TN、FP、FN添加mIoU指标

在文件ultralytics/utils/metrics.py中的ConfusionMatrix类里 tp_fp 函数下方添加函数tp_fp_fn: def tp_fp_fn(self):"""Returns true positives, false positives and false negative."""tp self.matrix.diagonal()fp self.matri…