在过去的两个多月里,我一直在运行中的一些构建管道,这些管道使用的是坞-撰写,没有任何问题。管道使用Docker建立一个集成测试环境,并使用docker exec命令在主容器(容器-dev)上运行适用的单元和集成测试。
下面是云构建文件的一个片段:
- id: "Set Up Testing Instances (Docker Compose)"
name: docker
env:
- 'DISCORD_TOKEN=automated_test'
- 'DOCKER_NETWORK=cloudbuild'
args: ["compose", "up", "-d", "--build"]
- id: "Run Unit & Integration Tests"
name: docker
args: ["exec", "container-dev", "python", "-m", "coverage", "run", "-m", "pytest"]
- id: "Show Test Coverage"
name: docker
args: ["exec", "container-dev", "python", "-m", "coverage", "report"]
- id: "Build Test Docker Container"
name: docker
entrypoint: /bin/bash
args: ["build", ".", "--target", "live", "-t", "us-east1-docker.pkg.dev/$PROJECT_ID/my-registry/mycontainer:test"]这个配置已经为我工作了几个月了。然而,在9月13日突然间,当我试图运行这些管道(甚至重新尝试以前成功的)时,我遇到了一个问题,即步骤2、单元测试和集成测试在没有详细推理的情况下失败,只给出了状态代码137。我得到的日志如下:
Starting Step #1 - "Run Unit & Integration Tests"
Step #1 - "Run Unit & Integration Tests": Already have image (with digest): gcr.io/cloud-builders/docker
Finished Step #1 - "Run Unit & Integration Tests"
ERROR
ERROR: build step 1 "gcr.io/cloud-builders/docker" failed: step exited with non-zero status: 137我知道,如果运行容器的机器已耗尽内存,或已被另一个进程终止,则会发生状态代码137。最令人费解的方面是以前的成功管道是如何在重试时失败的。
除非最近在云构建中使用的底层机器发生了变化,否则我不认为内存可用性是问题所在。我试着只在一个独立容器中运行单元测试(没有停靠器组合),内存使用量明显减少,结果完全相同。公分母是图像gcr.io/cloud-builders/docker。
我的问题是:最近对云构建所做的更改会影响到这一点吗?为什么现在才发生这种事?
编辑:我尝试了更多的东西,比如更新来自谷歌的所有Docker图像,并更新了上面的YAML以反映这一点。137条信息现在又回来了。在此之前,对接者编写步骤似乎过早地终止,这将导致错误代码1(容器不可用)。
现在,由于我通过升级映像来解决这个问题,137错误又回来了,甚至当我从我的回购的主要分支运行时也是如此,我的回购在9月13日之前就已经成功了。我也使用了更多的内存/CPU来运行管道,但这仍然实现了相同的结果,即来自停靠程序的137个错误代码。
至于日志,我在上面发布的内容和我现在得到的几乎是一样的。为了获得更多的上下文,我将在这里添加几行。管道的第0步是在运行时在cloudbuild网络上设置容器,以便容器可以相互访问。
第一步是运行一个Docker映像,尝试在容器上运行exec命令来运行其单元测试,这就是它在137中失败的地方,它说它已经有了码头映像,然后在没有任何日志的情况下切断,所以我不知道容器内部发生了什么。
Step #0 - "Set Up Testing Instances (Docker Compose)":
Step #0 - "Set Up Testing Instances (Docker Compose)": #26 [container-dev] exporting to image
Step #0 - "Set Up Testing Instances (Docker Compose)": #26 exporting layers
Step #0 - "Set Up Testing Instances (Docker Compose)": #26 exporting layers 1.6s done
Step #0 - "Set Up Testing Instances (Docker Compose)": #26 writing image sha256:9ae549b1894c5ffcfadde428bd790fc26201a3a5b56b9d199adfac67b58ce669 done
Step #0 - "Set Up Testing Instances (Docker Compose)": #26 naming to docker.io/library/container-dev done
Step #0 - "Set Up Testing Instances (Docker Compose)": #26 DONE 2.8s
Step #0 - "Set Up Testing Instances (Docker Compose)": Container cloud-storage Creating
Step #0 - "Set Up Testing Instances (Docker Compose)": Container firestore Creating
Step #0 - "Set Up Testing Instances (Docker Compose)": Container pubsub Creating
Step #0 - "Set Up Testing Instances (Docker Compose)": Container cloud-storage Created
Step #0 - "Set Up Testing Instances (Docker Compose)": Container firestore Created
Step #0 - "Set Up Testing Instances (Docker Compose)": Container pubsub Created
Step #0 - "Set Up Testing Instances (Docker Compose)": Container data-prep Creating
Step #0 - "Set Up Testing Instances (Docker Compose)": Container data-prep Created
Step #0 - "Set Up Testing Instances (Docker Compose)": Container container-dev Creating
Step #0 - "Set Up Testing Instances (Docker Compose)": Container container-dev Created
Step #0 - "Set Up Testing Instances (Docker Compose)": Container cloud-storage Starting
Step #0 - "Set Up Testing Instances (Docker Compose)": Container firestore Starting
Step #0 - "Set Up Testing Instances (Docker Compose)": Container pubsub Starting
Step #0 - "Set Up Testing Instances (Docker Compose)": Container firestore Started
Step #0 - "Set Up Testing Instances (Docker Compose)": Container cloud-storage Started
Step #0 - "Set Up Testing Instances (Docker Compose)": Container pubsub Started
Step #0 - "Set Up Testing Instances (Docker Compose)": Container data-prep Starting
Step #0 - "Set Up Testing Instances (Docker Compose)": Container data-prep Started
Step #0 - "Set Up Testing Instances (Docker Compose)": Container container-dev Starting
Step #0 - "Set Up Testing Instances (Docker Compose)": Container container-dev Started
Finished Step #0 - "Set Up Testing Instances (Docker Compose)"
Starting Step #1 - "Run Unit & Integration Tests"
Step #1 - "Run Unit & Integration Tests": Already have image: docker
Finished Step #1 - "Run Unit & Integration Tests"
ERROR
ERROR: build step 1 "docker" failed: step exited with non-zero status: 137发布于 2022-09-16 06:58:57
我首先使用正式的Cloud映像:在这三个步骤中将name属性设置为docker,如前所述。旧的图像名称不再受到很好的支持。
然后,不要忘记将第一步的第一个参数从docker-compose更改为compose。
发布于 2022-09-19 22:50:51
经过多次尝试和错误之后,我发现最终被测试的容器由于缺少依赖关系而失败。出于某种原因,Google /Sub库进行了无声的升级/更改,突然需要一个名为pytz的库,它没有包含在它们的setup.py/pyproject.toml中,不知道这是如何发生的.
无论如何,在将pytz直接添加到我的requirements.txt文件后,容器现在可以工作了,并且管道运行。
https://stackoverflow.com/questions/73724341
复制相似问题