Docker 组合 - 尽管退出状态非零,但我的命令并未失败?

问题描述 投票:0回答:1

在我团队的 CI/CD 管道中,我们有以下制作秘诀:

test-some-service:
    echo "Running some tests...." && \
    docker-compose up service-target-test && \
    status=$$?; \
    # ...
    exit $$status

尽管收集了 docker-compose 退出状态,但当失败时,CI 管道仍然通过,但出现误报。

服务目标测试1 |失败(错误=1)
服务目标测试1 | make: *** [Makefile:2: 测试] 错误 1 退出并显示代码 2
...
...
成功了!

这导致开发人员在不知道变更集未通过我们的质量检查的情况下推送破坏代码。我们已多次尝试重构此配方,但仍然遇到相同的问题。我们在这里做错了什么?

docker docker-compose signals exit-code sigterm
1个回答
0
投票

请使用

docker compose run
代替
docker compose up
:

test-clearcast-orm:
    set -e && \
    echo "Running some tests...." && \
    # ...
    docker-compose run --rm service-target-test

run 命令的作用类似于 docker run -ti,它打开容器的交互式终端,并返回与容器中进程的退出状态匹配的退出状态。

docker compose run
命令更适合运行“一次性”或“临时”任务。

参见:

© www.soinside.com 2019 - 2024. All rights reserved.