CI/CD自动化部署(持续集成和持续交付/部署)

  • 持续集成:开发人员频繁地将代码集成到共享仓库,然后自动运行测试
  • 持续交付:自动准备好发布,但需要手动触发部署【workflow_dispatch: # 允许手动触发】
  • 持续部署:完全自动化的,不需要人工干预

流程:

比如,当开发人员提交代码到版本控制系统(比如GitHub),然后触发CI流程,自动运行测试、构建,如果成功的话就进行部署。常见的工具可能有Jenkins、GitLab CI、Travis CI、CircleCI或者GitHub Actions这些。需要配置这些工具来监听代码变更,然后执行一系列步骤。

常用工具:

  • CI/CD 平台 :Jenkins、GitLab CI、GitHub Actions、CircleCI、Travis CI。

  • 容器化 :Docker、Kubernetes。

  • 部署工具:Ansible、Terraform、Helm。

实施步骤:

选择工具:根据项目需求选择工具(如GitHub Actions适合GitHub仓库用户)。

配置代码仓库

  • 在版本控制系统(如GitHub)中托管代码。

  • 设置分支策略(如main分支用于生产,dev分支用于开发)。

编写 CI/CD 配置文件

php 复制代码
# .github/workflows/deploy.yml

name: Build and Deploy     #更新到服务器
on:
  push:
    # push 代码的时候,那个分支会收到影响,这里是mian主分支
    branches: [ main ]

# 推送之后执行一系列的任务
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
       # 获取代码
      - name: Checkout code
       # 使用action库 action/checkout获取代码
        uses: actions/checkout@v4
      - name: Install Node.js    # 安装node
        uses: actions/setup-node@v4
        with:
          node-version: '20'
      - name: Install dependencies # 安装依赖
        run: npm install
      - name: Run tests
        run: npm test
      - name: Build project
        run: npm run build
  deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Deploy to server
        uses: appleboy/ssh-action@v1
        with:
          host: ${{ secrets.SERVER_IP }}
          username: ${{ secrets.SSH_USERNAME }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            cd /var/www/my-app
            git pull origin main
            npm install --production
            pm2 restart my-app

敏感信息管理

  • 使用CI/CD工具的Secrets功能(如GitHub Secrets)存储SSH密钥、API令牌等。

流水线

多环境部署

  • 分阶段部署(开发 → 测试 → 生产),通过条件判断或手动审批控制流程

示例环境判断

php 复制代码
deploy-prod:
  needs: test
  if: github.ref == 'refs/heads/main'
  runs-on: ubuntu-latest
  steps: [...]

gitlab实现自动化部署

gitlab支持通过配置CI/CD实现自动化部署我们的代码项目,主要核心就是配置gitlab-ci.yml文件以及在目标服务器上配置gitlab-runner

总结:

  • 项目根目录创建yml文件(选择手动部署好处:频繁自动化部署消耗性能)
  • 提交push后,远程会自动读取yml文件,触发自动化安装,编译,部署(有默认的share runner可选择不安装project runners)
  • 点击,部署

gitlab项目新增:.gitlab-ci.yml,如:

php 复制代码
stages:
  - build
  - run
  - clean

build:
  stage: build
  only:
    - master
  script:
    - docker build -t test-cicd:v1.0.0 .

run:
  stage: run
  only:
    - master
  script:
    - docker-compose down
    - docker-compose up -d


clean:
  stage: clean
  only:
    - master
  script:
    - docker image prune -f

gitlab上查看gitlab-runner配置方法

优势:

提高开发效率:自动化重复任务,减少手动操作

早期发现问题:快速反馈代码问题

提高软件质量:强制运行测试和代码检查

gitlab实现CI/CD自动化部署_gitlab cicd自动化部署-CSDN博客

相关推荐
愚润求学1 小时前
【Linux】进程间通信(一):认识管道
linux·运维·服务器·开发语言·c++·笔记
SHUIPING_YANG1 小时前
Nginx 返回 504 状态码表示 网关超时(Gateway Timeout)原因排查
运维·nginx·gateway
光不度AoKaNa2 小时前
计算机操作系统概要
linux·运维·服务器
晚秋大魔王2 小时前
OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——wget
java·linux·运维·开发语言·华为·harmonyos
孤的心了不冷2 小时前
【Linux】Linux安装并配置MongoDB
linux·运维·mongodb·容器
南棱笑笑生2 小时前
20250517让NanoPi NEO core开发板在Ubuntu core16.04.2下支持TF卡的热插拔
linux·运维·ubuntu
jinlei20093 小时前
配置ssh服务-ubuntu到Windows拷贝文件方法
运维·ubuntu·ssh
magic 2453 小时前
第6章:文件权限
linux·运维·服务器
c6lala3 小时前
数据结构day3
linux·运维·服务器
snpgroupcn4 小时前
天能股份SAP系统整合实战:如何用8个月实现零业务中断的集团化管理升级
运维·系统架构