如何解决Github Actions中Vercel部署前Cypress被触发跳过的问题
问题根源
你遇到的跳过记录是因为当前的触发规则会响应所有deployment_status事件:Vercel启动部署时会先推送queued、in_progress状态的部署事件,此时GitHub Actions会直接创建工作流实例,再根据job级别的if条件判断是否执行,不符合条件就会留下被跳过的运行记录。
解决方案
把过滤逻辑从job级别提前到工作流触发条件层面,不符合状态的事件直接不会创建工作流实例,自然就不会生成那条跳过的记录。
修改后的配置示例
name: Cypress Testing on: deployment_status: # 仅在部署成功且是Vercel发起的部署时才触发工作流 if: github.event.deployment_status.state == 'success' && contains(github.event.deployment_status.creator.login, 'vercel') jobs: e2e: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Setup npmrc run: echo "//registry.npmjs.org/:_authToken=${{secrets.NPM_AUTH_TOKEN}}" > .npmrc - name: Setup npm package run: npm init -y && npm install - name: Setup node 12 uses: actions/setup-node@v1 with: node-version: 12.x - name: Run Cypress uses: cypress-io/github-action@v2 env: CYPRESS_BASE_URL: ${{ github.event.deployment_status.target_url }}
可选补充规则
如果只需要针对预览环境跑测试、不需要在生产环境部署时触发测试,可以在触发条件的if判断里额外加环境校验:
if: github.event.deployment_status.state == 'success' && contains(github.event.deployment_status.creator.login, 'vercel') && github.event.deployment_status.environment == 'Preview'
内容的提问来源于stack exchange,提问作者juuust_a_bit_outside
相关产品推荐
相关产品推荐

