docker - GitHub 操作 : How to run test inside container

标签 docker github-actions github-actions-services

我想在容器内运行 django 测试用例。
我能够从 docker hub 中提取私有(private)图像。但是当我运行命令进行测试时,它无法运行。
任何人都尝试在容器内运行测试用例。

jobs:
test:
container:
  image: abcd
  credentials:
    username: "<username>"
    password: "<password>"

steps:
  - uses: actions/checkout@v2
  - name: Display Python version
    run: |
      python -m pip install --upgrade pip
      pip install -r requirements/dev.txt
  - name: run test
    run: |
      python3 manage.py test
   

最佳答案

根据我的经验,我发现使用 GitHub 的 container指令会导致更多的困惑,而不是简单地在运行器本身上运行你想要的任何东西,就好像你在自己的机器上运行它一样。
我在 GitHub 上运行的大部分测试都在容器中运行,有些需要私有(private) DockerHub 镜像。
我总是这样做:

  • 创建 docker-compose.yml用于开发,所以我可以在本地测试。
  • 通常在 CI 中,您可能希望 docker-compose 中的内容略有不同。 (例如,没有卷映射) - 如果是这种情况,我将创建另一个 docker-compose.yml.ci子文件夹。
  • 我的 docker-compose.yml包含 test服务,它运行我想要的任何测试(或测试套件)。

  • 这是我正在使用的示例 GitHub 操作文件:
    name: Test
    on:
      pull_request:
      push: { branches: master }
    
    jobs:
      test:
        name: Run test suite
        runs-on: ubuntu-latest
        env:
          COMPOSE_FILE: .ci/docker-compose.yml
          DOCKER_USER: ${{ secrets.DOCKER_USER }}
          DOCKER_PASS: ${{ secrets.DOCKER_PASS }}
    
        steps:
        - name: Checkout code
          uses: actions/checkout@v2
    
        - name: Login to DockerHub
          run: docker login -u $DOCKER_USER -p $DOCKER_PASS
    
        - name: Build docker images
          run: docker-compose build
    
        - name: Run tests
          run: docker-compose run test
    
    当然,这需要设置上面提到的两个 secret ,但除此之外,我发现这种方法是:
  • 可靠
  • 便携(我用相同的方法轻松地从 Travis CI 切换)
  • 兼容开发环境
  • 在本地和 CI 中易于理解和重现
  • 关于docker - GitHub 操作 : How to run test inside container,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64364989/

    相关文章:

    node.js - 如何在docker中执行sails js

    docker - AWS ECS如何在私有(private)桥接网络中启动容器

    amazon-web-services - 将 SSH 连接到我的 ec2 实例并部署代码的 Github 操作

    haskell - 用于测试 Haskell 包的 GitHub 操作?

    iOS Github操作(构建,测试和部署)

    macos - Docker默认的CPU体系结构与主机的体系结构不匹配

    docker - 从主机到容器的 Containerd 端口映射

    matrix - Azure Pipelines 数据驱动矩阵

    github-actions - 在 github actions 中启动服务之前克​​隆数据