【发布时间】:2021-12-10 02:19:27
【问题描述】:
我正在学习 Testdriven.io:使用 FastAPI 和 Docker 进行测试驱动开发课程,目前正在学习持续集成部分。在本节中,您将使用 github 操作来构建您的 docker 映像并运行测试和 linting 等等。
在流程的测试 Docker 映像步骤中,尝试 pytest 时收到以下错误:错误:进程已完成,退出代码为 137
工作流 main.yml:
name: Continuous Integration and Delivery
on: [ push ]
env:
IMAGE: docker.pkg.github.com/$(echo $GITHUB_REPOSITORY | tr '[A-Z]' '[a-z]')/summarizer
jobs:
build:
name: Build Docker Image
runs-on: ubuntu-latest
steps:
- name: Checkout master
uses: actions/checkout@v2.3.4
- name: Log in to GitHub Packages
run: echo ${GITHUB_TOKEN} | docker login -u ${GITHUB_ACTOR} --password-stdin docker.pkg.github.com
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Pull image
run: |
docker pull ${{ env.IMAGE }}:latest || true
- name: Build image
run: |
docker build \
--cache-from ${{ env.IMAGE }}:latest \
--tag ${{ env.IMAGE }}:latest \
--file ./project/Dockerfile.prod \
"./project"
- name: Push image
run: |
docker push ${{ env.IMAGE }}:latest
test:
name: Test Docker Image
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout master
uses: actions/checkout@v2.3.4
- name: Log in to GitHub Packages
run: echo ${GITHUB_TOKEN} | docker login -u ${GITHUB_ACTOR} --password-stdin docker.pkg.github.com
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Pull image
run: |
docker pull ${{ env.IMAGE }}:latest || true
- name: Build image
run: |
docker build \
--cache-from ${{ env.IMAGE }}:latest \
--tag ${{ env.IMAGE }}:latest \
--file ./project/Dockerfile.prod \
"./project"
- name: Run container
run: |
docker run \
-d \
--name fastapi-tdd \
-e PORT=8765 \
-e ENVIRONMENT=dev \
-e DATABASE_TEST_URL=sqlite://sqlite.db \
-p 5003:8765 \
${{ env.IMAGE }}:latest
- name: Pytest
run: docker exec fastapi-tdd python -m pytest tests
- name: Flake8
run: docker exec fastapi-tdd python -m flake8 .
- name: Black
run: docker exec fastapi-tdd python -m black . --check
- name: isort
run: docker exec fastapi-tdd python -m isort . --check-only
在本地对 docker 容器运行 pytest 可以正常工作。似乎没有任何其他我可以访问的日志可以更清楚地说明为什么会发生这种情况。任何帮助将不胜感激。
【问题讨论】:
-
这可能与操作系统内存使用有关:退出代码137表示您的进程在您手动停止的情况下被(信号9)SIGKILL杀死。如果您没有手动停止脚本并且仍然收到此错误代码,则该脚本已被您的操作系统杀死。在大多数情况下,它是由过多的内存使用引起的。参考:stackoverflow.com/questions/43268156/…
-
有趣...它在尝试执行 pytest 后立即死亡...我原以为 Github 操作能够处理这个问题,特别是因为它实际上就像本教程的 5 个小测试.这让我相信这个命令或者什么东西有很大的问题......
-
您是否尝试在工作流中使用另一个 docker 映像来检查之后用于测试作业的构建作业是否有问题?
标签: python docker github-actions fastapi testdriven.io