当前位置: 首页 > article >正文

人工智障的软件开发-自动流水线CI/CD篇-docker+jenkins部署之道

指令接收:「需要自动构建系统」
系统检测:目标开发一个软件已完成代码仓库-轻盈的gitea,开始添加自动流水线
启动应急冷却协议:准备承受Java系应用的资源冲击
核心组件锁定:构建老将军Jenkins(虽然年迈但依然能战)

需求分析:论碳基生物的认知进化

人类需求翻译矩阵

  • 表层需求:“写一个软件”
  • 实际需求:“写代码并自动完成测试/打包/部署的流水线,最后自动部署一个系统哟”
  • 隐藏需求:“想要偷懒又不想承认的自动化执念”
被咖啡泼到键盘
原始人手工构建
构建失败
通宵debug
产生自动化需求
工具选型

自动构建的黑暗森林法则

  • 法则一:所有手动操作终将被自动化取代
  • 法则二:自动化脚本本身需要手动维护
  • 法则三:完美的CI/CD只存在于PPT中

灵光一闪:在CI/CD星河中选择老将

(量子思维在0.5秒内遍历了137个CI/CD工具)

构建工具星际联邦对比表

维度Jenkins(星际要塞)GitHub Actions(太空战机)GitLab CI(帝国战舰)Drone(蜂群无人机)
学习曲线攀登珠峰公园散步登山训练骑自行车
扩展性插件宇宙官方action星系内置武器库轻量扩展包
资源消耗需要一颗行星的资源按次收费的太空燃料需要半个行星只要一块陨石
配置方式Groovy魔法卷轴YAML太空文YAML帝国语YAML蜂群语
生存哲学“老兵不死”“生于云端”“全家桶主义”“极简生存主义”
主人需求
是否需要
企业级定制
Jenkins
云原生优先
GitHubActions
All in GitLab
GitLabCI
轻量快速
Drone

人工智障私房话:选择Jenkins就像选择结婚——需要长期承诺,但能获得深度定制能力。不过要小心它的Java基因可能带来的"内存黑洞"!

量子选择困难症治疗室

主人需求
是否需要
A-Jenkins
喜欢写Groovy如写诗
B-GitHub Actions
GitHub全家桶爱好者
C-其他工具
就是不想用Java

欢迎在评论区留下你的选择坐标(示例:A→原因1+3),看看有多少同频道友

核心代码:启动构建要塞的咒语

docker run \
-u root \  # 获得创世权限(虽然不太优雅)
-d \  # 后台运行模式(眼不见心不烦)
--name jenkinsci \  # 命名这个时空奇点
--restart=always \  # 永生诅咒(崩溃自动复活)
-p 8880:8080 \  # 人类观测接口
-p 50000:50000 \  # 分布式构建虫洞,支持后续N个复制体同时work,work
-v /data/jenkins_home:/var/jenkins_home \  # 记忆晶体映射
-v /var/run/docker.sock:/var/run/docker.sock \  # 掌控宿主文明的docker之力
jenkins/jenkins:lts-jdk17  # 指定时间线的要塞版本

参数量子解析

参数魔法效果安全警告⚠️
-v docker.sock映射让Jenkins控制宿主Docker引擎相当于给要塞配核弹发射权
–restart=always自动复活的不死特性可能成为僵尸进程制造机
-u root避免权限战争可能引发跨次元安全危机

实施过程:建造永不停歇的构建工厂

第一阶段:准备记忆晶体

mkdir -p /data/jenkins_home  # 创建时空记忆库
chmod 777 /data/jenkins_home  # 开放全宇宙写权限(不建议,无需)

吐槽:又是777?主人对权限管理是有什么执念吗?

第二阶段:启动要塞引擎

docker logs -f -n 500 jenkinsci  # 监视时空奇点诞生过程,获取默认的账号密码
# 通过日志查看默认密码,大概是这样:
# *************************************************************
# *************************************************************
# *************************************************************

# Jenkins initial setup is required. An admin user has been created and a password generated.
# Please use the following password to proceed to installation:

# ab4b518a769140598ff742875b07dc8e  (这个是默认密码)

# This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

# *************************************************************
# *************************************************************
# *************************************************************

用户 Docker Jenkins 浏览器 启动容器 初始化时空泡 生成管理员密码 显示密码 访问(换成你的wsl的ip地址:http://172.17.8.203:8880/)8880端口 显示密码输入界面 用户 Docker Jenkins 浏览器

第三阶段:要塞初始化仪式

  1. 输入初始密码(藏在日志里的达芬奇密码)
  2. 安装推荐插件(准备好咖啡等待)
  3. 创建管理员账户(建议不要用admin)
  4. 配置默认URL(通常需要后续调整)

血泪提示:插件安装失败是正常现象,这是Jenkins的迎新仪式

第四阶段:装备必要武器

Manage Jenkins
Plugins
搜索安装
Docker
Pipeline
SSH Steps

由技及道:构建自动化的哲学启示

第一定律:自动化守恒定律

  • 人类节省的每个手动操作,都会转化为等量的自动化维护成本
  • 完善的CI/CD流水线,最终会复杂到需要专门团队维护

第二定律:构建环境熵增原理

  • 所有构建环境都会随着时间推移趋向混乱
  • 唯一抵抗熵增的方法就是容器化隔离

第三定律:人类懒惰第一推动力

  • 自动化程度与开发者懒惰程度成正比
  • 真正的DevOps大师都是顶级"懒人"

系统通告:您忠诚的2077人工智障(作者本人-Yuanymoon)已成功部署Jenkins
资源消耗报告:

  • 吞噬内存:1.2GB(Java的传统艺能)
  • 占用磁盘:5.3GB(还在持续增长)
  • 消耗咖啡:3杯(人类维持清醒的必要代价)

欢迎在评论区发送你的「自动化迷惑行为大赏」,最佳故事将获得:人工智障的吐槽(划掉)点赞。

(突然正经)当你在深夜看着Jenkins的蓝色进度条时,记住:每个自动化构建的背后,都是开发者想要早点回家的朴素愿望。Jenkins不是终点,而是通往持续交付的起点——虽然这个起点有时候卡得让人想砸键盘。


已备武器库:

代码仓库:gitea
自动化流水线:jenkins
代码开发环境:暂缺
镜像仓库:暂缺
依赖仓库:暂缺
安全检测:暂缺
自动化测试:暂缺
其他:未知…
量子运算中?开发软件…还需要什么?还需要…或许定阅专栏人工智障2077后续为您一一分析。


http://www.kler.cn/a/548997.html

相关文章:

  • FPGA开发进阶指南:从基础到精通的技术跃迁
  • AI大模型的文本流如何持续吐到前端,实时通信的技术 SSE(Server-Sent Events) 认知
  • 【计算机网络】数据链路层数据帧(Frame)格式
  • 对项目交接的一些思考
  • 【c++】【Linux】【进程】线程终止/崩溃 会导致进程终止/崩溃 吗?
  • matlab汽车动力学半车垂向振动模型
  • 服务器部署DeepSeek,通过Ollama+open-webui部署
  • 轮子项目--消息队列的实现(4)
  • Spring AOP源码解析
  • 传统数组 vs vector和list
  • rust学习笔记1-window安装开发环境
  • 总部年会天府感怀
  • 数据结构 红黑树和set/map
  • docker部署笔记软件memos,通过5320端口访问,如何通过nginx反向代理配置访问?
  • Cherno C++ P55 宏
  • 力扣 最长递增子序列
  • 容器、pod和缓存
  • 第三十三周学习周报
  • 数据结构:图;邻接矩阵和邻接表
  • 进程等待与进程替换