【问题标题】:Cannot put a file in an existing directory structure using Jenkins automation无法使用 Jenkins 自动化将文件放入现有目录结构中
【发布时间】:2021-10-08 13:16:23
【问题描述】:

我在将文件写入从先前的 curl/tar 命令创建的目录时遇到问题。我可以在现有目录结构下创建一个子目录,但我不能使用 tar 命令将文件放置在该现有目录结构中。

也就是说,我想在 /opt/$JMETER_VERSION/lib 目录下放一个 .jar 文件,但不能。奇怪的是我可以在 /opt/$JMETER_VERSION/lib 下创建一个子目录并可以在其中放置一个文件,但我不能使用 tar 命令,也不能使用 mv 或 cp 将文件放入 /lib 目录。

我做了一个“chmod +w /opt/$JMETER_VERSION/lib”,还做了一个“ls -l -R /opt”,一切都显示在根目录下,这就是我在执行此操作时遇到的问题来自 dockerfile 的自动化。知道为什么我不能写入 /opt/$JMETER_VERSION/lib 吗?

下面的 tar 命令导致自动化失败 -

&& curl -fsSL --compressed -o /tmp/mysql-connector.tar.gz https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-java-6.0.3.tar.gz
&& chmod +w /opt/$JMETER_VERSION/lib && tar -C /opt/$JMETER_VERSION/lib -xzvf /tmp/mysql-connector.tar.gz --strip-components 1 mysql-connector-java-6.0.3/mysql-connector-java-6.0.3-bin .jar \

【问题讨论】:

    标签: jenkins automation jmeter dockerfile tar


    【解决方案1】:

    鉴于您的用户能够创建此 /opt/$JMETER_VERSION 目录,它应该已经具有写入权限。

    我认为不可能在不保留整个目录结构的情况下从 tarball 中提取单个文件,因此我建议提取 mysql-connector-java-6.0.3 文件夹,将 mysql-connector-java-6.0.3-bin.jar 从中移动到 JMeter 的“lib”文件夹(或其他文件夹)位于JMeter Classpath) 并执行 /tmp 文件夹的清理。

    例如Dockerfile

    FROM openjdk:8-jdk-slim
    
    ARG JMETER_VERSION=apache-jmeter-5.4.1
    ARG JMETER_DOWNLOAD_URL=https://archive.apache.org/dist/jmeter/binaries/${JMETER_VERSION}.tgz
    
    RUN apt-get update && \
        apt-get install -y \
        curl procps && \
        rm -rf /var/lib/apt/lists/* 
    
    RUN mkdir -p /opt/${JMETER_VERSION} \
      && curl -fsSL -o /tmp/apache-jmeter.tar.gz ${JMETER_DOWNLOAD_URL} \
      && tar -xzf /tmp/apache-jmeter.tar.gz -C /opt/${JMETER_VERSION} --strip-components=1 \
      && rm -f /tmp/apache-jmeter.tar.gz \
      && curl -fsSL --compressed -o /tmp/mysql-connector.tar.gz https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-java-6.0.3.tar.gz \
      && tar -xzf /tmp/mysql-connector.tar.gz -C /tmp mysql-connector-java-6.0.3/mysql-connector-java-6.0.3-bin.jar \
      && mv /tmp/mysql-connector-java-6.0.3/mysql-connector-java-6.0.3-bin.jar /opt/${JMETER_VERSION}/lib \
      && rm -rf /tmp/mysql-connector*
    

    更多信息:Make Use of Docker with JMeter - Learn How

    【讨论】:

    • 我也尝试从我将 jar 文件写入到的不同目录中进行移动,这也导致自动化失败。我已经测试过只提取一个文件。单个文件提取工作。只是不要到已经创建的 /lib 文件夹。
    • FWIW - 自动化是在被锁定的 AWS EC2 上的 docker 容器上执行的,所以我真的无法访问它。当自动化失败时,我没有得到 user-data.log 文件,所以看不到错误是什么,只是作业失败了。
    【解决方案2】:

    如果有帮助,这里是有问题的 RUN 命令。如果我注释掉中间注释行上方的 tar 命令,则自动化通过,但我当然没有得到我需要的 .jar 文件。

    安装 JMeter、MySQL Connector for JMeter、插件管理器和插件(未弃用)

    RUN curl -fsSL --compressed -o /tmp/jmeter.tgz https://archive.apache.org/dist/jmeter/binaries/$JMETER_VERSION.tgz \
        && tar -C /opt -xzvf /tmp/jmeter.tgz \
        && rm /tmp/jmeter.tgz \
        && curl -fsSL --compressed -o /tmp/mysql-connector.tar.gz https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-java-6.0.3.tar.gz \
        && chmod +w /opt/$JMETER_VERSION/lib
        && tar -C /opt/$JMETER_VERSION/lib -xzvf /tmp/mysql-connector.tar.gz --strip-components 1 mysql-connector-java-6.0.3/mysql-connector-java-6.0.3-bin.jar \
        # && tar -C /tmp -xzvf /tmp/mysql-connector.tar.gz --strip-components 1 mysql-connector-java-6.0.3/mysql-connector-java-6.0.3-bin.jar \
        && rm /tmp/mysql-connector.tar.gz \
        && curl -fsSL --compressed -o /opt/$JMETER_VERSION/lib/ext/jmeter-plugins-manager.jar https://jmeter-plugins.org/get \
        && curl -fsSL --compressed -o /opt/$JMETER_VERSION/lib/cmdrunner-$CMDRUNNER_VERSION.jar https://repo1.maven.org/maven2/kg/apc/cmdrunner/$CMDRUNNER_VERSION/cmdrunner-$CMDRUNNER_VERSION.jar\
        && java -cp /opt/$JMETER_VERSION/lib/ext/jmeter-plugins-manager.jar org.jmeterplugins.repository.PluginManagerCMDInstaller \
        && /opt/$JMETER_VERSION/bin/PluginsManagerCMD.sh install-all-except jpgc-hadoop,jpgc-oauth,ulp-jmeter-gwt-plugin,ulp-jmeter-autocorrelator-plugin,ulp-jmeter-videostreaming-plugin \
        && sleep 2 \
        && /opt/$JMETER_VERSION/bin/PluginsManagerCMD.sh status
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多