Gitlab ci 无法 运行 docker-compose for django app

Gitlab ci fails to run docker-compose for django app

我正在设置一个 gitlab 管道,我想用它来使用 Terraform 在 AWS 上部署 Django 应用程序。

目前我只是在设置管道,以便验证 terraform 和 运行s 测试 (pytest) 和 lynting。

管道在 docker 中使用 docker,它看起来像这样:

image:
  name: hashicorp/terraform:1.0.5
  entrypoint:
    - '/usr/bin/env'
    - 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'


stages:
  - Test and Lint


Test and Lint:
  image: docker:20.10.9
  services:
    - docker:20.10.9-dind
  stage: Test and Lint
  script:
    - apk add --update docker-compose
    - apk add python3
    - apk add py3-pip
    - docker-compose run --rm app sh -c "pytest && flake8"
  rules:
    - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /^(master|production)$/ || $CI_COMMIT_BRANCH =~ /^(master|production)$/'

由于数据库错误,管道无法 运行 测试,我认为这很奇怪,因为我正在使用 pytest 来模拟 django 数据库。

如果我 运行: docker-compose run --rm app sh -c "pytest && flake8" 在我本地机器的终端上,所有测试都通过了。

知道如何调试吗?

p.s。 让我知道是否需要添加更多信息。

我认为您不能直接在 CI 中 运行 docker。您可以指定在每个步骤中使用哪个图像,然后 运行 命令。例如:

image: "python:3.7"

before_script:
  - python --version
  - pip install -r requirements.txt

stages:
  - Static Analysis
  - Test

unit_test:
  stage: Test
  script:
  - pytest

看,在这个管道中,我使用了 python:3.7 图像。您可以将 docker 图像上传到某个注册表并在管道中使用它。

我设法解决了它并且 CI 中的测试通过了

  script:
    - apk add --update docker-compose
    - docker-compose up -d --build && docker-compose run --rm app sh -c "pytest && flake8"