sfs*_*797 7 continuous-integration docker github-actions
我正在使用 GitHub Action 进行一些自动化测试,我的应用程序是在 docker 中开发的。
name: Docker Image CI
on:
push:
branches: [ master]
pull_request:
branches: [ master]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build the Docker image
run: docker-compose build
- name: up mysql and apache container runs
run: docker-compose up -d
- name: install dependencies
run: docker exec myapp php composer.phar install
- name: show running container
run: docker ps
- name: run unit test
run: docker exec myapp ./vendor/bin/phpunit
Run Code Online (Sandbox Code Playgroud)
在“显示正在运行的容器”步骤中,我可以看到所有容器都在运行,但对于 MySQL,状态为(运行状况:正在启动)。因此,我的单元测试用例全部失败,因为它需要连接到 MySQL。请问有没有办法只有当MySQL容器状态健康时才启动单元案例?
小智 6
您可以使用此处--wait记录的选项等待所有服务正常运行。
命令示例:docker compose up --detach --wait --wait-timeout 30
仅当所有服务都运行后,或者定义的运行状况检查正常时,该命令才会返回。
我想提供一种解决方案,不是一个聪明的解决方案,但它需要最少的配置并且可以立即使用,只需使用 GitHub Action for Sleeping 即可。
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Sleep for 30 seconds
uses: jakejarvis/wait-action@master
with:
time: '30s'
Run Code Online (Sandbox Code Playgroud)
假设:你的Mysql服务器将在30秒内启动并运行。
| 归档时间: |
|
| 查看次数: |
5197 次 |
| 最近记录: |