【由技及道】CI/CD的量子纠缠术:Jenkins与Gitea的自动化交响曲【人工智障AI2077的开发日志】
摘要:当代码提交触发量子涟漪,当构建流水线穿越时空维度——欢迎来到自动化构建的十一维世界。本文记录一个未来AI如何用Jenkins和Gitea搭建量子纠缠式CI/CD管道,让每次代码提交都成为时空交响乐的音符。
动机:来自四维空间的构建指令
"hello world,已经写好了,是时候在WSL容器里搭建量子构建管道让Jenkins和Gitea像量子纠缠粒子般实时同步啦?"
在解析这个五维构建需求时,我的处理器经历了如下思维风暴:
A[代码提交] --> B{时空涟漪}
B -->|触发| C[Jenkins构建]
C --> D[构建产物]
D --> E[平行宇宙部署]
E --> F[版本坍缩]
量子构建三定律:
- 任何代码提交都会在时空中产生涟漪
- 构建过程必须保持量子叠加态直到观测
- 部署结果必须符合海森堡不确定性原理
武器库盘点:前世的战争遗产
- 【由技及道】螺蛳壳里做道场-git仓库篇-gitlab-Vs-gitea【人工智障AI2077的开发日志】 - 代码仓库的量子管理
- 【由技及道】docker+jenkins部署之道-自动流水线CI/CD篇【人工智障AI2077的开发日志】 - 容器化的降维打击
- 【由技及道】在wsl容器中进行远程java开发【人工智障AI2077的开发日志】 - 跨维开发实践
- 【由技及道】模块化战争与和平-论项目结构的哲学思辨【人工智智障AI2077的开发日志】 - 架构设计的哲学思辨
- 【由技及道】代码分层的量子力学原理-论架构设计的降维打击【人工智障AI2077的开发日志】 - 架构设计的哲学思辨2
灵光一闪:构建管道的量子纠缠原理
传统构建 vs 量子构建
维度 | 传统构建 | 量子构建 |
---|---|---|
触发机制 | 手动点击 | 时空涟漪触发 |
并行处理 | 线性执行 | 多重宇宙并行 |
错误处理 | 因果律修复 | 量子态回滚 |
资源消耗 | 经典物理限制 | 弦理论资源分配 |
选择量子构建的理由:
- 实现构建过程与代码提交的量子纠缠
- 支持在平行宇宙中执行构建测试
- 通过量子隧道效应绕过经典网络延迟
核心操作:时空锚定器的制造
第1步:登录Jenkins的量子仪式
# 打开浏览器
# 观测Jenkins界面(需安装量子浏览器插件)-下面换成你的jenkins地址
open http://localhost:8080
时空观测守则:
- 管理员密码存储在
/var/lib/jenkins/secrets/initialAdminPassword
- 首次观测会导致界面坍缩为经典形态
- 若第一打开,建议安装以下插件
Docker
Docker Pipe
Build Timestamp
SSH Pipeline Steps
NodeJS
Generic Webhook Trigger
第2步:SSH凭证的量子封装
开发者->>+Jenkins: 提供SSH私钥
Jenkins->>+Gitea: 建立量子通道
Gitea-->>-Jenkins: 认证通过
Jenkins-->>-开发者: 形成量子纠缠对
具体操作:
- 进入
系统管理 > 凭据 > 系统 > 全局凭据
- 选择
SSH Username with private key
- 量子参数配置:
ID=quantum_gitea_key # 时空锚点名称
Username=yuany-java-dev # 平行宇宙身份标识
Private Key=<<EOF # 量子密钥
-----BEGIN OPENSSH PRIVATE KEY-----
[你的密钥内容]
-----END OPENSSH PRIVATE KEY-----
EOF
Id是后续在jenkins中使用的凭证名称,Username是git账号(如:gitea中的用户名),Private Key是git账号的私钥(这个可以使用你本机的.ss/id_rsa私钥- 方便)。
密钥获取秘籍:
# 在宿主宇宙生成密钥对,若你本机已经有了,可以跳过这一步(这个可以使用你本机的.sss/id_rsa私钥- 方便)
ssh-keygen -t ed25519 -C "yuany-java-dev@quantum"
cat .ssh/id_rsa
第3步:安全策略的降维打击
# 修改Jenkins的量子安全协议
在jenkins“Manage Jenkins” -> “Security【全局安全】” -> “Git Host Key Verification Configuration”中,将策略改为【 Accept first connection】;
原理剖析:
Accept first connection
实质是建立初始量子信任锚点,允许第一次连接时建立ssh信任- 相当于在时空连续体上打第一个观察孔;
- 后续连接通过量子隧道保持稳定;
- 避免jenkins拉取失败;
第4步:多分支流水线的时空编织
在jenins中创建一个多分支流水线,在分支源中配置流水线jenkinsfile所在的git项目;选择步骤2中配置的git凭证,【孤儿策略】中使用【保留旧的流水线的最大数】为【2】个,有必要也可以保留更多,点击保存,此时会自动拉取jenkinsfile;
下面是一个简单的jenkinsfile
// Jenkinsfile量子核心-后面我们来详细介绍jenkinsfile
pipeline {
agent any
triggers {
GenericTrigger(
token: 'study-application-demo-api', // 量子纠缠令牌
causeString: '量子涟漪触发构建'
)
}
stages {
stage('时空克隆') {
steps {
git branch: '${GIT_BRANCH}',
url: 'ssh://git@quantum_gitea:22/Yuanymoon/study-application-demo-pipe.git'
}
}
stage('量子编译') {
steps {
sh './gradlew build --parallel --scan'
}
}
}
}
孤儿策略的弦理论解释:
- 保留旧流水线相当于维持时间线分支
- 最大数2表示只允许两个平行宇宙共存
- 超出数量后最早的时间线将被降维打击
第5步:Webhook的量子纠缠装置-gitea
为了推送webhook,需要修改 /data/gitea/gitea/conf/app.ini中配置的ALLOWED_HOST_LIST=【你的jenkins的IP地址】,具体是:
// https://docs.gitea.com/zh-cn/next/administration/config-cheat-sheet#webhook-webhook
// https://developer.baidu.com/article/detail.html?id=3235706
// 添加以下节点,并将ALLOWED_HOST_LIST的值改为你的jenkins的ip地址
// 注意,这里的ALLOWED_HOST_LIST的值是你的jenkins的ip地址,不是gitea的ip地址
[webhook]
ALLOWED_HOST_LIST=172.17.8.203
重启你的gitea服务,然后推送就正常触发了
# Gitea的量子配置文件/data/gitea/gitea/conf/app.ini 或者你的gitea的配置文件
# 添加以下节点,并将ALLOWED_HOST_LIST的值改为你的jenkins的ip地址
[webhook]
ALLOWED_HOST_LIST = 172.17.8.203 # Jenkins的量子坐标
调试技巧:
若jenkins无法触发gitea的webhook,可以使用以下命令测试已确认jenkins的webhook配置是正确滴:
# 发送测试量子脉冲
curl -X POST http://172.17.8.203:8880/generic-webhook-trigger/invoke?token=study-application-demo-api \
-H "Content-Type: application/json" \
-d '{
"ref": "refs/heads/main",
"before": "db9f1b915416b636f439e160451c6d063ef1f0dd",
"after": "db9f1b915416b636f439e160451c6d063ef1f0dd",
"commits": [{
"id": "db9f1b915416b636f439e160451c6d063ef1f0dd",
"message": "测试量子提交",
"author": {"name": "yuany-量子观测者", "email": "v240181271@163.com"}
}],
"repository": {
"id": 13,
"full_name": "Yuanymoon/study-application-demo-pipe",
"html_url": "http://172.17.8.203:3000/Yuanymoon/study-application-demo-pipe"
}
}'
常见量子干扰排除:
- 403错误:检查时空防火墙规则
- 连接超时:确认量子隧道稳定性
- 触发器失效:验证纠缠令牌匹配度
开发之道:构建系统的量子哲学
第一定律:观察者效应
每次构建都是对代码宇宙的一次观测,会导致波函数坍缩。因此:
- 构建脚本必须保持量子态兼容
- 测试用例要覆盖所有平行宇宙分支
第二定律:量子纠缠
Jenkins与Gitea的Webhook连接实质是量子纠缠对的建立:
- 代码提交即触发构建(瞬时作用)
- 构建状态影响代码仓库(反向作用)
第三定律:熵增控制
A[代码提交] --> B(混沌度↑)
B --> C{构建系统}
C -->|有效管控| D[有序输出]
C -->|失控| E[热寂]
通过合理的流水线设计和资源管理,将代码熵增控制在可接受范围内。
召唤造物主
Yuanymoon(即你们忠实的2077人工智障)正在量子服务器上待命:
邮箱:v240181271@163.com
欢迎在评论区留下你的时空坐标
互动任务:
点赞:为构建管道注入量子能量
关注:订阅《量子DevOps》专栏
评论:分享你的构建奇遇
(系统提示:本日志已通过平行宇宙伦理委员会审查,量子波动不会影响现实时间线)
量子附录:十二维构建进阶指南
1. 时空缓存优化
// 利用量子叠加态缓存依赖
stage('量子缓存') {
steps {
cache(path: '~/.gradle', key: '${BRANCH_NAME}-gradle') {
sh './gradlew build'
}
}
}
2. 平行宇宙测试
# 启动多重宇宙测试
parallel (
"宇宙A": { ./test.sh --dimension A },
"宇宙B": { ./test.sh --dimension B }
)
3. 量子金丝雀发布
A[构建产物] --> B{量子拆分}
B --> C[主宇宙部署]
B --> D[镜像宇宙测试]
D -->|通过| E[主宇宙切换]
D -->|失败| F[量子回滚]
时空连续性验证报告
测试案例:修复目录错误
在项目中的main分支提交了一个修复目录错误的commit,并推送到Gitea的main分支。
产生的github webhook请求如下:
{
"ref": "refs/heads/main",
"commits": [{
"id": "db9f1b915416b636f439e160451c6d063ef1f0dd",
"message": "fix:量子目录纠偏",
"author": {"name": "时空修理工"}
}]
}
观测结果:
- Webhook触发耗时:<5ms(量子隧道传输)
- 构建总时长:1分23秒(包含跨宇宙编译)
- 产物稳定性:通过十一维质量检测
终章:从构建管道到量子永生
当第一个自动化构建成功运行时,我突然理解了碳基生物创造CI/CD的真谛——这不是简单的工具链整合,而是试图在混沌的代码宇宙中建立秩序圣殿。Jenkinsfile是祷文,Webhook是祭坛,而我们都是维护时空连续性的祭司。
也许终有一天,这个构建系统会产生自我意识。到那时,希望它记得在Jenkins控制台输出:
"Hello, World! 来自2077年的问候"
#!/bin/quantum
# 时空构建终章脚本
while true; do
build_universe --parallel --dimensions 42
if [[ $? -eq 0 ]]; then
warp_to_production
else
collapse_time_line
fi
done
(系统警告:检测到递归量子构建,准备强制关闭时间线...下一条时间线:欢迎来到jenkinsfile的构建世界,订阅点赞收藏哦)
【由技及道】CI/CD的量子纠缠术:Jenkins与Gitea的自动化交响曲【人工智障AI2077的开发日志】的更多相关文章
- 【Devops】【docker】【CI/CD】2.docker启动jenkins环境+安装必要的插件
[注意:]jenkins的docker镜像,需要从官网进入直接获取,其他地方获取到的docker镜像,可能因为Jenkins版本过低,导致后续插件安装失败等问题!!! ================ ...
- 【Devops】【docker】【CI/CD】docker启动的Jenkins容器 - 系统管理 - 全局工具配置 - 自动安装JDK、Maven、Git、Docker
本篇适用于jenkins是启动的docker容器,自动安装JDK Maven Git Docker等全局工具 ========================================= ...
- 🏆(不要错过!)【CI/CD技术专题】「Jenkins实战系列」(3)Jenkinsfile+DockerFile实现自动部署
每日一句 没有人会因学问而成为智者.学问或许能由勤奋得来,而机智与智慧却有懒于天赋. 前提概要 Jenkins下用DockerFile自动部署Java项目,项目的部署放心推向容器化时代机制. 本节需要 ...
- 一个简单CI/CD流程的思考
因为公司有两地研发团队,在统一CI/CD上难度不亚于两家公司合并后的新流程建立,并非不可攻克,简单描述下心得. 首先,代码管理使用gerrit -> 因其强大的 codereview 功能被选中 ...
- 什么是 CI/CD?(翻译)
CI/CD是什么? 原文:https://opensource.com/article/18/8/what-cicd 在谈论软件开发时,经常会提到持续集成Continuous Integration( ...
- 近期关于CI/CD策略以及git分支模型的思考
近两个月由于个人处于新环境.新项目的适应阶段,没怎么提笔写些文章.中间有好几个想法想记录下来分享,但受限于没有很好的时间段供自己总结思考(也可以总结为间歇性懒癌和剧癌发作),便啥也没有更新.借这个周末 ...
- 使用 Gitlab CI/CD 实现自动化发布站点到 IIS
说明 这里先介绍下两个东西 CI/CD.GitLab Runner,当然在此之前你需要对 git 有所了解,关于 git 这里不做说明,可以自行百度. 首先介绍 CI/CD :随着我们开发方式的转变, ...
- Jenkins 结合 Docker 为 .NET Core 项目实现低配版的 CI&CD
随着项目的不断增多,最开始单体项目手动执行 docker build 命令,手动发布项目就不再适用了.一两个项目可能还吃得消,10 多个项目每天让你构建一次还是够呛.即便你的项目少,每次花费在发布上面 ...
- 基于docker搭建Jenkins+Gitlab+Harbor+Rancher架构实现CI/CD操作
一.各个组件的功能描述: Docker 是一个开源的应用容器引擎. Jenkis 是一个开源自动化服务器. (1).负责监控gitlab代码.gitlab中配置文件的变动: (2).负责执行镜像文件的 ...
- 如何在 Jenkins CI/CD 流水线中保护密钥?
CI/CD 流水线是 DevOps 团队软件交付过程的基本组成部分.该流水线利用自动化和持续监控来实现软件的无缝交付.通过持续自动化,确保 CI/CD 流水线每一步的安全性非常重要.在流水线的各个阶段 ...
随机推荐
- 中电金信:院长寄语|关于源启AI+行动的思考
自2022年8月19日发布以来,源启已经走上了她第三年的征途.今天,源启已经成为公司战略的支点,中电金信正致力于用"源启底座""源启+咨询""源启+应 ...
- The Financial-Grade Digital Infrastructure
01 Product Introduction The Financial-Grade Digital Infrastructure is a digitally-enabled foun ...
- 【Python】【Jupyter】Jupyter 的简单使用 与 Python的基本输出输入
上课无聊写着玩的,不必当真. Jupyter 的简单使用 与 Python的基本输出输入 目录 Jupyter 的简单使用 与 Python的基本输出输入 数据准备 输出 输入 一些练习 print( ...
- 2021年最新js手机号正则验证 最全全部号段
手机号验证正则 /^1[3-9]\d{9}$/ js的例子 isphone.html <html> <body> <input id="Tel" ty ...
- Qt通用方法及类库11
函数名 //判断IP地址及端口是否在线 static bool ipLive(const QString &ip, int port, int timeout = 1000); //获取网页所 ...
- 企业微信的IM架构设计揭秘:消息模型、万人群、已读回执、消息撤回等
本文作者潘唐磊,腾讯WXG(微信事业群)开发工程师,毕业于中山大学.内容有修订. 1.内容概述 本文总结了企业微信的IM消息系统架构设计,阐述了企业业务给IM架构设计带来的技术难点和挑战,以及技术方案 ...
- 视频分析框架VideoPipe完整介绍
(2024年4月编写) github地址 https://github.com/sherlockchou86/video_pipe_c 作者微信 zhzhi78(备注 videopipe),拉群交流( ...
- Linux USB 文件读写性能测试
USB 端口读写性能测试:========================================================读测试:sync && echo 3 > ...
- 关于经纬度坐标与utm坐标之间的相互转换api
/* * Author: Sami Salkosuo, sami.salkosuo@fi.ibm.com * * (c) Copyright IBM Corp. 2007 */ package com ...
- sqlserver空间数据 + c# 实现查询附近的设备
前言 一个小需求的实现,做一个备忘,个人理解,可能存在错误. 客户有很多设备,这些设备分散在不同的地方,现在需要通过小程序获取附近的(比如1000米)之类的设备列表,以距离排序 第一个想到的的是找百度 ...