小编Chr*_*isP的帖子

Jenkins Pipeline ssh 步骤 sshPut 所有文件类型

我正在尝试使用 SSH 步骤将所有特定文件类型移动到另一台服务器。我特别尝试使用 sshPut 移动所有 .txt 文件。这是我正在使用的线路:

sshPut remote: remote, from: "*.txt", into: "/the/destination/folder/"
Run Code Online (Sandbox Code Playgroud)

这是詹金斯抛出的错误:

java.lang.IllegalArgumentException: /the/source/folder/*.txt does not exist.
Run Code Online (Sandbox Code Playgroud)

我知道我的 sshsteps 设置正确。我已经能够推送单个文件并在远程服务器上运行一些命令。sshPut 甚至可以处理通配符吗?如果可能的话,我试图避免将所有内容压缩并在远程服务器上进行解压缩,但如果这是需要发生的事情,那就需要发生。我也有严格的指示,不能使用 ssh 密钥,因此目前无法使用 scp。

更新:根据 susenj 的建议,我将行更改为:

sshPut remote: remote, from: "./", filterRegex: /\.txt$/, into: "/the/destination/folder/"

这奏效了。

jenkins jenkins-plugins jenkins-pipeline

2
推荐指数
1
解决办法
3471
查看次数

Ansible 无法识别 mvn 命令,但已安装 Maven

我正在尝试从 Ansible Tower 运行一个 Maven 项目,但是 Ansible kepps 给了我一个“mvn:命令无法识别”错误,如果我从 Linux 服务器上的命令行手动执行,mvn 运行良好

我在尝试从 Ansible 运行 Gradle 时遇到了类似的问题,但是解决方案在这里不起作用。以前,问题是我在运行 playbook 时需要设置 env 变量。我在这里尝试过,但无济于事。我检查了我的路径,可以在那里看到 Maven 路径。

我接受了 Zeitounator 的建议,并尝试使用绝对路径从 Ansible 进行调用,这奏效了。但是,正如他所提到的,这只是一个测试,而不是一个实际的解决方案。

  • 我将 /bin 添加到 PATH 中,因为它之前由于某种原因丢失了
  • 我尝试在服务器和 Ansible 剧本中将 MAVEN_HOME 更改为 /opt/maven/bin/
  • 我确保 M2_HOME 变量为空,因为我读到它可能会导致一些问题

Ansible 似乎不知道在哪里寻找 Maven,我不确定如何将这些信息传达给它。我觉得这是 Ansible 的一个愚蠢的怪癖,它有愚蠢的简单解决方案,如果我有除 'mvn: command not found' 以外的任何其他东西可以解决这个问题。

这是我的剧本中的电话:

- name: test mvn
    shell: mvn -version
    args:
      chdir: /opt/jenkins/batchtest/
    environment:
      MAVEN_HOME: /opt/maven/
      JAVA_HOME: /usr/java/jdk1.8.0_162
Run Code Online (Sandbox Code Playgroud)

这是获取路径的结果:

-bash-4.2$ echo $PATH
/bin:/usr/lib64/qt-3.3/bin:/opt/maven/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
Run Code Online (Sandbox Code Playgroud)

这是 mvn -version 的输出,以防这里有我遗漏的东西

-bash-4.2$ mvn -version …
Run Code Online (Sandbox Code Playgroud)

linux maven ansible

0
推荐指数
1
解决办法
1005
查看次数