![](/img/trans.png)
[英]How to visualize output of JUnit integration tests in IntelliJ when using docker-maven-plugin?
[英]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.