这是我的配置:
我正在使用docker gitlab-runners通过以下.gitlab-ci.yml启动docker-compose:
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
目录。我以为,“ volume”部分意味着运行器容器中的/c
目录将接收文件,并且会将它们收集为工件。
实际行为是容器的/c
目录为空(仅存在通过.gitlab-ci.yml中的touch命令创建的文件),但是存在一个/c
目录是在跑步者的物理机器上创建的,其中包含文件(!),但没有__CREATED_FROM_RUNNER__
文件。
任何有关正在发生的事情的见解将不胜感激。另外,如何将创建的文件作为工件检索?