- 持续集成:开发人员频繁地将代码集成到共享仓库,然后自动运行测试
- 持续交付:自动准备好发布,但需要手动触发部署【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配置方法




优势:
提高开发效率:自动化重复任务,减少手动操作
早期发现问题:快速反馈代码问题
提高软件质量:强制运行测试和代码检查