前端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

机器人灵巧手:技术演进、市场格局与未来前景

机器人灵巧手:技术演进、市场格局与未来前景

机器人灵巧手:技术演进、市场格局与未来前景 机器人灵巧手作为具身智能的”最后一厘米”,正经历从实验室技术到产业化落地的关键转折点。2025年,全球灵巧手市场规模已达63.39亿元,中国市场规模更高达501.33亿元,年复合增长率超过300%。随着特斯拉Optimus Gen3等产品的量产计划推进,灵巧手技术正向”全感知”和”自适应”方向发展,逐步突破”性能、成本、可靠性”的”不可能三角”。从驱动系统看,空心杯电机和微型丝杠+腱绳传动方案成为主流;感知系统则通过触觉传感器与AI视觉融合实现突破。产业链国产化率已达70%以上,核心部件如空心杯电机、谐波减速器、传感器等均实现自主可控。未来5-10年,灵巧手有望从工业制造向家庭服务、医疗康养、特种作业等多元场景扩展,2030年全球市场规模预计达450亿元,2035年销量将突破百万只,迎来百亿级市场。 一、技术发展路径与核心模块创新 灵巧手技术发展经历了三个主要阶段:1970-1990年的基础结构阶段,1990-2020年的系统集成阶段,以及2020年至今的”全感知”和”自适应”

AI绘图的硬件密码:如何为Stable Diffusion选择与优化你的电脑配置

AI绘图的硬件密码:如何为Stable Diffusion选择与优化你的电脑配置 当第一次看到AI生成的画作时,很多人都会被其惊人的创造力和表现力所震撼。从细腻的肖像到奇幻的场景,AI绘图正在重塑创意产业的边界。而Stable Diffusion作为当前最受欢迎的开源AI绘图工具,让每个人都能在本地电脑上体验这股创作浪潮。但不同于在线服务,本地运行Stable Diffusion对硬件有着特定要求,不当的配置可能导致生成速度缓慢甚至无法运行。本文将深入解析硬件选择与优化的核心要点,帮助你在预算范围内搭建最适合AI绘图的工作站。 1. 显卡:AI绘图的核心引擎 显卡是影响Stable Diffusion性能的最关键组件,其选择直接决定了生成图像的速度和质量。与游戏或3D渲染不同,AI绘图对显卡有着独特的需求模式。 显存容量是首要考量因素。Stable Diffusion在生成512x512像素图像时,基础模型通常需要至少4GB显存。而若想处理更高分辨率(如768x768或1024x1024)或使用更复杂的大模型,8GB以上显存将成为必要条件。实测数据显示: 显存容量支持分

2026年,我整理了中国 200 多家机器人(具身智能)公司名单

2026年,我整理了中国 200 多家机器人(具身智能)公司名单

近几年,机器人行业突然变得异常热闹。尤其是2022年9月特斯拉首次亮相具身智能人形机器人 Optimus 之后,国内外都掀起了一波浪潮。2023年之后,国内出现了一批新的人形机器人公司,为了更好地理解这个行业,我整理了一份中国机器人企业名单,包含200 多家企业,涵盖人形机器人、工业机器人、移动机器人、服务机器人、特种机器人等领域。 注:名单中的企业排序没有特殊含义,仅表示本人收集信息的先后顺序。 序号企业简称总部成立时间主营产品网址企业全称1优必选深圳2012年人形机器人、轮式机器人https://ubtrobot.com深圳市优必选科技股份有限公司2宇树科技杭州2016年四足机器狗、人形机器人https://unitree.com宇树科技股份有限公司3智元上海2023年四足、轮式、双足人形机器人、具身模型https://zhiyuan-robot.com智元创新(上海)科技股份有限公司4海康机器人杭州2016年机器视觉、移动机器人https://hikrobotics.com杭州海康机器人股份有限公司5傅利叶上海2015年康复机器人、双足人形机器人、灵巧手https://f

win11本地部署openclaw实操第2集-让小龙虾具有telegram机器人能力和搜索网站能力

win11本地部署openclaw实操第2集-让小龙虾具有telegram机器人能力和搜索网站能力

1 按照第一集的部署完成后,我们就开始考虑给小龙虾增加telegram机器人和搜索网站能力,实现效果如下: 2 telegram机器人能力部署 C:\Users\Administrator.openclaw的配置文件openclaw.json 增加一段内容 "channels":{"telegram":{"enabled": true, "dmPolicy":"pairing", "botToken":"你的telegram机器人的token", "groupPolicy":"allowlist", "streamMode":"partial", "network":{"