一人公司别再上 Jenkins,真不值

大家好,我是凌览。

如果本文能给你提供启发或帮助,欢迎动动小手指,一键三连(点赞评论转发),给我一些支持和鼓励谢谢。


Jenkins 是个开源的持续集成工具,界面好用,操作也简单,项目开发里用得特别多。能自动化搞构建、测试、部署,确实挺牛逼的。

但你要是一人公司,不建议用,原因有二:

  • 运维太费劲:你一个人身兼产品、开发、运营、推广......什么活都得干。Jenkins 不是装完就完事的------插件冲突、磁盘爆满、升个级流水线直接崩。一个人搞这些,时间全耗进去了。
  • 太重了:至少 4G 内存、几十 G 硬盘才能跑顺。每个月花几十块服务器钱,就为了跑个自动部署,不值当。

所以我的建议很简单:除非你团队多人、流水线复杂到非 Jenkins 不可,否则别碰它。一人公司的核心是活下去、跑得快,不是伺候工具。

那如何部署呢,我是这样做的------用本地自动化脚本替代Jenkins

第一步:本地打包推送远程

首先装个 Docker,把项目 Docker 化。

比如去水印下载鸭,就是用 Docker 部署的。前、后端全部打包进入一个镜像。

Dockerfile文件:

docker 复制代码
FROM node:24-slim
ENV TZ=Asia/Shanghai
WORKDIR /app
COPY package*.json ./
RUN npm config set registry https://registry.npmmirror.com/ && npm install --omit=dev --verbose
COPY .env ./
COPY server/ server/
COPY front-end/ front-end/
VOLUME ["/app/server/db", "/app/logs", "/app/ssl"]
EXPOSE 3000 3443
CMD ["npm", "start"]

然后执行打包命令:

bash 复制代码
docker buildx build --platform linux/amd64 -t 镜像名 --push .

为什么要指定 --platform linux/amd64?因为本地电脑一般是 Windows 或 macOS,线上服务器跑的是 Linux。不指定的话,Docker 按本机架构打包,传到服务器上就起不来了。

--push . 就是把镜像推到远程仓库。远程仓库我用的是阿某云的容器镜像服务,个人版免费

至于怎么配置推送到阿某云的容器镜像服务,官方文档写得很清楚,跟着走一遍就行。

推送成功后,你在任何一台机器上都能 docker pull xxx 把镜像拉下来跑。

第二步:本地连接服务器

ssh2 是一个 Node.js 工具包,专门用来连远程服务器。

连上之后,把 docker run 命令丢给它,它就能帮你在服务器上跑起来。

jsx 复制代码
const { Client } = require('ssh2');
require('dotenv').config();

const cfg = {
  ssh: {
    host: process.env.DEPLOY_HOST,
    port: 22,
    username: 'root',
    password: process.env.DEPLOY_PASSWORD,
  },
  docker: {
    name: 'my-app',
    image: 'registry.cn-hangzhou.aliyuncs.com/my-project/my-app:latest',
    port: '80:3000',
  },
};

const conn = new Client();

conn.on('ready', () => {
  console.log('连上服务器了,开始部署...');

  conn.exec('docker pull ' + cfg.docker.image, (err, stream) => {
    if (err) throw err;
    stream.on('close', () => {
      conn.exec('docker rm -f ' + cfg.docker.name + ' || true', () => {
        conn.exec(
          'docker run -d --name ' + cfg.docker.name +
          ' -p ' + cfg.docker.port +
          ' --restart=on-failure:4 ' +
          cfg.docker.image,
          () => {
            console.log('部署完成!');
            conn.end();
          }
        );
      });
    });
  });
});

conn.connect(cfg.ssh);

上面这段是伪代码,直接让 AI 帮你写就行,放这里只是演示一下思路。

一个简简单单的自动化部署就成了,对一人公司来说完全够用。

总结

回过头来看,这套方案其实就干了两件事:

  1. 本地打包镜像,推到阿某云镜像仓库
  2. 写个脚本连服务器,把镜像拉下来跑起来

没有 Jenkins,不用搞什么插件、权限、流水线配置。一个 Dockerfile 加一个部署脚本,就把 CI/CD 的核心流程跑通了。

Jenkins 很好,但不是每个项目都需要它。如果你的团队只有你一个人,项目也没复杂到需要几十个构建节点,那完全没必要给自己加负担。工具是拿来用的,不是拿来伺候的。

够用就好。

相关推荐
菜鸟谢1 小时前
Rust 元组与数组内存管理笔记
后端
oil欧哟1 小时前
Codex 最佳实践(超级长文):先搞懂 AI,再用好 AI
前端·人工智能·后端
AskHarries1 小时前
把一个外部系统接成 MCP 工具
后端·程序员
小小小小宇1 小时前
前端渲染方式
前端
释然小师弟1 小时前
Android开发十年:反思与回顾
android·后端·嵌入式
雪隐2 小时前
个人电脑玩AI-04让5060 Ti给你打工——本地FLUX.2 Klein 的 AI 图片生成
人工智能·后端
掘金者阿豪2 小时前
多台服务器日志怎么统一清理?Ansible、Cron与cpolar自动化方案
后端
京东云开发者2 小时前
全球首个!京东全栈开源JoyAI-VL-Interaction,让大模型从“一问一答”走向“边看边说”
前端
京东云开发者2 小时前
正式上线!京东云AI智能渗透测试服务
前端