【问题标题】:Prevent Jenkins pipeline commands from being executed in different shells防止 Jenkins 管道命令在不同的 shell 中执行
【发布时间】:2017-03-06 11:47:16
【问题描述】:

我的 Jenkins 流水线脚本中有以下代码:

sh("alias git='/my/file/path/libexec/git-core/git'")
mvn "-e -X release:prepare"

第二行调用git 失败:

The git-tag command failed.
Command output:
/bin/sh: git: command not found
Caused by: org.apache.maven.plugin.MojoFailureException: Unable to tag SCM

这不应该发生,因为我先给它起了别名。

我怀疑这些语句是在不同的 shell 中运行的。

这是真的吗? 在这种情况下,我该如何防止呢?

【问题讨论】:

  • 你试过了吗:mvn -Dgit=path/to/git -e -X release:prepare?
  • 是的。同样的错误。
  • 你能提供pom文件吗?
  • 我认为它与pom.xml 没有任何联系,因为它没有任何 git 插件或依赖项。
  • maven引发的错误怎么办?

标签: git shell maven jenkins jenkins-pipeline


【解决方案1】:

不确定您的脚本中的 mvn 是什么(Pipeline 中没有内置的 Maven 函数),但我认为您想要这样的东西:

sh '''
  export PATH=$PATH:/my/file/path/libexec/git-core/git
  mvn -e -X release:prepare
'''

【讨论】:

  • 尝试 git status 而不是调用 Maven,您的构建节点中肯定有其他问题。
  • git status 有效。所以我假设问题必须来自 Maven 以及它调用 Git 的方式。也许它正在打开一个没有配置的子shell并在那里调用Git,但我不确定。你有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-22
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
相关资源
最近更新 更多