我正在开发一个仪表盘Web应用程序,想要使用Github Actions进行部署和测试。我已经成功编写了一个工作流来构建和推送Docker镜像,但在测试方面出现了问题。
这是一个Vue 2应用程序,监听8080端口,使用Cypress执行测试。我的工作流程使用docker-compose以生产方式构建它,并通过nginx提供服务。当然,在公司服务器上它适用于生产。
通过Github Actions部署时,nginx的执行和构建阶段都像平常一样,应用程序应该正常运行,但是Cypress在运行测试时会在http://127.0.0.1:8080 抛出ECONNREFUSED错误,就好像Github阻止我的应用程序监听此端口或它在外部容器上运行一样。
我假设有一种方法可以在Github Actions上运行和测试Web服务器,但我无法在文档或论坛中找到它。
有人知道如何做到这一点吗?
下面是我 .yml GitHub工作流的注释版本。
这是一个Vue 2应用程序,监听8080端口,使用Cypress执行测试。我的工作流程使用docker-compose以生产方式构建它,并通过nginx提供服务。当然,在公司服务器上它适用于生产。
通过Github Actions部署时,nginx的执行和构建阶段都像平常一样,应用程序应该正常运行,但是Cypress在运行测试时会在http://127.0.0.1:8080 抛出ECONNREFUSED错误,就好像Github阻止我的应用程序监听此端口或它在外部容器上运行一样。
我假设有一种方法可以在Github Actions上运行和测试Web服务器,但我无法在文档或论坛中找到它。
有人知道如何做到这一点吗?
下面是我 .yml GitHub工作流的注释版本。
name: Build and test
# event listener to trigger the workflow
on:
push:
branches:
- 'workflows-dev'
- 'master'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2 # Checkout into the repo
- run: sed -i -e "s/http\:\/\/<STRAPI_URL>/${{ secrets.PREPROD_URL }}/" Dockerfile
- run: docker build -t dashboard:${{ github.run_id }}-test . # Build docker image with a unique tag
- run: docker run dashboard:${{ github.run_id }}-test & # Runs it as a demon job '&'
- run: sleep 60 # Sleeping to let the server actually start up before testing
- run: |
echo {\"site\": \"http://127.0.0.1:8080\", \"identifier\": \"${{ secrets.PREPROD_USER }}\", \"password\": \"${{ secrets.PREPROD_PASSWORD }}\"} > tests/cypress.env.json # Setup ENV variables for the tests
- run: npm test