Github操作:如何确保服务器正常运行



在我的GitHub操作yaml文件中,我在末尾有两个命令。第一个是yarn start(用于启动服务器(,第二个用于运行测试文件。

在本地服务器上,我通常运行yarn start,然后等待前端和后端端口运行,然后只有我从另一个终端运行测试

但从GitHub操作来看,它运行yarn start命令,然后立即运行测试脚本,所以当测试文件运行时,服务器没有在端口上侦听。这就是我的测试脚本失败的原因。如何确保测试脚本在yarn start完成后运行?

这是我的action.yml文件

name: "Github Actions Test"
on:
push:
branches:
- wip/checkout2
jobs:
test:
runs-on: ubuntu-latest
env:
PRISMA_ENDPOINT: ${{secrets.PRISMA_ENDPOINT}}
PRISMA_SECRET: ${{secrets.PRISMA_SECRET}}
steps:
- uses: actions/checkout@v1
- name: "Install Node"
uses: actions/setup-node@v1
with:
node-version: "12.x"
- name: "Install global packages"
run: npm install -g yarn prisma-cli concurrently mocha
- name: "Run docker Container"
run: docker-compose -f docker-compose.yml up --build -d
- name: "Install deps"
run: yarn install
- name: "prisma deploy"
run: yarn deploy:backend
- name: "Seed Backend"
run: yarn seed:backend
- name: "Build app"
run: yarn build
- name: "Start backend and frontend concurrently on background and run tests"
run: |
yarn start &
yarn test

另一个选项是等待

./node_modules/.bin/wait-on tcp:3000

您需要执行以下操作之一:

选项1:运行测试前等待几秒钟:

run: |
yarn start &
sleep 10
yarn test

选项2:等待端口打开,并使用为此目的设计的一些实用程序。也许等待端口(未测试(

选项3:使用本地linux工具等待端口打开——示例1,示例2。

与@DannyB的建议类似,您可以等待几秒钟,然后使用curl测试网络连接,以测试服务器是否在后台正常运行。

例如:

- name: "Start backend and frontend concurrently on background and run tests"
run: |
yarn start &
sleep 10 &&
curl http://localhost:8000 &&
yarn test

通过这种方式,您可以检查工作流作业的日志,并在执行测试之前确认服务器已启动并正在运行。

如果建立了连接,默认情况下curl http://localhost:<PORT>将返回网页的内容。您也可以在命令末尾添加一个-I,以确保只返回请求标头,并检查它是否具有HTTP/1.0 200 OK状态。

最新更新