除了正在使用的repo之外,我有两个相同的Jenkins项目。 Jenkins正在为两者运行一个ant构建并使用不同的目标。
除了引用不同的分支外,这两个目标在字面上完全相同。一个项目有效,另一个有误。
失败的项目错误:
[exec] bash: /dev/tty: No such device or address
[exec] error: failed to execute prompt script (exit code 1)
[exec] fatal: could not read Password for 'https://****@git.ersp.net': No error
[exec] Result: 128
我已经看过这个问题了,我能找到的内容似乎与正在使用的其他实用工具有关,例如Atom,Winpty等。我们不使用这些但我们是使用bash。
似乎问题源于bash无法请求用户名和密码,但这些是由Jenkins提供的(两个项目是相同的)。
我在Jenkins更新了我的凭据只是为了确保不是问题。第一个项目继续通过,第二个项目继续失败,他们使用相同的凭据。
Ant Targets
<!-- RELEASE GIT -->
<target name="update-release-git">
<exec executable="C:\Program Files\Git\cmd\git.exe">
<arg value="-C" />
<arg value="${testing-release}" />
<arg value="checkout" />
<arg value="${BRANCH}" />
</exec>
<exec executable="C:\Program Files\Git\cmd\git.exe">
<arg value="-C" />
<arg value="${testing-release}" />
<arg value="fetch" />
</exec>
</target>
<!-- EPIC1 GIT -->
<target name="update-epic1">
<exec executable="C:\Program Files\Git\cmd\git.exe">
<arg value="-C" />
<arg value="${testing-epic1}" />
<arg value="checkout" />
<arg value="${BRANCH}" />
</exec>
<exec executable="C:\Program Files\Git\cmd\git.exe">
<arg value="-C" />
<arg value="${testing-epic1}" />
<arg value="fetch" />
</exec>
</target>
EPIC1 有效,而 RELEASE 则无效。它们都是同一个回购的克隆,它们只是使用不同的分支。
任何帮助将不胜感激,谢谢!
修改 为了澄清,这些工作要独立运作。
凭据信息通过Jenkins凭据管理器传递。在源代码管理&gt;下Git 您选择了repo url,然后凭据是已添加到Jenkins的可用凭据的选择选项。
答案 0 :(得分:0)
如果你乱搞你的构建脚本和你的源代码控制,你总是会遇到糟糕的时间。
让jenkins处理从git中检出。总是。 如果你的蚂蚁脚本弄乱了你的工作副本,你就会妨碍jenkins显示变更集的能力,这反过来又会影响那些已经承诺建立或者上次成功的人。当有人对分支上的构建脚本进行更改时会产生混淆(在脚本启动后更改分支时无效)。
跳过密码并使用ssh密钥进行身份验证可能更容易。
希望一旦你停止尝试执行git,你就会处于一个好位置。