You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为特定分支的对应子包配置GitHub Action执行检查?

可以实现,以下是具体配置方案

你只需要通过分支名提取对应的包名称,然后指定工作目录到该包的路径下执行lint和测试命令即可。修改后的GitHub Action配置如下:

name: Pre checks (eslint, test coverage)
on:
  push:
    branches:
      - "**"
      - '!master'

jobs:
  package-specific-checks:
    name: Run checks for targeted package
    runs-on: ubuntu-latest
    # 仅对dev/package开头的分支执行该任务
    if: startsWith(github.ref_name, 'dev/package')
    steps:
      - uses: actions/checkout@v3
        with:
          token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}

      # 从分支名中提取包名(比如dev/packageA → packageA)
      - name: Get target package name
        run: |
          PACKAGE_NAME=$(echo "${{ github.ref_name }}" | cut -d'/' -f2)
          echo "PACKAGE_NAME=$PACKAGE_NAME" >> $GITHUB_ENV
          # 校验包目录是否存在,避免执行错误
          if [ ! -d "./packages/$PACKAGE_NAME" ]; then
            echo "Error: Package directory ./packages/$PACKAGE_NAME not found"
            exit 1
          fi

      - name: Install dependencies
        run: npm ci
        working-directory: ./packages/${{ env.PACKAGE_NAME }}

      - name: Run lint
        run: npm run lint
        working-directory: ./packages/${{ env.PACKAGE_NAME }}

      - name: Run tests
        run: npm test
        working-directory: ./packages/${{ env.PACKAGE_NAME }}

配置说明:

  • 分支触发控制:通过if: startsWith(github.ref_name, 'dev/package')确保只有推送到dev/packageA、dev/packageB这类分支时,才执行该任务;其他分支会自动跳过这个job。
  • 包名提取:用cut命令分割分支名,取出/后的第二部分作为包名称,存入环境变量PACKAGE_NAME。
  • 定向执行命令:所有依赖安装、lint、测试步骤都指定工作目录为./packages/${{ env.PACKAGE_NAME }},只会对对应包的代码进行校验,不会影响其他包。

如果你的其他分支也需要执行全仓库的校验,可以保留原来的test job,同时新增上面的package-specific-checks job,让两者共存即可。

内容的提问来源于stack exchange,提问作者moys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 22:41:34