簡體   English   中英

在Jenkins中使用docker-maven-plugin運行Maven集成測試

[英]Running maven integration tests with docker-maven-plugin in Jenkins

我有一個使用io.fabric8 docker-maven-plugin啟動數據庫的maven項目,這是我的集成測試的一部分。 當我在本地運行集成測試時,它可以工作,但是在我的Jenkins服務器上運行時,我收到一條錯誤消息,提示沒有DOCKER_HOST變量。

[ERROR] Failed to execute goal io.fabric8:docker-maven-plugin:0.20.1:start (prepare-itdatabase) on project myproject: Execution prepare-itdatabase of goal io.fabric8:docker-maven-plugin:0.20.1:start failed: No <dockerHost> given, no DOCKER_HOST environment variable, no read/writable '/var/run/docker.sock' or '//./pipe/docker_engine' and no external provider like Docker machine configured -> [Help 1]

值得一提的是,我的Jenkins實例本身是通過docker run jenkins啟動的,只需使用docker run jenkins類的東西docker run jenkins

啟動Jenkins時,我嘗試將DOCKER_HOST變量設置為tcp://192.168.59.103:2375 ,但這只是導致它在構建DOCKER_HOST時。

我的Jenkins實例本身是通過docker啟動的,只需使用docker run jenkins之類的東西即可

我假設您直接在容器的Jenkins主服務器(沒有從屬服務器)上運行構建。 您的構建過程在未安裝Docker二進制文件或套接字的容器內運行。

您必須將Docker套接字安裝在您的容器中並安裝Docker二進制文件。 這篇博客文章詳細解釋了事情 ,簡而言之,您可以做的是:

使用Docker套接字啟動Jenkins容器:

docker run -p 8080:8080 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --name jenkins \
  jenkins/jenkins:lts

並將Docker安裝在容器中。 該博客文章給出了一個方便的腳本,可以在容器內運行:

apt-get update && \
apt-get -y install apt-transport-https \
     ca-certificates \
     curl \
     gnupg2 \
     software-properties-common && \
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \
add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
   $(lsb_release -cs) \
   stable" && \
apt-get update && \
apt-get -y install docker-ce

您可以手動運行此腳本,也可以將其作為Jenkins構建的一部分。 從現在開始,您應該能夠從容器內部(以及內部版本)運行Docker命令。

另外,您可以獨立於Master來配置Jenkins從站,並在該從站上安裝Docker。

暫無
暫無

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

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