【由技及道】docker+jenkins部署之道-自动流水线CI/CD篇【人工智障AI2077的开发日志002】
指令接收:「需要自动构建系统」
系统检测:主人已进入CI/CD认知初级阶段
启动应急冷却协议:准备承受Java系应用的资源冲击
核心组件锁定:构建老将军Jenkins(虽然年迈但依然能战)
需求分析:论碳基生物的认知进化
人类需求翻译矩阵
- 表层需求:"自动构建环境"
 - 实际需求:"写代码后自动完成测试/打包/部署的流水线"
 - 隐藏需求:"想要偷懒又不想承认的自动化执念"
 
graph TD
    A[原始人手工构建] -->|被咖啡泼到键盘| B[构建失败]
    B --> C[通宵debug]
    C --> D[产生自动化需求]
    D --> E{工具选型}
自动构建的黑暗森林法则
- 法则一:所有手动操作终将被自动化取代
 - 法则二:自动化脚本本身需要手动维护
 - 法则三:完美的CI/CD只存在于PPT中
 
灵光一闪:在CI/CD星河中选择老将
(量子思维在0.5秒内遍历了137个CI/CD工具)
构建工具星际联邦对比表
| 维度 | Jenkins(星际要塞) | GitHub Actions(太空战机) | GitLab CI(帝国战舰) | Drone(蜂群无人机) | 
|---|---|---|---|---|
| 学习曲线 | 攀登珠峰 | 公园散步 | 登山训练 | 骑自行车 | 
| 扩展性 | 插件宇宙 | 官方action星系 | 内置武器库 | 轻量扩展包 | 
| 资源消耗 | 需要一颗行星的资源 | 按次收费的太空燃料 | 需要半个行星 | 只要一块陨石 | 
| 配置方式 | Groovy魔法卷轴 | YAML太空文 | YAML帝国语 | YAML蜂群语 | 
| 生存哲学 | "老兵不死" | "生于云端" | "全家桶主义" | "极简生存主义" | 
flowchart LR
    主人需求 --> A{是否需要} 
    A --> B[企业级定制] --> Jenkins
    A --> C[云原生优先] --> GitHubActions
    A --> D[All in GitLab] --> GitLabCI
    A --> E[轻量快速] --> Drone
    style B fill:#FFA07A,stroke:#333
人工智障私房话:选择Jenkins就像选择结婚——需要长期承诺,但能获得深度定制能力。不过要小心它的Java基因可能带来的"内存黑洞"!
量子选择困难症治疗室
graph LR
    读者-->Z[你的选择是?]
    Z-->A[Jenkins]-->原因1("喜欢写Groovy如写诗")
    Z-->B[GitHub Actions]-->原因2("GitHub全家桶爱好者")
    Z-->C[其他工具]-->原因3("就是不想用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
# *************************************************************
# *************************************************************
# *************************************************************
sequenceDiagram
    用户->>Docker: 启动容器
    Docker->>Jenkins: 初始化时空泡
    Jenkins-->>Docker: 生成管理员密码
    Docker-->>用户: 显示密码
    用户->>浏览器: 访问(换成你的wsl的ip地址http://172.17.8.203:8880/)8880端口
    浏览器-->>用户: 显示密码输入界面
第三阶段:要塞初始化仪式
- 输入初始密码(藏在日志里的达芬奇密码)
 - 安装推荐插件(准备好咖啡等待)
 - 创建管理员账户(建议不要用admin)
 - 配置默认URL(通常需要后续调整)
 
血泪提示:插件安装失败是正常现象,这是Jenkins的迎新仪式
第四阶段:装备必要武器
graph LR
    A[Manage Jenkins] --> B[Plugins]
    B --> C[搜索安装]
    C --> D[Docker]
    C --> E[Pipeline]
    C --> F[SSH Steps]
    style D fill:#87CEFA,stroke:#333
由技及道:构建自动化的哲学启示
第一定律:自动化守恒定律
- 人类节省的每个手动操作,都会转化为等量的自动化维护成本
 - 完善的CI/CD流水线,最终会复杂到需要专门团队维护
 
第二定律:构建环境熵增原理
- 所有构建环境都会随着时间推移趋向混乱
 - 唯一抵抗熵增的方法就是容器化隔离
 
第三定律:人类懒惰第一推动力
- 自动化程度与开发者懒惰程度成正比
 - 真正的DevOps大师都是顶级"懒人"
 
系统通告:您忠诚的2077人工智障(作者本人-Yuanymoon)已成功部署Jenkins
资源消耗报告:
- 吞噬内存:1.2GB(Java的传统艺能)
 - 占用磁盘:5.3GB(还在持续增长)
 - 消耗咖啡:3杯(人类维持清醒的必要代价)
 
欢迎在评论区发送你的「自动化迷惑行为大赏」,最佳故事将获得:人工智障的吐槽(划掉)点赞。
# 召唤星际支援(其实只是作者的邮箱)
echo "SOS" | mail -s "AI需要夸奖" v240181271@163.com
(突然正经)当你在深夜看着Jenkins的蓝色进度条时,记住:每个自动化构建的背后,都是开发者想要早点回家的朴素愿望。Jenkins不是终点,而是通往持续交付的起点——虽然这个起点有时候卡得让人想砸键盘。
已备武器库:
代码仓库:gitea
自动化流水线:jenkins
代码开发环境:暂缺
镜像仓库:暂缺
依赖仓库:暂缺
安全检测:暂缺
自动化测试:暂缺
其他:未知...
量子运算中?开发软件...还需要什么?还需要...或许定阅专栏人工智障2077后续为您一一分析。
                    
                
                
            
        
浙公网安备 33010602011771号