GitLab CI流水线运行Postman Docker镜像提示文件不存在的问题排查
问题原因
你在docker:20.10.14容器内执行docker run时,调用的是GitLab Runner主机的Docker守护进程。此时$CI_PROJECT_DIR是job容器内部的项目路径,而主机上并没有这个路径,导致挂载的/etc/newman目录为空,newman自然找不到集合文件。
解决方案
方案1:直接使用postman/newman作为job镜像(最推荐)
不需要嵌套Docker,直接在job容器中运行newman命令,项目目录会自动挂载到job容器内,可直接访问集合文件:
postman: image: postman/newman stage: schedule only: - schedules script: - newman run postman_collection.json
方案2:指定集合文件的完整路径
直接指定newman容器内的完整挂载路径,绕开工作目录的问题:
postman: image: docker:20.10.14 stage: schedule only: - schedules script: - docker run -t -v $CI_PROJECT_DIR:/etc/newman postman/newman run /etc/newman/postman_collection.json
方案3:通过--volumes-from共享job容器的挂载卷
利用job容器的卷挂载,让newman容器直接访问job容器内的项目文件:
postman: image: docker:20.10.14 stage: schedule only: - schedules script: # docker executor下,job容器的hostname就是容器ID - CONTAINER_ID=$(hostname) - docker run -t --volumes-from $CONTAINER_ID postman/newman run $CI_PROJECT_DIR/postman_collection.json
方案4:设置newman容器的工作目录
通过-w参数将newman容器的工作目录设为挂载路径,让run命令在该目录下查找文件:
postman: image: docker:20.10.14 stage: schedule only: - schedules script: - docker run -t -v $CI_PROJECT_DIR:/etc/newman -w /etc/newman postman/newman run postman_collection.json
内容的提问来源于stack exchange,提问作者Lawrence I. Siden
相关产品推荐
相关产品推荐

