![](/img/trans.png)
[英]How do I run my docker image from .gitlab-ci.yml after building the image?
[英]Gitlab CI how to run tests before building docker image
我有一個基於 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 映像?
我發現我可以創建多個作業,每個作業都有自己的圖像:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.