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

无法将提交信息与作者信息传递至Cypress Cloud的问题排查

问题

配置了向Cypress Cloud记录测试结果的GitHub Actions工作流,但提交信息无法正常传递至Cypress Cloud。当前工作流配置如下:

name: Cypress Tests
on: [push, deployment_status]
jobs:
  cypress-run:
    if: github.event_name == 'deployment_status' && github.event.deployment_status.state == 'success'
    runs-on: ubuntu-latest
    env:
      COMMIT_INFO_MESSAGE: ${{ toJson(github.event.head_commit.message) }} (by ${{ toJson(github.event.head_commit.author) }})
      COMMIT_INFO_AUTHOR: ${{ toJson(github.event.head_commit.author) }}
    container: cypress/included:cypress-12.7.0-node-18.14.1-chrome-110.0.5481.96-1-ff-109.0-edge-110.0.1587.41-1
    steps:
      - name: Checkout 🛎
        uses: actions/checkout@v3
      - name: Cypress run
        uses: cypress-io/github-action@v6.6.0
        with:
          install-command: npm install
          start: npm run cypress:run:dev --verbose
          project: apps/game-zone-e2e
          browser: chrome
          record: true
          parallel: true
        env:
          # DEBUG: 'cypress:*'
          CYPRESS_PROJECT_ID: ${{ vars.CYPRESS_PROJECT_ID }}
          CYPRESS_BASE_URL: ${{ github.event.deployment_status.target_url }}
          CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
          NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          COMMIT_INFO_MESSAGE: ${{ env.COMMIT_INFO_MESSAGE }}
          COMMIT_INFO_AUTHOR: ${{ env.COMMIT_INFO_AUTHOR }}

已在job级别通过echo验证COMMIT_INFO_MESSAGE和COMMIT_INFO_AUTHOR变量能获取到值,但在Cypress中该变量显示为“null (by null)”。奇怪的是github.event.deployment_status.target_url环境变量能正常生效,请问哪里配置出错了?


解决方案

问题根源

github.event.head_commit是仅在push事件中存在的属性,而你的job仅在deployment_status事件触发(通过if条件限制),所以实际运行时COMMIT_INFO_MESSAGE和COMMIT_INFO_AUTHOR获取到的是null。你之前用echo验证能拿到值,大概率是测试时用了push事件触发,而非实际的deployment_status事件。

而github.event.deployment_status.target_url能正常生效,是因为这个属性是deployment_status事件本身自带的字段,不存在获取不到的问题。

修复方法

方法一:手动通过Git命令提取提交信息

在checkout步骤后新增一个步骤,通过提交哈希从Git历史中提取信息并设置环境变量:

- name: 获取提交信息
  run: |
    # 从deployment事件中拿到提交哈希
    COMMIT_SHA=${{ github.event.deployment.sha }}
    # 提取提交信息和作者
    COMMIT_MESSAGE=$(git log --format=%B -n 1 $COMMIT_SHA)
    COMMIT_AUTHOR=$(git log --format=%an -n 1 $COMMIT_SHA)
    # 将信息写入环境变量,供后续步骤使用
    echo "COMMIT_INFO_MESSAGE=$COMMIT_MESSAGE (by $COMMIT_AUTHOR)" >> $GITHUB_ENV
    echo "COMMIT_INFO_AUTHOR=$COMMIT_AUTHOR" >> $GITHUB_ENV

同时删除job级别的env定义(因为现在是动态生成这些变量)。

方法二:利用Cypress Action自动收集提交信息

Cypress GitHub Action本身可以自动从Git历史中提取提交信息,只需确保:

  1. 拉取完整的Git历史(默认checkout的fetch-depth为1,无法获取完整提交信息)
  2. 切换到部署对应的提交哈希

修改checkout步骤:

- name: Checkout 🛎
  uses: actions/checkout@v3
  with:
    fetch-depth: 0  # 拉取完整Git历史
    ref: ${{ github.event.deployment.sha }}  # 切换到部署对应的提交

之后可以直接删除job级和Cypress步骤中的COMMIT_INFO_*变量,Cypress Action会自动将提交信息同步到Cypress Cloud。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 15:45:07