gpt4 book ai didi

maven - Jenkins:当 Maven 构建发生在 Docker 容器中时如何使用 JUnit 插件

转载 作者:行者123 更新时间:2023-12-02 00:54:31 24 4
gpt4 key购买 nike

我正在尝试创建一个管道,Jenkins 在其中构建我的 Docker 镜像,运行测试,然后在测试通过时部署容器。问题是我在 docker 容器内运行了 maven,并且在运行容器之前我实际上无法访问已发布的测试。我希望在测试通过后运行和部署 Docker 容器。这似乎是一件简单的事情,但我想不出一个好的方法来做到这一点。我误解了什么吗?谢谢。

Dockerfile:

FROM openjdk:10 as step-one

COPY ./ /var/www/java/
WORKDIR /var/www/java

RUN apt-get update -y && apt-get install -y maven

RUN mvn clean package -X

ENTRYPOINT ["java"]
CMD ["-jar", "target/gs-serving-web-content-0.1.0.jar"]

EXPOSE 8080

Jenkins 文件:

pipeline {

agent any

stages {
stage('Build') {
steps {
echo 'Building..'
sh 'docker build -t spring-image .'

}
}
stage('Test') {
steps {
echo 'Testing..'
junit '/var/www/java/target/surefire-reports/TEST-ma.SpringTest.xml'
}
}


stage('Deploy') {
steps {
echo 'Deploying....'
sh 'docker run -i -d --name spring-container spring-image'
}
}
}
}


最佳答案

您可以在 junit 之前创建一个临时容器提取测试结果文件以将测试结果复制到您的工作空间。最后删除它

sh 'docker create --name temporary-container spring-image'
sh 'docker cp temporary-container:/var/www/java/target/surefire-reports .'
sh 'docker rm temporary-container'
junit 'surefire-reports'

你也可以看看做 docker-pipeline为您提供一些抽象来构建 docker 镜像的文档

关于maven - Jenkins:当 Maven 构建发生在 Docker 容器中时如何使用 JUnit 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55405383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com