GitHub 操作:如何 运行 在容器内进行测试
GitHub Actions: How to run test inside container
我想 运行 容器内的 django 测试用例。
我可以从 docker 集线器中提取私人图像。但是当我运行命令测试时,运行.
失败了
有人在容器内尝试过运行宁测试用例。
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 操作上进行的大部分测试都是在容器中 运行,有些需要私有 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
当然,这需要设置上面提到的两个秘密,但除此之外,我发现这个方法是:
- 可靠
- 便携(我用同样的方法从 Travis CI 轻松切换)
- 兼容开发环境
- 在本地和 CI
中都易于理解和复制
我想 运行 容器内的 django 测试用例。 我可以从 docker 集线器中提取私人图像。但是当我运行命令测试时,运行.
失败了有人在容器内尝试过运行宁测试用例。
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 操作上进行的大部分测试都是在容器中 运行,有些需要私有 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
当然,这需要设置上面提到的两个秘密,但除此之外,我发现这个方法是:
- 可靠
- 便携(我用同样的方法从 Travis CI 轻松切换)
- 兼容开发环境
- 在本地和 CI 中都易于理解和复制