前端CI/CD流程:自动化部署的正确打开方式

前端CI/CD流程:自动化部署的正确打开方式

毒舌时刻

CI/CD?听起来就像是前端工程师为了显得自己很专业而特意搞的一套复杂流程。你以为配置了CI/CD就能解决所有部署问题?别做梦了!到时候你会发现,CI/CD配置出错的概率比手动部署还高。

你以为随便找个CI/CD工具就能用?别天真了!不同的工具配置方式不同,坑也不同。比如Jenkins的配置文件就像是天书,GitLab CI的YAML语法也能让你崩溃。

为什么你需要这个

  1. 自动化部署:CI/CD可以自动完成代码测试、构建和部署,减少手动操作,提高部署效率。
  2. 减少人为错误:自动化部署可以避免手动部署时的人为错误,提高部署的可靠性。
  3. 快速反馈:CI/CD可以在代码提交后立即进行测试和构建,及时发现问题,提供快速反馈。
  4. 持续集成:CI/CD可以确保代码的持续集成,避免代码冲突和集成问题。
  5. 环境一致性:CI/CD可以确保不同环境的配置一致,避免环境差异导致的问题。

反面教材

# 这是一个典型的手动部署流程 # 1. 手动运行测试 npm test # 2. 手动构建项目 npm run build # 3. 手动上传构建文件到服务器 scp -r build/* user@server:/var/www/html/ # 4. 手动重启服务器 ssh user@server "sudo systemctl restart nginx" 

问题

  • 手动部署容易出错,比如忘记运行测试或构建
  • 部署过程不透明,难以追踪部署历史
  • 环境配置不一致,导致部署失败
  • 部署速度慢,影响开发效率
  • 无法实现自动化回滚,出现问题时难以快速恢复

正确的做法

GitHub Actions配置

# .github/workflows/deploy.yml name: Deploy to Production on: push: branches: - main jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Set up Node.js uses: actions/setup-node@v2 with: node-version: '16' - name: Install dependencies run: npm install - name: Run tests run: npm test - name: Build project run: npm run build - name: Deploy to server uses: easingthemes/ssh-deploy@v2 with: SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} ARGS: '-rltgoDzvO --delete' SOURCE: 'build/' REMOTE_HOST: ${{ secrets.REMOTE_HOST }} REMOTE_USER: ${{ secrets.REMOTE_USER }} TARGET: ${{ secrets.REMOTE_TARGET }} - name: Restart server uses: appleboy/ssh-action@master with: host: ${{ secrets.REMOTE_HOST }} username: ${{ secrets.REMOTE_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} script: sudo systemctl restart nginx 

GitLab CI配置

# .gitlab-ci.yml stages: - test - build - deploy test: stage: test image: node:16 script: - npm install - npm test only: - main build: stage: build image: node:16 script: - npm install - npm run build artifacts: paths: - build/ only: - main deploy: stage: deploy image: alpine:latest script: - apk add --no-cache rsync openssh - mkdir -p ~/.ssh - echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - ssh-keyscan -H $REMOTE_HOST >> ~/.ssh/known_hosts - rsync -avz --delete build/ $REMOTE_USER@$REMOTE_HOST:$REMOTE_TARGET - ssh $REMOTE_USER@$REMOTE_HOST "sudo systemctl restart nginx" only: - main environment: name: production 

Jenkins配置

// Jenkinsfile pipeline { agent any stages { stage('Checkout') { steps { checkout scm } } stage('Install Dependencies') { steps { sh 'npm install' } } stage('Test') { steps { sh 'npm test' } } stage('Build') { steps { sh 'npm run build' } } stage('Deploy') { steps { sh ''' scp -r build/* user@server:/var/www/html/ ssh user@server "sudo systemctl restart nginx" ''' } } } post { always { echo 'Pipeline completed' } success { echo 'Deployment successful' } failure { echo 'Deployment failed' } } } 

环境变量配置

# .env # 服务器配置 REMOTE_HOST=your-server.com REMOTE_USER=deploy REMOTE_TARGET=/var/www/html/ # SSH密钥(在CI/CD平台的secrets中配置) # SSH_PRIVATE_KEY=your-ssh-private-key 

毒舌点评

CI/CD确实能提高部署效率,但我见过太多开发者滥用这个特性,导致部署流程变得更加复杂。

想象一下,当你花了几个小时配置CI/CD,结果发现部署失败了,你需要调试CI/CD配置,这比手动部署还麻烦。

还有那些过度配置的CI/CD流程,包含了太多不必要的步骤,导致部署时间变得很长。比如每次部署都要运行所有测试,包括那些与当前修改无关的测试。

所以,在使用CI/CD时,一定要把握好度。不要为了自动化而自动化,要根据实际情况来决定CI/CD的配置。

当然,对于大型项目来说,CI/CD是必不可少的。但对于小型项目,过度的CI/CD反而会增加开发成本和维护难度。

最后,记住一句话:CI/CD的目的是为了提高部署效率和可靠性,而不是为了炫技。如果你的CI/CD配置导致部署变得更慢或更不可靠,那你就失败了。

Read more

(保姆级教程)通过官方API搭建一个自己的QQ群聊机器人

(保姆级教程)通过官方API搭建一个自己的QQ群聊机器人

简介 用官方api做了一个qq群聊机器人的demo,有获取天气、简单编辑待办、从本地发送图片等功能。 建了个群,欢迎来交流( QQ群号:710101225 重新写了个基于nonebot框架的教程,个人认为比官方sdk更容易开发:https://blog.ZEEKLOG.net/Clovertaa/article/details/145452834 获取 机器人demo GitHub仓库:GitHub - ClovertaTheTrilobita/SanYeCao-bot: 一个基于官方API的QQ群聊机器人 官方SDK GitHub仓库:GitHub - tencent-connect/botpy: QQ频道机器人PythonSDK 教程 前置需求 本项目使用conda环境和git操作。如果未安装这两个工具请首先移步 史上最全最详细的Anaconda安装教程-ZEEKLOG博客 Git 详细安装教程(详解 Git 安装过程的每一个步骤)_git安装-ZEEKLOG博客 (这俩教程我粗略看了下感觉挺好的,如果不适合你那烦请自行百度了qwq) 一

【Microi 吾码】基于 Microi 吾码低代码框架构建 Vue 高效应用之道

【Microi 吾码】基于 Microi 吾码低代码框架构建 Vue 高效应用之道

我的个人主页 文章专栏:Microi吾码 引言 在当今快速发展的软件开发领域,低代码开发平台正逐渐崭露头角,为开发者们提供了更高效的应用构建途径。Microi 吾码低代码框架结合 Vue的强大前端能力,更是为打造高效应用提供了绝佳的组合。在这里,我将深入探讨如何基于 Microi 吾码低代码框架构建 Vue 高效应用。 Microi吾码官网: https://microi.net GitEE开源地址: microi.net: 一:Microi吾码安装指南 1、系统要求 * 操作系统:支持Windows、Linux等主流操作系统。 * 数据库:需要安装并配置支持的数据库,如MySql5.5+、SqlServer2016+、Oracle11g+等。 * 其他软件:安装.NET 8 SDK、Redis,并且最好安装Git用于代码获取。对于一些高级功能,可能还需要安装Docker、MinIO、MongoDB、RabbitMQ、

clawdbot (openclaw) + discord 机器人部署指南学习教程

clawdbot (openclaw) + discord 机器人部署指南学习教程

本文介绍了基于 ClawdBot(OpenClaw)框架在 Discord 平台部署 AI 对话机器人的完整流程。内容包括:Discord Application 与 Bot 的创建配置、OAuth2 权限管理、pnpm 全局安装、Daemon 服务配置、多模型 API 接入(支持智谱 GLM 等主流大模型)、Gateway 服务启动与调试等核心环节。 一、网络要求 * 魔法 * 确保网络能够访问Discord服务 * TUN模式(关键哦) 二、Discord平台配置 2.1 访问Discord开发者平台 访问地址:https://discord.com/developers/applications 2.2 创建应用程序 1. 登录Discord开发者平台

AIStarter一键安装ComfyUI黎黎原上咩7.0整合包教程:新手免费部署AI绘画神器

AIStarter一键安装ComfyUI黎黎原上咩7.0整合包教程:新手免费部署AI绘画神器

大家好!我是熊哥粉丝,今天分享ComfyUI黎黎原上咩整合包7.0在AIStarter平台的一键安装全攻略!咩姐(黎老师)的超强整合包已正式上架,解压即用、GPU/CPU切换,内置海量插件和工作流,完美适配Stable Diffusion AI绘画。 核心亮点 * 一键下载安装:市场搜索“comfyui黎黎原上咩”,优先高速/离线下载(782GB模型包),避免网速瓶颈。 * 智能启动:AIStarter自动打开浏览器,无黑框CMD,终端日志实时查看。aihubpro.cn * 模型管理:下载后一键配置到ComfyUI目录,支持插件/工作流导入,更新无需重下。 * 脚本模式:简单模式(咩姐默认)or 专业模式(多启动选项,自定义路径)。 安装步骤(5分钟上手) 1. 下载AIStarter(官网免费),打开市场。 2. 搜索黎黎原上咩7.0,点击添加