我正在尝试使用 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/"
这奏效了。
我正在尝试从 Ansible Tower 运行一个 Maven 项目,但是 Ansible kepps 给了我一个“mvn:命令无法识别”错误,如果我从 Linux 服务器上的命令行手动执行,mvn 运行良好
我在尝试从 Ansible 运行 Gradle 时遇到了类似的问题,但是解决方案在这里不起作用。以前,问题是我在运行 playbook 时需要设置 env 变量。我在这里尝试过,但无济于事。我检查了我的路径,可以在那里看到 Maven 路径。
我接受了 Zeitounator 的建议,并尝试使用绝对路径从 Ansible 进行调用,这奏效了。但是,正如他所提到的,这只是一个测试,而不是一个实际的解决方案。
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)