GitHub操作:如何在容器内运行测试 [英] GitHub Actions: How to run test inside container

查看:18
本文介绍了GitHub操作:如何在容器内运行测试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在容器中运行Django测试用例。 我可以从码头中心拉私人形象。但当我运行命令进行测试时,它无法运行。

任何人都尝试在容器内运行测试用例。

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
   

推荐答案

在我的经验中,我发现使用gihub的container指令比简单地在Runner上运行任何您想要的东西更容易造成混乱,就像在您自己的机器上运行一样。

我在GitHub操作上运行的大部分测试都在容器中运行,有些测试需要私有的DockerHub映像。

我总是这样做:

  1. 创建供开发使用的docker-compose.yml,以便我可以在本地进行测试。
  2. 通常在配置项中,您可能希望docker-compose中的内容略有不同(例如,没有卷映射)-如果是这种情况,我将在.ci子文件夹中创建另一个docker-compose.yml
  3. 我的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

当然,这需要设置前面提到的两个秘密,但除此之外,我发现这个方法是:

  • 可靠
  • 可移植(我轻松地从Travis CI切换到相同的方法)
  • 兼容开发环境
  • 易于在本地和CI中理解和复制

这篇关于GitHub操作:如何在容器内运行测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆