【由技及道】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 流水线每一步的安全性非常重要.在流水线的各个阶段 ...
随机推荐
- 理解 ASP.NET Core:Cookie 认证
理解 ASP.NET Core:Cookie 认证 ASP.NET Core 内置提供了基于 Cookie 的认证支持.在使用 Cookie 验证的时候,相关的三要素: 认证模式名称:CookieAu ...
- 部署docker-registry +ui , 使用ansible部署docker实例
#部署docker-registry +ui , 使用ansible部署docker实例 docker registry 配置域名证书, 用户密码认证, 轻量UI shell部署docker-regi ...
- Git+Gitee使用分享
Git+Gitee快速入门 创建仓库 初始化本地仓库 验证本地git是否安装好 打开cmd窗口,输入git 这样就OK. Git 全局设置:(只需要设置一次) 这台电脑如果是第一次使用 ...
- 【shell】远程执行shell|多节点并行执行shell|远程执行注意
目录 前提条件 shell远程执行 多节点上并行执行命令的三种方法 方法1 使用bash执行命令 方法2 使用clustershell执行命令--还能收集结果 方法3 使用pdsh 执行命令 远程执行 ...
- git log 常用方法
• git log --all 查看所有分支的历史• git log --all --graph 查看图形化的 log 地址• git log --oneline 查看单行的简洁历史.• git lo ...
- WW中文地名标注:输出*.wwp和*.wpl文件
链接1:WW中文地名标注工具----3月4日更新增加OZI航点航迹读入 链接2:中文地标库终结者---------WW中的地名/地标中文化(含40万条中文地名)3月4日更新 链接3:地图浏览器
- HUAWEI MindStudio安装配置
HUAWEI MindStudio安装配置 官网: 链接 安装流程 获取软件包 软件包 说明 获取链接 MindStudio_{version}_linux.tar.gz MindStudio软件包, ...
- vue基础4
Q:1.动画的使用方法以及动画库的使用方式 2.vue中的指令有哪些? 3.vue中生命周期钩子函数有哪些?分别代表什么含义? 4.filter的语法是什么? 5.computed的特点是什么? 6. ...
- Solution Set -「NOIP Simu.」20221003
\(\mathscr{A}\sim\) 二分图排列 定义一个数列 \(\{a_n\}\) 合法, 当且仅当无向图 \(G=(\{1..n\},\{(i,j)\mid i<j\land a_i ...
- 详解 IntelliJ IDEA 配置和启动maven项目步骤
一 .从svn中检出web项目: 1.如果是maven项目:首先配置仓库 2.从svn中检出maven项目: 3.检查项目是否是maven项目,如果不是转化成maven,然后点击,更新jar 二.配置 ...