簡體   English   中英

在 Docker 中運行的自定義 Azure DevOps 構建代理上安裝了卷的測試容器

[英]Testcontainers with volume mounts on custom Azure DevOps build agent running in Docker

在已經在 Docker 中運行的自我管理的自定義 Azure DevOps 代理上運行一些使用 Testcontainers 的集成測試時遇到問題。

主機是 Azure 上的 Ubuntu 20.04 虛擬機。 它安裝了 Docker,並運行了 2 個 docker 鏡像,一個用於我們基於 Java 的構建,另一個用於基於 Angular 的構建。 在基於 Java 的內部,我們使用 Testcontainers 運行 Maven。

為構建代理本身創建的 Docker 映像基於https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/docker?view=azure-devops#linux上的文檔。 它運行 Ubuntu 18.04,有一個WORKDIR /azpENTRYPOINT [ "./start.sh" ]

構建代理通過以下方式在主機上手動啟動:

docker run -d --name build-agent-java-1 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e AZP_URL=https://dev.azure.com/my-organisation \
  -e AZP_TOKEN=<mytoken> \
  -e AZP_AGENT_NAME=agent-1 \ 
  custombuildagentcr.azurecr.io/ubuntu1804-java11

-v /var/run/docker.sock:/var/run/docker.sockTestcontainers 文檔之后添加

這適用於某些 Testcontainers 測試,但不適用於其他測試。 更特別的是,它不適用於由 testcontainers 啟動的容器需要訪問已編譯的類文件(存在於構建代理 docker 上)的測試。

在搜索了很多其他問題之后,我認為問題在於“內部 docker”無法“看到”“外部 docker”(構建代理)上的文件。 請參閱Docker 卷掛載在 Azure DevOps Pipeline自托管 Azure DevOps 代理卷映射中不起作用

但是,我不清楚如何准確地應用它。

我嘗試在啟動構建代理 Docker 時添加-v $PWD:$PWD -w $PWD (因為 Testcontainer 文檔表明了這一點)。 但是,這會導致圖像無法啟動,因為./start.sh因為 ENTRYPOINT 不再可以在 WORKDIR 更改時解析。

我還嘗試將 ENTRYPOINT 更改為使用絕對路徑/azp/start.sh (並在該start.sh文件中執行cd /azp ),但這仍然不起作用。

如果我檢查可用的安裝,它會返回:

devops-agent-host-user@shared-devops-agent-host:~$ docker inspect build-agent-java-1 | jq '.[0].Mounts'
[
  {
    "Type": "bind",
    "Source": "/home/devops-agent-host-user",
    "Destination": "/home/devops-agent-host-user",
    "Mode": "",
    "RW": true,
    "Propagation": "rprivate"
  },
  {
    "Type": "bind",
    "Source": "/var/run/docker.sock",
    "Destination": "/var/run/docker.sock",
    "Mode": "",
    "RW": true,
    "Propagation": "rprivate"
  }
]

Azure 本身在 Docker 容器中使用 Docker 掛載卷,但不幸的是,我無法理解如何將其應用於我的情況。

我沒有通用的解決方案,但是我用testcontainers-keycloak 1.9.0 解決了我的問題,因為它不再使用綁定掛載,而是將類文件復制到容器中(請參閱https://github.com)。 com/dasniko/testcontainers-keycloak/issues/44 )。

暫無
暫無

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

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