【问题标题】:Cypress test runs before Vercel deployment in Github ActionsCypress 测试在 Github Actions 中部署 Vercel 之前运行
【发布时间】:2021-11-15 09:06:44
【问题描述】:

我已经成功地创建了一个脚本来使用与 Github Actions 集成的 Cypress 来测试 Vercel 测试部署。尽管测试有效并且达到了预期的结果,但有一个稍微令人讨厌的问题——赛普拉斯测试在 Vercel 部署尝试之前运行(并被跳过)。我在 GA 工作流 yml 中使用条件,以便赛普拉斯测试在成功测试部署后运行,因此它最终在部署后运行。我希望能够在赛普拉斯测试中省略第一次跳过的尝试。我曾尝试合并其他 Github Actions 来解决此问题,但如果部署未完成,它们会完全阻止测试运行。我也尝试过使用 repo 的设置,但无济于事。以下是我的 GA yml:

name: Cypress Testing
on: [deployment_status]
jobs:
  e2e:
    if: github.event.deployment_status.state == 'success'
    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 }}

我们的 Vercel 项目与 Git 集成,因此每次推送都会自动部署。有没有人遇到过这个问题,赛普拉斯在部署 Vercel 之前尝试先运行?

【问题讨论】:

    标签: cypress github-actions vercel


    【解决方案1】:

    在您的部署中会发生什么:

    1. 您将更改推送到您的存储库
    2. vercel 监视你的 repo,看看有一个新的提交
    3. 它将状态pending 发送到您的存储库并在vercel 服务器上构建内容。所以现在你的 repo 知道 vercel 正在做某事,你可以看到例如在你的公关中。 => 使用此“状态更新”,您的工作流程会自动触发(但由于条件为假而被跳过),因为状态从无变为“待处理”
    4. vercel 已完成部署并向 GitHub 发送另一个状态更新。 => 再次触发您的工作流程。但是这次工作流中的if条件为真,其余的都会被执行。

    因此,使用deployment_status 作为工作流的触发器,无法避免跳过的工作流。

    【讨论】:

      猜你喜欢
      • 2022-08-04
      • 1970-01-01
      • 1970-01-01
      • 2018-06-06
      • 2021-06-25
      • 2022-11-06
      • 2021-06-17
      • 2022-06-24
      • 2021-01-29
      相关资源
      最近更新 更多