我有一个基于Python的存储库,我正在尝试设置Gitlab CI来使用Dockerfile构建一个Docker映像,并将映像推送到Gitlab的注册表中。
在构建Docker映像并将其部署到注册表之前,我希望使用Python运行单元测试。下面是我当前的gitlab-ci.yml文件,它只进行测试:
image: python:3.7-slim
before_script:
- pip3 install -r requirements.txt
test:
variables:
DJANGO_SECRET_KEY: some-key-here
script:
- python manage.py test
build:
DO NOT KNOW HOW TO DO IT
我正在检查Gitlab网站上的一些模板,并为Docker找到了一个模板:
# This file is a template, and might need editing before it works on your project.
# Official docker image.
image: docker:latest
services:
- docker:dind
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
build-master:
stage: build
script:
- docker build --pull -t "$CI_REGISTRY_IMAGE" .
- docker push "$CI_REGISTRY_IMAGE"
only:
- master
build:
stage: build
script:
- docker build --pull -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" .
- docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
except:
- master
但是,这两种方法对我来说都不管用,因为我需要用python来测试,而让docker来构建映像。有没有办法在Gitlab CI中不创建一个同时安装python和Docker的自定义Docker映像?
发布于 2018-11-07 22:03:59
我发现我可以创造多个工作岗位,每个工作都有自己的形象:
stages:
- test
- build
test:
stage: test
image: python:3.7-slim
variables:
DJANGO_SECRET_KEY: key
before_script:
- pip3 install -r requirements.txt
script:
- python manage.py test
only:
- master
build:
stage: build
image: docker:latest
services:
- docker:dind
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script:
- docker build --pull -t "$CI_REGISTRY_IMAGE" .
- docker push "$CI_REGISTRY_IMAGE"
only:
- master
https://stackoverflow.com/questions/53198152
复制相似问题