如何使用 GitHub 操作测试 Python 项目的 Dockerfile?

aah*_*nik 8 python testing docker github-actions

  • 有时我们在编写docker文件时会出错。如果 Dockerfile 中有错误,docker 构建将会失败。

  • 有时我们可能会忘记在 Dockerfile 中指定依赖项。让我们举个例子。

假设我有一个 python 脚本,可以截取任何网页(提供了 URL)的屏幕截图。

  • 现在,在我的代码中我使用 pyppeeteer(无头 chrome/chromium 自动化库(puppeteer 的非官方端口)
  • pyppeeteer 使用 chromium 和 chrome 驱动程序。这些已经安装在我的机器上。因此,运行pytest 将在我的本地开发环境中通过。
  • RUN我忘记在 dockerfile 中指定将安装 chromium 和 chrome 驱动程序的命令。因此在容器内运行测试将会失败。(尽管docker build会成功。)

我想自动化构建 docker 镜像并在容器中运行测试的任务。

在本地机器上,我可以运行docker build -t myproj .构建。

为了测试,我可以运行docker run -it myproj pytest(如果我忘记添加RUN安装 chromium 和 chromedriver,那么我的 pytest 将在容器内失败)

我希望我能够解释我的目的。

通常,在 github actions 中,python 源代码可以在 ubuntu、mac、windows 等上运行。除了不同的操作系统之外,我还想构建和测试我的 dockerfile。

aah*_*nik 14

经过更多的实验和研究,我发现解决我的问题很简单。

在文件夹内.github/workflows创建一个docker-build-test.yml文件。

 
name: Docker build and test

on:
  workflow_dispatch 
# you can trigger on anything you want

jobs:
  build:
   runs-on: ubuntu-latest
  
   steps:
     - uses: actions/checkout@v2
     - name: Build Docker image 
       run: docker build -t samplepy .
     - name: Run tests inside the container
       run: docker run samplepy poetry run pytest
Run Code Online (Sandbox Code Playgroud)

非常简单,因为 github 的 ubuntu-latest VM 已经安装并配置了 docker。您只需运行docker命令,一切就正常了。

而且,我还使用一个虚拟 python 项目测试了上述工作流程。

2021-04-17 14-02-29 截图