Вот моя конфигурация:
Я использую docker gitlab-runners для запуска docker-compose со следующим .gitlab-ci.yml:
stages:
- run
# Official docker compose image.
image:
name: docker/compose:1.23.2 # update tag to whatever version you want to use.
entrypoint: ["/bin/sh", "-c"]
services: # is that really necessary? behavior seems the same with or without
- docker:dind
before_script:
- docker version
- docker-compose version
run_compose:
stage: run
script:
- mkdir /c
- touch /c/__CREATED_FROM_RUNNER__
- docker-compose down -v
- docker-compose build
- docker-compose up
- ls -l /c
artifacts:
paths:
- /c/*
docker-compose.yml
, использованный в предыдущей версии скрипта, выглядит следующим образом:
version: "3"
services:
snitch:
image: snitch:latest
environment:
- PROGRAM_NAME=${PROGRAM_NAME}
volumes:
- /c:/caps
xtools:
image: xtools:latest
environment:
- PROGRAM_NAME=${PROGRAM_NAME}
Контейнер snitch записывает файлы в каталог /caps
. Я предположил, что раздел тома означал, что каталог /c
в контейнере бегуна будет получать файлы и что они будут собираться как артефакты.
Фактическое поведение заключается в том, что каталог /c
контейнера пуст (присутствует только файл, созданный командой touch в .gitlab-ci.yml), но в * * создан каталог /c
1016 * физическая машина бегуна с файлами внутри него (!), Но без файла __CREATED_FROM_RUNNER__
.
Любая информация о том, что происходит, будет принята с благодарностью. Кроме того, как я могу восстановить созданные файлы как артефакты?