簡體   English   中英

從 Gitlab CI 管道運行 Postman 的 Docker 映像

[英]Running Docker image of Postman from Gitlab CI pipeline

我想從 Gitlab CI 管道中的 Docker 圖像運行Postman集合。 Docker 套接字文件已為 gitlab-ci-runner 安裝,因此運行程序可以訪問 docker 服務器。

這是來自.gitlab-ci.yaml 的工作定義

postman:
    image: docker:20.10.14
    stage: schedule
    only: 
        - schedules
    before_script: []
    script:
        - env
        - docker run -t -v $CI_PROJECT_DIR:/etc/newman postman/newman run postman_collection.json

gitlab CI runner 的控制台 output 如下所示:

    $ docker run -t -v $CI_PROJECT_DIR:/etc/newman postman/newman run postman_collection.json
error: collection could not be loaded
  unable to read data from file "postman_collection.json"
  ENOENT: no such file or directory, open 'postman_collection.json'

文件存在。 我什至試過

 docker run --rm -it -v $PWD:/etc/newman --entrypoint sh postman/newman

從我的本地主機控制台並手動運行它。 這一切都在那里。 我錯過了什么?

  • 項目清單

Docker 套接字文件已為 gitlab-ci-runner 安裝

這里的問題是,在您正在與主機 docker 守護進程(即,當主機 docker 套接字安裝在作業中時)交談的場景中,當您將卷參數傳遞給docker run -v /source/path:/container/path參數的/source/path部分指的是主機文件系統,而不是作業容器的文件系統。

可以這樣想:主機 docker 守護程序不知道它的套接字安裝在作業容器內。 因此,當您以這種方式運行docker命令時,就好像您在運行器主機上運行docker命令一樣!

因為作業命令中的$PWD$CI_PROJECT_DIR評估為作業容器中的路徑(並且此路徑不在運行器主機文件系統上),所以卷安裝將無法按預期工作。

此限制在Docker 套接字綁定文檔的限制中注明:

將源存儲庫中的文件和目錄共享到容器中可能無法按預期工作。 卷掛載是在宿主機的上下文中完成的,而不是構建容器


這里最簡單的解決方法可能是使用 postman postman/newman作為您的image:而不是docker

myjob:
  image: 
    name: postman/newman
    entrypoint: [""]

  script:
    - newman run postman_collection.json

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM