簡體   English   中英

Gitlab CI 如何在構建 docker 鏡像之前運行測試

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM