我已经成功地创建了一个脚本来测试使用Cypress与Github Actions集成的Vercel测试部署。尽管测试可以工作并且达到了期望的结果,但是有一个稍微令人讨厌的问题——Cypress测试在Vercel部署尝试之前运行(并被跳过)。我在GA工作流yml中使用条件,以便在成功的测试部署后运行Cypress测试,因此它最终在部署后运行。我希望能够省略第一次跳过的尝试在柏树测试。我曾尝试合并其他Github动作来解决这个问题,但如果部署未完成,它们会阻止测试运行。我也试过用回购的设置玩,无济于事。下面是我的GA:
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部署之前先运行?
在您的部署中发生了什么:
- 将更改推送到repo
- vercel监视你的repo,看到有一个新的提交
- 它将状态
pending
发送到您的repo并在vercel服务器上构建这些东西。现在你的回购知道vercel在做一些事情你可以看到,比如在你的PR检查中。=比;有了这个"状态更新"您的工作流被自动触发(但是因为条件为false而被跳过),因为状态从none变为pending"> - vercel已经完成部署,并向GitHub发送另一个状态更新。=比;您的工作流再次被触发。但是这次工作流程中的
if
条件为真,其余的将被执行。
所以这是不可能避免跳过的工作流程与deployment_status
作为触发的工作流程。