【问题标题】:Maven Wagon plugin fails to upload over SCP despite return code 0尽管返回代码 0,Maven Wagon 插件无法通过 SCP 上传
【发布时间】:2022-06-14 16:29:17
【问题描述】:

我正在使用 Maven Wagon 插件维护一个项目,以将工件上传到组织存储相关应用程序的新版本的服务器。

该服务器已经更改了一段时间,我很难让工件重新开始上传。更新了凭据并确保可以从我们的 CI 环境访问服务器后,我遇到了一个奇怪的问题。

[INFO] [DEBUG] Configuring mojo 'org.codehaus.mojo:wagon-maven-plugin:2.0.2:upload' with basic configurator -->
[INFO] [DEBUG]   (f) followSymLink = false
[INFO] [DEBUG]   (f) fromDir = /var/lib/jenkins/workspace/foo-release/target/checkout/cq5/foo-bar-assembly/target
[INFO] [DEBUG]   (f) includes = **/*.zip
[INFO] [DEBUG]   (f) optimize = false
[INFO] [DEBUG]   (f) project = MavenProject: com.example.noyb:foo-bar-assembly:1.1.1 @ /var/lib/jenkins/workspace/foo-release/target/checkout/cq5/foo-bar-assembly/pom.xml
[INFO] [DEBUG]   (f) serverId = release-server
[INFO] [DEBUG]   (f) settings = org.apache.maven.execution.SettingsAdapter@3abfe845
[INFO] [DEBUG]   (f) skip = false
[INFO] [DEBUG]   (f) toDir = 1.1.1
[INFO] [DEBUG]   (f) url = scp://192.168.50.20/mnt/somedir/foo-bar/releases
[INFO] [DEBUG]   (f) useDefaultExcludes = true
[INFO] [DEBUG] -- end configuration --
[INFO] Unable to connect to agent: com.jcraft.jsch.agentproxy.AgentProxyException: connector is not available: 
[INFO] scp://192.168.50.20/mnt/somedir/foo-bar/releases - Session: Opened  
[INFO] [INFO] Uploading /var/lib/jenkins/workspace/foo-release/target/checkout/cq5/foo-bar-assembly/target/foo-bar-1.1.1-config/foo-bar-config-1.1.1-cq.zip to scp://192.168.50.20/mnt/somedir/foo-bar/releases/1.1.1/foo-bar-1.1.1-config/foo-bar-config-1.1.1-cq.zip ...
[INFO] Executing command: mkdir -p "/mnt/somedir/foo-bar/releases/1.1.1/foo-bar-1.1.1-config"
[INFO] Executing command: mkdir -p "/mnt/somedir/foo-bar/releases/1.1.1/foo-bar-1.1.1-config"
[INFO] Executing: mkdir -p "/mnt/somedir/foo-bar/releases/1.1.1/foo-bar-1.1.1-config"
[INFO] Stdout results:
[INFO] Stderr results:/etc/profile.d/welcomer.sh: line 6: ip: command not found
[INFO] TERM environment variable not set.
[INFO] 
[INFO]  Transfer error: org.apache.maven.wagon.CommandExecutionException: Exit code: 0 - /etc/profile.d/welcomer.sh: line 6: ip: command not found
[INFO] TERM environment variable not set.
[INFO] 
[INFO]  Transfer error: org.apache.maven.wagon.TransferFailedException: Exit code: 0 - /etc/profile.d/welcomer.sh: line 6: ip: command not found
[INFO] TERM environment variable not set.
[INFO] 
[INFO] scp://192.168.50.20/mnt/somedir/foo-bar/releases - Session: Disconnecting  
[INFO] scp://192.168.50.20/mnt/somedir/foo-bar/releases - Session: Disconnected

Maven 构建在上述操作之后失败。没有工件上传到服务器,但会创建应该添加它们的文件夹。

输出包含一些我认为插件不需要或使用的可执行文件。同样令人费解的是,返回码似乎是0,这不是错误码。如果出现错误,我希望这是一个正数。

我正在使用

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>wagon-maven-plugin</artifactId>
    <version>2.0.2</version>
    <configuration>
        <!-- redacted -->
    </configuration>
    <executions>
        <execution>
            <id>upload-artifacts</id>
            <phase>deploy</phase>
            <goals>
                <goal>upload</goal>
            </goals>
        </execution>
    </executions>
</plugin>

<extension>
    <groupId>org.apache.maven.wagon</groupId>
    <artifactId>wagon-ssh</artifactId>
    <version>3.5.1</version>
</extension>

【问题讨论】:

    标签: maven scp maven-wagon-plugin


    【解决方案1】:

    事实证明,新服务器会向任何通过 SSH 登录的用户显示欢迎消息。该消息显示其 IP 地址、名称和一些关于其使用的指导(例如,可以在文件系统中找到某些东西的位置等)

    当您通过 SSH 访问服务器时,该消息会正确显示。但是,由于某种原因,当使用scp 将文件传输到服务器时,负责呈现消息的脚本也会启动。

    当使用scp 而不是ssh 时,呈现消息的脚本会失败,因为它显然缺少PATH 变量中的可执行文件路径。它还抱怨没有设置TERM 变量。

    /etc/profile.d/welcomer.sh: line 6: ip: command not found
    TERM environment variable not set.
    

    这是CommandExecutionExceptionTransferFailedException 随附的消息。我不明白为什么在使用 SCP 时会出现消息,或者为什么会失败。脚本可能有一种方法可以区分。然而,它似乎将这些消息打印到Stderr,Wagon SSH 扩展将其解释为失败,即使这些错误与插件本身执行的命令无关。我认为这是一个公平的设计考虑,如果出现意外错误,请停止执行。最令人惊讶的是返回码0。我猜这与插件实际调用的唯一命令(即创建目录)实际成功有关,但它基于纯粹的推测。

    禁用欢迎脚本允许插件成功上传工件。我们将看到如何改进欢迎消息,使其可以在不阻止 Wagon 插件成功调用 scp 的情况下使用。

    【讨论】:

      猜你喜欢
      • 2012-01-09
      • 2011-02-13
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多