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"
我正在设置一个 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"