我试图创建一个管道,詹金斯将在该管道上构建我的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
Jenkinsfile:
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映像的抽象方法
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句