Skip to main content

2. Git Action

1. GitHub Actions

GitHub Actions 是 GitHub 提供的持续集成(CI/CD)服务,它允许开发者自动化软件开发工作流,如代码测试、构建、部署等。

info

GitHub Actions 通过 .github/workflows 目录下的 YAML 配置文件定义。

2. GitHub Actions 主要用途

  • 自动测试:在代码提交或 PR 时运行单元测试。
  • 自动部署:构建并部署应用到服务器或云平台。
  • 代码质量检查:使用 Lint 工具检查代码格式。
  • 自动化发布:创建版本、打包并发布到 npm、Docker Hub 等。

3. GitHub Actions 代码示例

3.1 基本工作流(Workflow)

下面是一个 GitHub Actions 基础示例,在 push 事件触发时运行一个 Job。

ame: Basic Workflow
on: [push]

jobs:
example_job:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run a simple script
run: echo "Hello GitHub Actions!"
tip

此工作流在 push 事件触发时执行,拉取代码并运行 echo 命令。

3.2 运行多个 Job

name: Multi-Job Example
on: [push]

jobs:
job1:
runs-on: ubuntu-latest
steps:
- name: Step in Job 1
run: echo "This is Job 1"

job2:
runs-on: ubuntu-latest
needs: job1
steps:
- name: Step in Job 2
run: echo "This is Job 2"
caution

needs: job1 说明 job2 依赖于 job1,必须等待 job1 结束后才能执行。

4. 进阶用法

4.1 使用 Secrets 进行身份验证

name: Deploy to Server
on: [push]

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Deploy via SSH
run: |
ssh -o StrictHostKeyChecking=no user@server "deploy_script.sh"
env:
SSH_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
info

secrets.SSH_PRIVATE_KEY 需要在 GitHub 仓库的 Settings > Secrets 中配置。

5. 使用 Matrix 进行并行测试

name: Matrix Test
on: [push]

jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14, 16, 18]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
tip

matrix 允许在多个环境(如不同 Node.js 版本)上同时运行测试,提高兼容性。

6. 详细的 CI/CD 工作流示例

点击展开完整 CI/CD 示例
name: CI/CD Pipeline
on: [push, pull_request]

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install dependencies
run: npm install
- name: Run build
run: npm run build

test:
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run tests
run: npm test

deploy:
runs-on: ubuntu-latest
needs: test
if: github.ref == 'refs/heads/main'
steps:
- name: Deploy application
run: echo "Deploying application..."
info

此工作流包含 构建(build) → 测试(test) → 部署(deploy) 三个阶段。

7. 总结

GitHub Actions 是一个强大的自动化工具,可用于 CI/CD、测试、部署等多种场景。掌握其基础和进阶用法,可以极大提高开发效率。

tip

建议阅读 GitHub Actions 官方文档 获取更多信息。