ljb*_*ann 7 gitlab docker gitlab-ci gitlab-ci-runner docker-compose
我正在尝试使用 Gitlab CI/CD 构建 CI 管道。我的项目是一个基于 Symfony 的非常简单的 API。为了创建一致的环境,我将 docker-compose 与四个非常简单的容器(nginx、PHP、MySQL 和 composer)一起使用。我的 .gitlab-ci.yaml 看起来像这样:
stages:
- setup
setup:
stage: setup
before_script:
- docker-compose up -d
script:
- sleep 15
- docker-compose exec -T php php bin/console doctrine:schema:create
after_script:
- [...]
- docker-compose down
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是 ci 脚本不会等到docker-compose up -d完成。为了绕过这个,我添加了这个愚蠢的睡眠。
有一个更好的方法吗?
小智 3
为了节省搜索者的时间,我实现了 @gbrener 评论的解决方案。
想法:等到获得显示容器已启动的日志,然后继续管道。
1 - 获取日志作为检查点。我使用了容器的最后一个日志。例如:生成的后端应用程序。
2 - 获取容器名称。例如:ai-server-dev。
3 - 创建一个如下所示的 sh 脚本并将其命名为 Something.sh。前任:
#!/bin/bash
while ! docker logs ai-server-dev --tail=1 | grep -q "Generated backend app";
do
sleep 10
echo "Waiting for backend to load ..."
done
Run Code Online (Sandbox Code Playgroud)
4 - 将“sleep 15”替换为“sh wait_server.sh”,如问题中所示,以在管道中运行脚本。
| 归档时间: |
|
| 查看次数: |
3233 次 |
| 最近记录: |