CI/CD流水线:GitHub Actions自动化部署指南

GitHub Actions 基础配置

在项目根目录下创建 .github/workflows 文件夹,并新增一个 YAML 文件(如 deploy.yml)。以下是一个基础模板:

name: CI/CD Pipeline
on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

定义构建任务

添加构建任务到 YAML 文件,以 Node.js 项目为例:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Use Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '16'
      - run: npm install
      - run: npm run build

自动化测试集成

在构建后添加测试步骤,确保代码质量:

      - run: npm test
      - name: Upload coverage
        uses: codecov/codecov-action@v1

部署到生产环境

根据目标环境添加部署步骤。以下是部署到 AWS S3 的示例:

  deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - run: npm install
      - run: npm run build
      - name: Deploy to S3
        uses: jakejarvis/s3-sync-action@v0.5
        with:
          args: --acl public-read --delete
        env:
          AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

环境变量与密钥管理

敏感信息应存储在 GitHub Secrets 中:

  1. 进入仓库 Settings > Secrets
  2. 添加新密钥(如 AWS_ACCESS_KEY_ID
  3. 在 YAML 中通过 ${{ secrets.NAME }} 引用

多环境部署策略

通过条件触发实现分环境部署:

deploy-prod:
  needs: build
  if: github.ref == 'refs/heads/main'
  runs-on: ubuntu-latest
  steps: [...生产环境步骤]

deploy-stage:
  needs: build
  if: github.ref == 'refs/heads/develop'
  runs-on: ubuntu-latest
  steps: [...预发布环境步骤]

通知与监控

添加成功/失败通知到 Slack:

- name: Slack Notification
  uses: rtCamp/action-slack-notify@v2
  env:
    SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
    SLACK_COLOR: ${{ job.status }} # 根据状态变色
    SLACK_TITLE: 'Deployment Status'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值