Tekton系列之实践篇-从触发到完成的完整执行过程
以下介绍的是基于 Gitee 仓库 的 Tekton 工作流程
操作流程
定义task
克隆代码的task
# task-clone.yaml
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:name: git-clone
spec:workspaces:- name: source # 工作目录params:- name: repo-url # 你的 Gitee 仓库地址type: stringdefault: "https://gitee.com/wyxsxx/wyx123.git"- name: branch # 分支名称type: stringdefault: "main"steps:- name: cloneimage: alpine/git # 使用轻量级 Git 镜像script: |git clone -b $(params.branch) $(params.repo-url) $(workspaces.source.path)/app
执行自定义脚本的 Task
# task-script.yaml
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:name: run-script
spec:workspaces:- name: sourcesteps:- name: run-custom-scriptimage: alpine:3.15 # 按需替换为 Python/Node.js 等镜像workingDir: "$(workspaces.source.path)/app"script: |# 这里执行你的自定义脚本(示例:打印文件列表)echo "=== 文件列表 ==="ls -lecho "==============="
定义 Pipeline
# pipeline.yaml
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:name: simple-demo-pipeline
spec:workspaces:- name: shared-data # 共享存储目录params:- name: git-urltype: stringdefault: "https://gitee.com/wyxsxx/wyx123.git"tasks:- name: clone-repotaskRef:name: git-cloneworkspaces:- name: sourceworkspace: shared-dataparams:- name: repo-urlvalue: "$(params.git-url)"- name: run-scripttaskRef:name: run-scriptrunAfter: ["clone-repo"] # 依赖 clone 任务workspaces:- name: sourceworkspace: shared-data
运行 Pipeline
# pipelinerun.yaml
apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:generateName: simple-demo-run-
spec:pipelineRef:name: simple-demo-pipelineworkspaces:- name: shared-datavolumeClaimTemplate: # 自动创建 PVCspec:accessModes:- ReadWriteOnceresources:requests:storage: 1Giparams:- name: git-urlvalue: "https://gitee.com/wyxsxx/wyx123.git"
执行和验证
# 部署 Task 和 Pipeline
kubectl apply -f task-clone.yaml
kubectl apply -f task-script.yaml
kubectl apply -f pipeline.yaml# 触发流水线
kubectl create -f pipelinerun.yaml
查看运行状态
[root@k8s-master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
affinity-assistant-a953a26f33-0 0/1 Terminating 0 25s
simple-demo-run-18ppnc-clone-repo-fg8kp-pod-j2vgt 0/1 Completed 0 25s
simple-demo-run-18ppnc-run-script-vprlh-pod-kqhxx 0/1 Completed 0 14s
[root@k8s-master ~]# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pvc-a953a26f33 Bound pvc-46ceb060-aa14-488c-a2df-f2da70643786 1Gi RWO local-path 47s
[root@k8s-master ~]# kubectl get pod -w
NAME READY STATUS RESTARTS AGE
simple-demo-run-18ppnc-clone-repo-fg8kp-pod-j2vgt 0/1 Completed 0 58s
simple-demo-run-18ppnc-run-script-vprlh-pod-kqhxx 0/1 Completed 0 47s
^C[root@k8s-master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 108m
[root@k8s-master ~]# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pvc-a953a26f33 Bound pvc-46ceb060-aa14-488c-a2df-f2da70643786 1Gi RWO local-path 102s
实时查看日志
[root@k8s-master tekton-test]# tkn pipelinerun logs -f
? Select pipelinerun: [Use arrows to move, type to filter]
> simple-demo-run-1697gz started 1 second agosimple-demo-run-18ppnc started 2 minutes ago
dashbord查看是否执行成功

流程图解
+---------------------+
| PipelineRun 触发 |
+---------------------+
|
V
+---------------------+
| 1. clone-repo |
| - 克隆代码到 PVC |
+---------------------+
|
V
+---------------------+
| 2. run-script |
| - 执行自定义脚本 |
+---------------------+
分布流程详解
1.pipelinerun触发
用户执行kubectl create -f pipelinerun.yaml
tekton行为:
- 创建pipelinerun实例
- 解析关联的pipeline
- 自动创建PVC用于共享工作目录
2.task顺序执行
2.1 克隆代码
集群内:
- 创建taskrun
- 生成pod
pod内操作:
# 容器内执行的实际命令
git clone -b main https://gitee.com/wyxsxx/wyx123.git /workspace/shared-data/app
2.2 执行脚本
集群内操作:
- 前一个task(clone-repo)成功后,创建taskrun(run-script)
- 生成pod(run-script-pod)
pod内操作:
# 进入工作目录并执行脚本
cd /workspace/shared-data/app
echo "=== 文件列表 ==="
ls -l
3.资源清理
1. Workspaces 共享存储
- PVC 自动创建:
spec:pipelineRef:name: simple-demo-pipelineworkspaces:- name: shared-datavolumeClaimTemplate: # 自动创建 PVCspec:storageClassName: local-pathaccessModes:- ReadWriteOnceresources:requests:storage: 1Gi
2. 依赖控制
- Pipeline 任务顺序:
克隆完成 → PVC 数据就绪 → 触发脚本执行
3. 错误处理机制
- 失败重试
retries: 2 # 失败后自动重试次数
- 超时控制
timeout: 30m # 超过30分钟则终止任务
四、实际执行日志示例
查看 PipelineRun 状态
[root@k8s-master tekton-test]# tkn pipelinerun list
NAME STARTED DURATION STATUS
simple-demo-run-1697gz 12 minutes ago 16s Succeeded
simple-demo-run-18ppnc 14 minutes ago 18s Succeeded
相关文章:
Tekton系列之实践篇-从触发到完成的完整执行过程
以下介绍的是基于 Gitee 仓库 的 Tekton 工作流程 操作流程 定义task 克隆代码的task # task-clone.yaml apiVersion: tekton.dev/v1beta1 kind: Task metadata:name: git-clone spec:workspaces:- name: source # 工作目录params:- name: repo-url # 你的 Gitee 仓库地址…...
【简单学习】Prompt Engineering 提示词工程
一、Prompt 1、Prompt 是什么? Prompt 是一种人为构造的输入序列,用于引导 GPT 模型根据先前输入的内容生成相关的输出。简单来说,就是你向模型提供的 “提示词”。 在 ChatGpt 中,我们可以通过设计不同的 prompt,让…...
neo4j删除所有数据
neo4j删除所有数据 一次性删除 MATCH (n) DETACH DELETE n ;分批次删除 先删除关系 MATCH ()-[r]->()WITH r LIMIT 100000DELETE rRETURN count(r)在删除节点 MATCH (n)WITH n LIMIT 100000DELETE nRETURN count(n)验证 查询节点总数 MATCH (n) RETURN count(n) AS node…...
零基础入门网络爬虫第5天:Scrapy框架
4周 Srapy爬虫框架 不是一个简单的函数功能库,而是一个爬虫框架 安装:pip install scrapy 检测:scrapy -h Scrapy爬虫框架结构 爬虫框架 爬虫框架是实现爬虫功能的一个软件结构和功能组件集合爬虫框架是一个半成品,能够帮助…...
ARCGIS PRO DSK 栅格数据(Raster)
ArcGIS Pro 中与栅格相关的功能可以在两个单独程序集中的两个命名空间中找到。 1、ArcGIS.Core.dll 中的 ArcGIS.Core.Data.Raster 命名空间提供了栅格类和成员,用于处理栅格数据集、内存栅格、像素块和光标。 2、ArcGIS.Desktop.Mapping.dll 中的 ArcGIS.Desktop.M…...
C#设计模式快速回顾
知识点来源:人间自有韬哥在,豆包 目录 一、七大原则1. 单一职责原则 (Single Responsibility Principle)2. 开放封闭原则 (Open-Closed Principle)3. 里氏替换原则 (Liskov Substitution Principle)4. 接口隔离原则 (Interface Segregation Principle)5…...
分页查询互动问题(用户端)
文章目录 概要整体架构流程技术细节小结 概要 需求分析以及接口设计 技术细节 1.Controller层 GetMapping("/page")ApiOperation("分页查询问题")public PageDTO<QuestionVO> queryQuestionPage(QuestionPageQuery query){return questionService…...
【全队项目】智能学术海报生成系统PosterGenius(项目介绍)
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏:🏀大模型实战训练营_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…...
P5356 [Ynoi Easy Round 2017] 由乃打扑克 Solution
Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1,a2,⋯,an),有 m m m 个操作分两种: add ( l , r , x ) \operatorname{add}(l,r,x) add(l,r,x):对每个 i ∈ [ l , r ] i\in[l,r] i∈[l,r] 执行 …...
【线程安全问题的原因和方法】【java形式】【图片详解】
在本章节中采用实例图片的方式,以一个学习者的姿态进行描述问题解决问题,更加清晰明了,以及过程中会发问的问题都会一一进行呈现 目录 线程安全演示线程不安全情况图片解释: 将上述代码进行修改【从并行转化成穿行的方式】不会出…...
MySQL-----视图与索引
目录 视图 1.视图 2.操作 11.索引 1.定义 2.优缺点: 3.分类 4.索引的设计原则 5.索引的使用 作业 视图 1.视图 ❓如果需要在原表中隐藏部分字段时,怎么办? 视图 📖视图: 是一个没有存储任何数据的表,可以对其CRUD视图…...
【差分隐私相关概念】约束下的列联表边缘分布计算方法
列联表及其边缘分布的详细解释 一、列联表的定义 列联表(Contingency Table) 是一种用于表示 多个分类变量联合分布 的表格。其核心是通过多维数组记录不同属性组合的频次。以下是关键点: 分类属性: 设有 k k k 个分类属性 A …...
解决IDEA中maven找不到依赖项的问题
直接去官网找到对应的依赖项jar包,并且下载到本地,然后安装到本地厂库中。 Maven官网:https://mvnrepository.com/ 一、使用mvn install:install-file命令 Maven提供了install:install-file插件,用于手动将jar包安装到本地仓库…...
pyside6的QGraphicsView体系,当鼠标位于不同的物体,显示不同的右键菜单
代码: # 设置样本图片的QGraphicsView模型 from PySide6.QtCore import Qt, QRectF, QObject from PySide6.QtGui import QPainter, QPen, QColor, QAction, QMouseEvent from PySide6.QtWidgets import QGraphicsView, QGraphicsScene, QGraphicsPixmapItem, QGra…...
Python自动化测试 之 DrissionPage 的下载、安装、基本使用详解
Python自动化测试 之 DrissionPage 使用详解 🏡前言:一、☀️DrissionPage的基本概述二、 🗺️环境安装2.1 ✅️️运行环境2.2 ✅️️一键安装 三、🗺️快速入门3.1 页面类🛰️ChromiumPage🛫 SessionPage&…...
Java替换jar包中class文件
在更新java应用版本的运维工作中,由于一些原因,开发没办法给到完整的jar包,这个时候,就可以只将修改后的某个Java类的class文件替换掉原来iar包中的class文件,重新启动服务即可: 1、将jar包和将要替换的cl…...
unix网络编程
unix网络编程 AI出来以后,软件不可能找到工作的,就算找到了也在走下坡路。再过几年,机器人发展起来,连流水线都找不到。人为什么整体不值钱,每个部位却很值钱。你说我初中辍学就去开直播结局会不会比现在好。 更新in…...
常考计算机操作系统面试习题(一下)
目录 操作系统基本类型 操作系统的功能 操作系统的主要任务 进程与线程 进程状态转变 内存管理 文件系统与文件管理 虚拟存储器 设备管理 磁盘调度 死锁 信号量机制 文件打开与管理 进程与线程的互斥与同步 进程同步 进程调度 文件分配磁盘块的方法 程序执行…...
2025_0321_生活记录
刚刚写完待会儿早上要汇报的文档,看了一眼时间,现在已经是凌晨2点多了。一直说要早睡,但是一直都没做到。。。算了,不苛求自己了。 昨天是春分,春分秋分,昼夜平分。不知不觉就到春天了,但房间里…...
三层网络 (服务器1 和 服务器2 在不同网段)
服务器1 和 服务器2 在不同网段,并且通过三层交换机实现通信 1. 网络拓扑 假设网络拓扑如下: 服务器1: mac0:IP 地址 192.168.1.10/24,网关 192.168.1.1 mac1:IP 地址 10.0.1.10/24,网关 10.0…...
AI Tokenization
AI Tokenization 人工智能分词初步了解 类似现在这个,一格子 一格子,拼接出来的,一行或者一句,像不像,我们人类思考的时候组装出来的话,并用嘴说出来了呢。...
关于大数据的基础知识(四)——大数据的意义与趋势
成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于大数据的基础知识(四&a…...
某视频的解密下载
下面讲一下怎么爬取视频,这个还是比小白的稍微有一点绕的 首先打开网址:aHR0cDovL3d3dy5wZWFydmlkZW8uY29tL3BvcHVsYXJfNA 首页 看一下: 有一个标题和一个href,href只是一个片段,待会肯定要拼接, 先找一…...
Day20-前端Web案例——部门管理
目录 部门管理1. 前后端分离开发2. 准备工作2.1 创建Vue项目2.2 安装依赖2.3 精简项目 3. 页面布局3.1 介绍3.2 整体布局3.3 左侧菜单 4. Vue Router4.1 介绍4.2 入门4.3 案例4.4 首页制作 5. 部门管理5.1部门列表5.1.1. 基本布局5.1.2 加载数据5.1.3 程序优化 5.2 新增部门5.3…...
从切图仔到鸿蒙开发01-文本样式
从切图仔到鸿蒙开发01-文本样式 本系列教程适合 HarmonyOS 初学者,为那些熟悉用 HTML 与 CSS 语法的 Web 前端开发者准备的。 本系列教程会将 HTML/CSS 代码片段替换为等价的 HarmonyOS/ArkUI 代码。 页面结构 HTML 与 ArkUI 在 Web 开发中,HTML 文档结…...
菱形虚拟继承的原理
一 :菱形继承的问题 普通的菱形继承存在数据冗余和二义性的问题 ,如下代码: class Person { public:string _name; //姓名 };class Student : public Person { protected:int _num; //学号 };class Teacher : public Person { protected:int…...
【数据结构】C语言实现树和森林的遍历
C语言实现树和森林的遍历 导读一、树的遍历二、森林的遍历2.1 为什么森林没有后序遍历?2.2 森林中存不存在层序遍历?三、C语言实现3.1 准备工作3.2 数据结构的选择3.3 树与森林的创建3.4 树与森林的遍历3.4.1 先根遍历3.4.2 后根遍历3.4.3 森林的遍历3.5 树与森林的销毁3.6 算…...
第四天 开始Unity Shader的学习之旅之Unity中的基础光照
Unity Shader的学习笔记 第四天 开始Unity Shader的学习之旅之Unity中的基础光照 文章目录 Unity Shader的学习笔记前言一、我们是如何看到这个世界的1. 光源2.吸收和散射3.着色 二、标准光照模型1. 自发光2. 高光反射① Phong模型② Blinn-Phong模型 3.漫反射4.环境光 总结 前…...
基于SpringBoot的“社区居民诊疗健康管理系统”的设计与实现(源码+数据库+文档+PPT)
基于SpringBoot的“社区居民诊疗健康管理系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统模块功能结构图 局部E-R图 系统首…...
React Native集成到现有原生Android应用
使用React Native(以下简称RN)从头开始制作一个新的应用会是一个非常好的选择。但如果只想给现有的原生应用中添加一两个视图或是业务流程,RN也同样不在话下。只需简单几步,就可以给原有应用加上新的基于RN的特性、画面和视图等。 一、核心概念 把 React Native 组件集成…...
