github-actions

GitHub Actions 工作流配置与排错

补充说明

GitHub Actions 用 .github/workflows/*.yml 描述流水线,事件触发后在 GitHub 托管的 Runner 或自托管 Runner 上执行 Job。它不是一个本地命令,调试常借助 gh 和 act。

常用示例

mkdir -p .github/workflows
gh workflow list
gh workflow run ci.yml
gh run list --limit 10
gh run watch
gh run view --log-failed
gh run rerun <run-id> --failed

最小工作流:

name: CI
on:
  push:
    branches: [main]
  pull_request:
permissions:
  contents: read
concurrency:
  group: ci-${{ github.ref }}
  cancel-in-progress: true
jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        node: [22, 24]
    steps:
      - uses: actions/checkout@v7
      - uses: actions/setup-node@v7
        with:
          node-version: ${{ matrix.node }}
          cache: npm
      - run: npm ci
      - run: npm test

易错点与排错

相关命令

读完自测

合上页面,先回答,再展开对照。

  1. 把工作流 YAML 放在 .github/workflows/ 的子目录里会执行吗?
  2. fork 提交的 PR 默认能拿到仓库 secrets 吗?
  3. 前后两个 job 之间如何传递文件和环境变量?
答案
  1. 不会。工作流必须直接放在 .github/workflows/ 根目录,子目录里的 YAML 不会被执行。
  2. 不能。fork PR 默认拿不到 secrets,不要把部署密钥暴露给 pull_request。pull_request_target 处理不可信代码风险极高。
  3. 每个 job 是独立 Runner,文件和环境变量不会自动传递。需要用 artifacts 或 outputs。