触发 Git 提取,使用 Jenkins 重置
Triggering a Git fetch, reset using Jenkins
我有一个 Java 包,它已在 Git(和 code.amazon.com)中签入,并且我有一个 Ant 作业来触发该包。在 Ant 作业中,我为 Git 创建了一个宏定义,并且正在执行 git fetch
和 git reset
以便每次触发 Ant 作业时都能获得最新的代码库。
当我使用 Eclipse 触发 Ant 作业时,它正在运行。如果我使用 ANT –buildfile my_buildfile.xml
从终端 运行 运行 Ant 作业,它也在工作。
现在我已经在我的机器上安装了 Jenkins 并正在尝试 运行 Ant 文件。 Jenkins 无法触发 Ant 文件中的 Git 作业。它给出以下错误:
/rhel5pdi/workplace/bangshis/EpubYJConvPerfWorkspace/src/EpubYJConvPerfLinux/Jenkins_Linux_build_Global.xml:81: The following error occurred while executing this line:
/rhel5pdi/workplace/bangshis/EpubYJConvPerfWorkspace/src/EpubYJConvPerfLinux/Jenkins_Linux_build_Global.xml:99: Execute failed: java.io.IOException: Cannot run program "git": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
at java.lang.Runtime.exec(Runtime.java:617)
at org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58)
at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:428)
at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:442)
at org.apache.tools.ant.taskdefs.ExecTask.runExecute(ExecTask.java:628)
at org.apache.tools.ant.taskdefs.ExecTask.runExec(ExecTask.java:669)
at org.apache.tools.ant.taskdefs.ExecTask.execute(ExecTask.java:495)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
此错误的部分原因可能是我的 Jenkins 无法以主机的当前用户身份触发作业。
为了解决这个问题,我尝试了以下步骤:
- 创建全局凭据并使用无密码帐户(RSA ID)。
- 使用与系统相同的用户名登录 Jenkins。
- 正在安装 Git 和 Git 客户端插件并适当地设置它们。
如果我遗漏了什么,以及是否有任何解决办法,请告诉我。如果我的方法不正确,如果你能分享一些其他的想法,我会很高兴。
我认为这与您的主控(或节点)上的git配置有关
此解决方案应该可以解决您的问题:
Jenkins giving error while cloning from gitHub
@Dr.Bokko 是正确的...我应该感谢他指导了正确的方向。我试图给出完整的答案。我们可以根据三个因素使用 JENKINS 进行 GIT 的设置。
- 第一个因素:要访问 GIT 存储库,如果它是 public 存储库,则不需要用户凭据。但是对于访问受限的 GIT 存储库,我们需要确保传递正确的凭据。 Git 和 Git 需要安装客户端插件,Jenkins 才能理解 GIT 操作。
- 第二个因素:在 运行 脚本之前,添加构建步骤并导出所有需要的库作为 shell 脚本的一部分。
- 第三个因素:最后检查管理 Jenkins 部分中的系统配置,并检查 Jenkins 考虑的环境变量。如果它们不合适,则转到节点管理 link,并将所有环境变量作为 KEY-VALUE 对。
希望上述步骤可以解决问题。
您的堆栈跟踪中出现以下错误:
Cannot run program "git": error=2, No such file or directory
这意味着 git 可执行文件未安装或不在进程 运行 ANT 的命令路径中。
不完全清楚您为什么要从 ANT 呼叫 GIT。通常 Jenkins 会先执行代码检出(使用 GIT),然后调用 ANT。我强烈建议研究这个替代工作流程,这可能需要为 Jenkins 安装 GIT 插件(不记得这是否是默认插件)。
我有一个 Java 包,它已在 Git(和 code.amazon.com)中签入,并且我有一个 Ant 作业来触发该包。在 Ant 作业中,我为 Git 创建了一个宏定义,并且正在执行 git fetch
和 git reset
以便每次触发 Ant 作业时都能获得最新的代码库。
当我使用 Eclipse 触发 Ant 作业时,它正在运行。如果我使用 ANT –buildfile my_buildfile.xml
从终端 运行 运行 Ant 作业,它也在工作。
现在我已经在我的机器上安装了 Jenkins 并正在尝试 运行 Ant 文件。 Jenkins 无法触发 Ant 文件中的 Git 作业。它给出以下错误:
/rhel5pdi/workplace/bangshis/EpubYJConvPerfWorkspace/src/EpubYJConvPerfLinux/Jenkins_Linux_build_Global.xml:81: The following error occurred while executing this line:
/rhel5pdi/workplace/bangshis/EpubYJConvPerfWorkspace/src/EpubYJConvPerfLinux/Jenkins_Linux_build_Global.xml:99: Execute failed: java.io.IOException: Cannot run program "git": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
at java.lang.Runtime.exec(Runtime.java:617)
at org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58)
at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:428)
at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:442)
at org.apache.tools.ant.taskdefs.ExecTask.runExecute(ExecTask.java:628)
at org.apache.tools.ant.taskdefs.ExecTask.runExec(ExecTask.java:669)
at org.apache.tools.ant.taskdefs.ExecTask.execute(ExecTask.java:495)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
此错误的部分原因可能是我的 Jenkins 无法以主机的当前用户身份触发作业。
为了解决这个问题,我尝试了以下步骤:
- 创建全局凭据并使用无密码帐户(RSA ID)。
- 使用与系统相同的用户名登录 Jenkins。
- 正在安装 Git 和 Git 客户端插件并适当地设置它们。
如果我遗漏了什么,以及是否有任何解决办法,请告诉我。如果我的方法不正确,如果你能分享一些其他的想法,我会很高兴。
我认为这与您的主控(或节点)上的git配置有关
此解决方案应该可以解决您的问题:
Jenkins giving error while cloning from gitHub
@Dr.Bokko 是正确的...我应该感谢他指导了正确的方向。我试图给出完整的答案。我们可以根据三个因素使用 JENKINS 进行 GIT 的设置。
- 第一个因素:要访问 GIT 存储库,如果它是 public 存储库,则不需要用户凭据。但是对于访问受限的 GIT 存储库,我们需要确保传递正确的凭据。 Git 和 Git 需要安装客户端插件,Jenkins 才能理解 GIT 操作。
- 第二个因素:在 运行 脚本之前,添加构建步骤并导出所有需要的库作为 shell 脚本的一部分。
- 第三个因素:最后检查管理 Jenkins 部分中的系统配置,并检查 Jenkins 考虑的环境变量。如果它们不合适,则转到节点管理 link,并将所有环境变量作为 KEY-VALUE 对。
希望上述步骤可以解决问题。
您的堆栈跟踪中出现以下错误:
Cannot run program "git": error=2, No such file or directory
这意味着 git 可执行文件未安装或不在进程 运行 ANT 的命令路径中。
不完全清楚您为什么要从 ANT 呼叫 GIT。通常 Jenkins 会先执行代码检出(使用 GIT),然后调用 ANT。我强烈建议研究这个替代工作流程,这可能需要为 Jenkins 安装 GIT 插件(不记得这是否是默认插件)。