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

如何在GitHub Action中获取一次Push包含的提交数量?

获取GitHub Action中Push的提交数量并优化SFDX部署流水线

要在你的SFDX部署流水线中获取本次Push包含的提交数量,并根据提交范围生成准确的增量部署文件,可以按以下步骤操作:

1. 获取本次Push的提交数量

GitHub Actions提供了事件上下文变量github.event.before(Push前的分支提交哈希)和github.event.after(Push后的分支提交哈希),用Git命令可直接计算两者之间的提交数:

git rev-list --count ${{ github.event.before }}..${{ github.event.after }}

我们可以把这个值存入环境变量,方便后续步骤调用。

2. 动态设置增量计算的起始点

根据提交数量调整sfdx sgd:source:delta的--from参数:

  • 若提交数为1(单次提交Push),用HEAD^作为起始点
  • 若提交数大于1(多次提交批量Push),用github.event.before作为起始点,确保覆盖本次Push的所有修改

3. 修改后的完整GitHub Action配置

name: SFDX-CLI DEV Deploy from Repository
on: 
  push:
    branches:
      - develop
    paths:
      - 'force-app/**'
jobs:
  SFDX-CLI-DEV-Deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0  # 拉取完整提交历史,确保Git命令能正常计算提交范围
      
      # 获取本次Push的提交数量并存入环境变量
      - name: Get push commit count
        run: |
          COMMIT_COUNT=$(git rev-list --count ${{ github.event.before }}..${{ github.event.after }})
          echo "COMMIT_COUNT=$COMMIT_COUNT" >> $GITHUB_ENV
      
      - run: npm install sfdx-cli --location=global
      - run: echo 'y' | sfdx plugins:install sfdx-git-delta
      
      - run: sfdx force:auth:jwt:grant --clientid ${{ secrets.DEV_CLIENTID }} --jwtkeyfile=build/serverDev.key --username ${{ secrets.DEV_USERNAME }} --setdefaultdevhubusername --instanceurl=${{ secrets.DEV_INSTANCE_URL }} --setalias dev
      
      # 根据提交数量动态设置增量起始点,生成部署用的package.xml
      - name: Generate delta package
        run: |
          if [ $COMMIT_COUNT -eq 1 ]; then
            FROM_REF="HEAD^"
          else
            FROM_REF="${{ github.event.before }}"
          fi
          sfdx sgd:source:delta --to "HEAD" --from "$FROM_REF" --output .
      
      - run: sfdx force:source:deploy -x package/package.xml -u dev

关键说明

  • fetch-depth: 0必须保留,否则Git无法访问github.event.before对应的提交历史
  • 通过$GITHUB_ENV存储提交数量,确保后续步骤能读取到该变量
  • 动态判断起始点避免了单次提交和批量提交场景下的增量遗漏问题,保证只部署本次Push中修改的文件

内容的提问来源于stack exchange,提问作者Matheus Coelho Campos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:45:37