Gitlab: собрать докерский контейнер, затем использовать его для компиляции
Вот мой.gitlab-ci.yml
stages:
- containerize
- compile
build_image:
image: docker
stage: containerize
script:
- docker build -t compiler_image_v0 .
compile:
image: compiler_image_v0
stage: compile
script:
- make
artifacts:
when: on_success
paths:
- output/
expire_in: 1 day
build_image
работает правильно, созданное изображение отображается в списке при использовании docker images
Команда на машине с бегунами. Но вторая работа терпит неудачу с ошибкой:
ОШИБКА: задание не выполнено: ответ от демона: отказано в доступе по запросу для compiler_image_v0, хранилище не существует или может потребоваться "вход в докер" (executor_docker.go:168:1s)
В чем дело?
Это мое Dockerfile
FROM ubuntu:18.04
WORKDIR /app
# Ubuntu packages
RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install apt-utils subversion g++ make cmake unzip
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install libgtk2.*common libpango-1* libasound2* xserver-xorg
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install cpio
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install bash
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install autoconf automake perl m4
# Intel Fortran compiler
RUN mkdir /intel
COPY parallel_studio_xe_2018_3_pro_for_docker.zip /intel
RUN cd /intel && unzip /intel/parallel_studio_xe_2018_3_pro_for_docker.zip
RUN cd /intel/parallel_studio_xe_2018_3_pro_for_docker && ./install.sh --silent=custom_silent.cfg
RUN rm -rf /intel
1 ответ
Этап компиляции пытается вытащить изображение compiler_image_v0
, Это изображение существует только временно в контейнере докера сцены containerize
, В вашем репозитории gitlab есть реестр контейнеров, и вы можете поместить встроенный образ в containerize
этап, а затем потяните его в compile
этап. Более того: вы должны предоставить полное имя вашего личного реестра gitlab. Я думаю, что dockerhub используется по умолчанию.
Вы можете изменить свой .gitlab.ci.yaml
чтобы добавить команду push и использовать полностью именованное изображение:
stages:
- containerize
- compile
build_image:
image: docker
stage: containerize
script:
- docker build -t compiler_image_v0 .
- docker push registry.gitlab.com/group-name/repo-name:compiler_image_v0
compile:
image: registry.gitlab.com/group-name/repo-name:compiler_image_v0
stage: compile
script:
- make
artifacts:
when: on_success
paths:
- output/
expire_in: 1 day
Это перезаписывает изображение при каждой сборке. Но вы можете добавить некоторые версии.