Gas*_*sim 3 gitlab docker gitlab-ci
我有一个基于 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
Run Code Online (Sandbox Code Playgroud)
我正在检查 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
Run Code Online (Sandbox Code Playgroud)
然而,这两个对我来说都不起作用,因为我需要用 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3028 次 |
| 最近记录: |