【问题标题】:Dockerfile as jenkins slave with maven settingsDockerfile 作为具有 Maven 设置的詹金斯奴隶
【发布时间】:2020-01-12 23:26:54
【问题描述】:

我在我的 dockerfile 中使用图像 jenkins/ssh-slave 作为基础。我想安装一个特定的 Maven 版本并配置设置。但它不起作用,它没有选择从我的关系下载工件的设置。此外,我不知道该指定谁的 maven 版本:(

你可以在下面看到我的 dockerfile。 我试图安装 Maven 输入 maven:3.5.6 但它说它找不到。 而且我也复制了我的设置,但 maven 没有去我的 nexus 下载依赖项(settings.xml 在本地工作)

FROM jenkins/ssh-slave

# Install selected extensions and other stuff
RUN apt-get update && apt-get -y --no-install-recommends install && apt-get clean   

# Install maven 
RUN apt-get install -y maven

COPY ./settings.xml /usr/share/maven/conf/settings.xml

有人可以帮忙吗? 非常感谢您。

【问题讨论】:

  • 您是否正在运行任何 maven 命令,例如 mvn clean install 或 mvn clean package ?
  • 是的,我运行mvn clean install,此时它尝试下载依赖项,但由于无法下载仅在我们的关系库中的自定义依赖项而出现错误。

标签: java node.js jenkins-pipeline dockerfile maven-3


【解决方案1】:
FROM jenkins/ssh-slave

# Install selected extensions and other stuff
RUN apt-get update && apt-get -y --no-install-recommends install && apt-get clean
RUN apt-get install -y curl 

ARG MAVEN_VERSION=3.6.2
ARG USER_HOME_DIR="/usr/jenkins"
ARG SHA=d941423d115cd021514bfd06c453658b1b3e39e6240969caf4315ab7119a77299713f14b620fb2571a264f8dff2473d8af3cb47b05acf0036fc2553199a5c1ee
ARG BASE_URL=https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries

RUN mkdir -p /usr/share/maven /usr/share/maven/ref \
  && curl -fsSL -o /tmp/apache-maven.tar.gz ${BASE_URL}/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
  && echo "${SHA}  /tmp/apache-maven.tar.gz" | sha512sum -c - \
  && tar -xzf /tmp/apache-maven.tar.gz -C /usr/share/maven --strip-components=1 \
  && rm -f /tmp/apache-maven.tar.gz \
  && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn

ENV MAVEN_HOME /usr/share/maven
ENV MAVEN_CONFIG "$USER_HOME_DIR/.m2"

RUN chown -R jenkins:jenkins /home/jenkins &&  chmod -R 777 /home/jenkins
COPY --chown=jenkins:jenkins ./settings.xml /home/jenkins/.m2/settings.xml

【讨论】:

    【解决方案2】:

    根据您的问题,

    我想安装一个特定的 maven 版本并配置 设置。

    我建议你使用 Maven Wrapper (mvnw) 而不是 mvn 命令。这将使您可以灵活地构建应用程序,而无需在 vm 或系统中预先安装 Maven。由于您使用的是 Docker,并且您正在使用 mvn clean install 命令,我建议您使用 mvnw clean install。

    mvn clean installmvnw clean install 之间存在区别。如果你想要特定版本的 maven,你也可以在 maven-wrapper.properties 文件中设置。

    我提供以下几个链接,以便对您有用。

    https://www.baeldung.com/maven-wrapper

    What is the purpose of mvnw and mvnw.cmd files?

    如果想要一个关于 maven 包装器的非常简单的示例,请参阅下面的 github 链接。 https://github.com/debjava/maven-wrapper-example

    【讨论】:

    • 感谢@Sambit,但我正在尝试在詹金斯中使用容器奴隶。目前管道正在使用 maven 包装器,但我想学习如何使用 ssh 构建容器,打开 jdk 和 maven,以便我可以将它用作 jenkins 中的从属。
    猜你喜欢
    • 1970-01-01
    • 2015-07-25
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多