gpt4 book ai didi

python - 在 GitHub Actions CI 中运行 testcontainers-python

转载 作者:行者123 更新时间:2023-12-04 09:27:25 25 4
gpt4 key购买 nike

为了确保功能性,我们希望在 GitHub Actions 上执行 out CI 内的所有测试。 .这里我们配置了一个叫做测试的部分,它在定义的文件夹中执行 pytests。这已经适用于“单元测试”——这意味着所有不需要与其他容器交互的测试。
此外,我们希望添加与容器(即数据库)交互的测试。但是,开箱即用这是失败的,因为启动测试容器失败。引发异常,因为在 testcontainers 的启动脚本中执行 POST 以测试容器的准备情况。

    .venv/lib/python3.8/site-packages/urllib3/connectionpool.py:392:

def request(self, method, url, body=None, headers={}, *,
encode_chunked=False):
"""Send a complete request to the server."""
> self._send_request(method, url, body, headers, encode_chunked)
我们的 Action 看起来像这样:
name: Test CI

on: [push]

env:
PROJECT: test
ACTION_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
PYTHON_VERSION: 3.8

jobs:
tests:
name: Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: pytest
run: |
IMAGE_NAME="${{ env.PROJECT }}:test"
docker build . --file test.dockerfile -t $IMAGE_NAME
docker run $IMAGE_NAME

最佳答案

事实证明,GitHub 启动的默认容器没有 docker 客户端。因此,部分解决方案是通过将以下内容添加到我们的 dockerfile 来手动安装 docker:

RUN apt -y install docker.io
此外,容器仍然无法运行 docker 容器,因为它没有自己的构建守护程序。这里的技巧是通过传递 docker.sock 来使用由 GitHub Actions 拥有的容器提供的容器。作为一个卷。因此,我们将 CI yml 中的最后一行替换为:
docker run -v "/var/run/docker.sock":"/var/run/docker.sock" $IMAGE_NAME

关于python - 在 GitHub Actions CI 中运行 testcontainers-python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62955183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com