nodejs前端项目的CI/CD实现(二)jenkins的容器化部署

一、背景

docker安装jenkins,可能你会反问,这太简单了,有什么好讲的。

我最近就接手了一个打包项目,它是一个nodejs的前端项目,jenkins已在容器里部署且运行OK。

但是,前端组很追求新技术,不断地升级Nodejs的版本,之前是14,现在需要升级到16。

也就是说,原本运行顺畅的打包不灵了,必须得升级Nodejs才行。

我要看下文档,得知道jenkins容器的运行命令,才好去修改并重启容器。

这是我的第一反应,可也正是这个思维,导致走了不少弯路。

二、踩过的坑

1、文档少,交接中断许久

文档只有机器的密码,以及jenkins的admin超管账户的密码。

并没有交待Jenkins容器是怎么起来的,而所谓交接也中断不知多久,没人知道此时。。

2、思维定势

我的这个固定思维,导致我走了不少弯路。也正因为此,我才想把这期间遇到的问题,梳理出来,希望能够帮助到有需要的同学。

三、分析已部署的容器

主要需要知道以下信息,对于Jenkins容器来说:

  • 镜像image
  • volume
  • 端口映射
  • 环境变量

对于本文的情况来说,镜像image和端口映射是很容易看到,最重要的信息莫过于volume持久化。

当然你可以借助于docker inscept命令,我这里是使用portainer界面查看。

从下面详情,也可以看到镜像image名称,使用的就是官方镜像。

从下面的环境变量,可以看到,jenkins使用的版本是2.323。在制作自定义镜像的时候,这个信息可以帮助到我们该选择哪个版本。

四、容器化部署

从上文,我们不难倒退出目前在运行中的容器,运行脚本大致是:

bash 复制代码
docker run -d -uroot \
-p 8080:8080 \
-p 50000:50000 \
--name jenkins \
-v /opt/jenkins_home:/var/jenkins_home \
jenkins/jenkins:2.323

可是问题来了,jenkins job打包需要的那些命令和工具呢, 他们在哪?

也分为几种可能,但都没找到。

  • jenkins plugin插件
  • 系统管理--》全局工具设置
  • 宿主机和容器做持久化映射
  • 容器里安装(遗漏了这点,后果很严重)

前面三处都找了,也没找到,可偏偏遗漏了最后一处。。。因为这种方式,我自己在操作中比较忌讳。

容器一定被删除后,安装的命令和工具就都丢失了,并且对于运维来说,也是透明的。

就是说,别人并不知道你对容器具体有做什么改进,一头雾水。

1、安装方式一(不推荐)

我试着做了,但总会缺这缺那的,很难真正跑起来。

因为宿主机是centos,而jenkins容器是ubuntu操作系统。

想要在ubuntu系统里,去执行一个centos上的可执行文件,何其难也~~

因为可执行文件还依赖操作系统底层的函数及文件。

可以说,不仅不推荐,似乎本文也行不通。。

2、遗漏的方案(不科学,不推荐)

这种方式,就是拿容器当虚拟机使用,丢失了容器化的内涵和意义。

缺什么软件,你就去容器里安装,问题是简单地解决了,留给运维一堆坑。

后面接手的人不禁反问一句:如果虚拟机那么好使, 还容器化干嘛。绕来绕去,不知不觉中又绕回去了。

3、推荐的方案(也是下文要进一步描述的方案)

限于篇幅, 对jenkins的容器化部署就说到这, 见下文。。。

相关推荐
阿里云云原生3 分钟前
AgentRun:屏蔽底层复杂性,让开发者专注 AI 业务逻辑创新!
云原生
袋鱼不重6 分钟前
AI入门知识点:什么是 AIGC、多模态、RAG、Function Call、Agent、MCP?
前端·aigc·ai编程
小胖霞9 分钟前
企业级全栈项目(14) winston记录所有日志
vue.js·前端框架·node.js
NuLL12 分钟前
空值检测工具函数-统一规范且允许自定义配置的空值检测方案
前端
栀秋66613 分钟前
“无重复字符的最长子串”:从O(n²)哈希优化到滑动窗口封神,再到DP降维打击!
前端·javascript·算法
鹿鹿鹿鹿isNotDefined16 分钟前
Antd5.x 在 Next.js14.x 项目中,初次渲染样式丢失
前端·react.js·next.js
梨子同志16 分钟前
Node.js 工具模块详解
前端
谷歌开发者18 分钟前
Web 开发指向标|AI 辅助功能在性能面板中的使用与功能
前端·人工智能
阿里云云原生23 分钟前
一文带你玩转 WebSocket 全链路可观测
云原生
阿里云云原生25 分钟前
AgentScope Java 1.0:从模型到应用,AI Agent 全生命周期管理利器!
java·云原生