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博客

相关推荐
weixin_307779132 小时前
Clickhouse统计指定表中各字段的空值、空字符串或零值比例
运维·数据仓库·clickhouse
bubiyoushang8882 小时前
Windows11 WSL2 Ubuntu编译安装perf工具
linux·运维·ubuntu
xuanwojiuxin3 小时前
linux panic-propagation
linux·运维·服务器
藥瓿亭5 小时前
K8S认证|CKS题库+答案| 9. 网络策略 NetworkPolicy
linux·运维·docker·云原生·容器·kubernetes·cks
liuzhenghua666 小时前
Python任务调度模型
java·运维·python
黎相思6 小时前
应用层自定义协议与序列化
运维·服务器·网络
测试开发Kevin6 小时前
详解Jenkins Pipeline 中git 命令的使用方法
运维·jenkins
什么半岛铁盒7 小时前
Linux线程与进程关系及底层实现
java·linux·运维
langmeng1107 小时前
使用docker在3台服务器上搭建基于版本redis 6.x的一主两从模式
运维·redis·docker·容器·集群
jllllyuz7 小时前
如何为服务器生成TLS证书
运维·服务器·数据库