GitHub Actions:为真正理解它的人介绍CI/CD

GitHub Actions是GitHub内置的CI/CD(持续集成/持续部署)系统——它运行由你仓库中的事件触发的自动化工作流。以下是清晰解释它做什么以及如何实际使用它。

CI/CD实际上是什么意思

持续集成:每次代码推送时,自动运行测试以验证没有任何内容被破坏。持续部署:当主分支上的测试通过时,自动将更新的代码部署到生产环境。GitHub Actions自动化两者。没有它,你依赖开发者记得运行测试和手动部署——这在规模化时会出问题并引入人为错误。

基本工作流

name: Test and Deploy
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: npm test

  deploy:
    needs: test
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    steps:
      - uses: actions/checkout@v4
      - run: ./deploy.sh
        env:
          SERVER_KEY: ${{ secrets.SERVER_KEY }}

关键概念

触发器(on:):push、pull_request、schedule(cron)、workflow_dispatch(手动)。作业(Jobs):默认并行运行的独立单元;使用needs:进行顺序依赖。步骤(Steps):作业中的单个命令。动作(Actions):来自GitHub市场的可复用步骤(actions/checkout、actions/setup-python等)。密钥(Secrets):将API密钥和凭证存储在仓库密钥中,通过${{ secrets.KEY_NAME }}访问。

测试之外的实际用途

在标签推送时自动发布npm包。在部署前运行数据库迁移。构建和推送Docker镜像。在部署时发送Slack通知。生成和发布文档。运行安全扫描(Dependabot、CodeQL)。这些都是专业开发工作流中GitHub Actions的标准用途。

上一篇 GitHub Actions: CI/CD for People Who Actually Understand What It Does
下一篇 Rostock and Baltic Sea Food: What to Eat on Germany's East Coast