运行 CI 管道中的开发服务器
Run a dev server in CI pipleine
我有一个使用 Github Action/Workflows 的 CI 管道设置,我想要 运行 赛普拉斯自动化测试,但是我有一些逻辑问题到 运行 我的开发服务器。让我向您展示我的管道
name: Nuxt CI Pipeline
on:
push:
branches: [ CI-pipeline ]
# pull_request:
# branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [ 14.x ]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- name: Make envfile
uses: SpicyPizza/create-envfile@v1
with:
envkey_ENV: staging
file_name: .env
- run: npm ci
- run: npm run dev
- run: |
cd e2e
ls -l
npm ci
npx cypress run
现在我想启动 devserver 和 运行 该端口上的测试通常是 3000 ,但是问题是当执行命令 npm run dev
时,管道一直在那里等待并且没有继续前进,这是有道理的,因为 devserver 不会像其他命令那样 return 做出响应,所以它有点卡在那里。我对 devops 的了解是最低限度的,有人可以指出我缺少什么吗?
我觉得执行的方式不是很理想,尤其是最后节点服务器也没有被正确杀死。使用像 start-server-and-test 这样的帮助程序包应该可以解决问题:
npm install --save-dev start-server-and-test
虽然我不确定您 package.json
中的脚本背后到底是什么,但最终可能看起来像这样:
"scripts": {
"start:ci": "<<start your dev server>>",
"cy:run": "cypress run --browser chrome --headless",
"cy:ci": "start-server-and-test start:ci http://localhost:3000 cy:run"
},
然后您可以使用 npm run cy:ci
将其简单地 运行 作为管道中的单个命令。该脚本将负责启动您的开发服务器,等待 URL 可用,然后执行测试,在所有测试完成后,它将关闭服务器。
我有一个使用 Github Action/Workflows 的 CI 管道设置,我想要 运行 赛普拉斯自动化测试,但是我有一些逻辑问题到 运行 我的开发服务器。让我向您展示我的管道
name: Nuxt CI Pipeline
on:
push:
branches: [ CI-pipeline ]
# pull_request:
# branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [ 14.x ]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- name: Make envfile
uses: SpicyPizza/create-envfile@v1
with:
envkey_ENV: staging
file_name: .env
- run: npm ci
- run: npm run dev
- run: |
cd e2e
ls -l
npm ci
npx cypress run
现在我想启动 devserver 和 运行 该端口上的测试通常是 3000 ,但是问题是当执行命令 npm run dev
时,管道一直在那里等待并且没有继续前进,这是有道理的,因为 devserver 不会像其他命令那样 return 做出响应,所以它有点卡在那里。我对 devops 的了解是最低限度的,有人可以指出我缺少什么吗?
我觉得执行的方式不是很理想,尤其是最后节点服务器也没有被正确杀死。使用像 start-server-and-test 这样的帮助程序包应该可以解决问题:
npm install --save-dev start-server-and-test
虽然我不确定您 package.json
中的脚本背后到底是什么,但最终可能看起来像这样:
"scripts": {
"start:ci": "<<start your dev server>>",
"cy:run": "cypress run --browser chrome --headless",
"cy:ci": "start-server-and-test start:ci http://localhost:3000 cy:run"
},
然后您可以使用 npm run cy:ci
将其简单地 运行 作为管道中的单个命令。该脚本将负责启动您的开发服务器,等待 URL 可用,然后执行测试,在所有测试完成后,它将关闭服务器。