大部分CI/CD 教程的问题 大部分教程都显示您有一个管道, 用于免费的Heroku 实例 。
他们跳过杂乱无章的部分: 秘密,回滚, 和你的管道破裂的时刻 因为依赖性改变。
我去过那里。
经过多年与过度工程设置的战斗,我定居在一条最简陋的管线上,这条管线很容易理解,调试,并延伸.
虽不花花相出而能通.
Core Idea A CI/CD管道只是三个阶段: 测试 - 运行自动检查 Build - 创建文物 部署 - 将文物推向服务器 我们将使用 GitHub Actions 因为它是免费的 用于公众重置和与一切的整合.
但同样的概念也适用于GitLab CI,CircleCI,或Jenkins.
管道文件 这里的完整:就是这样。
分出诸相.
第1阶段:试验 工作是按每个推拉请求进行。
它检查代码, 安装依赖性( 它尊重锁文件), 并运行您的测试套件 。
如果公关测试失败,该工作不会因为依赖性而运行.
阶段2:建设 这份工作只推向(而不是公关)。
它将您的应用程序构建成文件夹 。
对于一个Node.js的应用程序,可能是像Vite或webpack这样的捆绑机.
对于一个Python应用,你会替换为或类似的.
第3阶段:部署 部署步骤用于将已建文件复制到您的服务器 。
它的死是简单的,并且为静态站点,节点应用程序,或者任何运行在倒置代理后面的东西工作.
保密管理从不硬码证书.
在 GitHub 中,转到 Sets > Secrets and Variables > Actions,并添加: - 您的服务器 IP 或域 - SSH 用户名(通常是或) - 专用部署用户的私钥 创建您服务器上一个权限有限的单独用户.
别用根.
每次部署都会覆盖上一个文件夹。
这对小型的应用程序来说是不错的,但是如果你打破一些东西,你需要快速回滚.
我保留了服务器上最后三个版本: 然后回滚,只是提取备份。
你可以用脚本来自动化,但即使是手动也比什么都不好.
处理依赖从锁文件安装精确版本.
这可以防止"我的机器上的工作"问题.
对于Python,使用有被固定版本.
执行前测试管道, 本地测试 : 如果两者都通过, 承诺和推向。
注意动作标签,看管线运行 常见的Pitfalls SSH密钥权限:确保私钥采用OpenSSH格式,而非PuTTY.
如果你用它来生成,它的工作。
路径问题: 假设你的建设产出 调整您的项目 。
服务器路径权限 : 部署用户需要写入 。
设置一次与.
扩展管道一旦成功,您可以添加: Linting - 在测试数据库迁移前添加一个任务 - 在部署通知后运行一个单独的任务 - 使用失败发送一个Slack消息 但是,不要添加,直到你需要它们。
这条管道的美丽就是它的简单. 5分钟内就能追踪到整个流量 最后想法 这条管线不会处理Kubernetes或蓝绿色的部署.
但对于大多数侧式项目,小企业应用,甚至一些生产系统,都足够了.
开始简单。
让它工作。
礛 it 这就是建造真正有效的东西的方法.
你建了类似的管道吗?
你最小的设置是什么?
在评论中告诉我.