我一直在拼命地试图弄清楚是否有可能在jenkins代理上用docker构建文件构建一个mvn项目。运行管道时出现的错误是[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile
pipeline {
agent {
dockerfile {
filename 'DockerFile.build'
}
}
environment {
JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el8_2.x86_64"
}
stages {
stage('Build DockerFile') {
steps {
echo "building docker image"
sh "echo 1 | alternatives --config java"
sh "java -version"
sh "echo ${JAVA_HOME}"
git branch: "develop", credentialsId: 'cred_id', url: "git@bitbucket.org:repo.git"
dir("repo"){
sh "mvn clean install -X"
}
}
}
}
}
字符串
DockerFile.build
FROM centos
RUN yum update -y
RUN yum install -y java-11-openjdk-devel
RUN yum install -y java-11-openjdk
RUN yum install -y maven
ENV HOME=${home}
型
关于echo 1 | alternatives --config java
的一行是切换到java 11。如有任何帮助,我们将不胜感激。
2条答案
按热度按时间9lowa7mx1#
似乎你有一个docker构建文件(
Dockerfile
),你想要构建,这样你就有了一个可重用的镜像。一旦你有了镜像,你就可以将它推送到注册表(比如Dockerhub),或者在里面安装了应用程序代码的情况下运行它。如果您首先想将映像推送到注册表,则可以将其下拉并运行它。就像你拉下任何其他Docker镜像并运行它一样。我最近在这里回答了一个类似的问题:Dockerfile无法使用Maven构建应用-没有为此构建指定目标也许这有帮助?
看起来您有一个错误,因为您试图直接在jenkins主机上构建,而不是在安装了maven/java 11的docker容器中构建。
这是一个常见的错误,认为你是在一个主机上的docker容器中,而事实上你只是在主机上,容器在其中运行,而你没有意识到。检查
docker ps -a
以获取容器ID,然后使用docker exec -it bash
或docker exec -it sh
打开容器中的一个终端yfwxisqw2#
字符串
需要挂载.m2目录。在Caching Contents下面:https://www.jenkins.io/doc/book/pipeline/docker/