Jenkins Shell脚本卡在git克隆上

时间:2018-11-09 10:16:24

标签: bash shell jenkins

我正在尝试将Shell脚本嵌套到Jenkins作业中,但是使用bash git clone命令时,该脚本将无限卡住。

jenkins job console output

它甚至没有给我发送错误。我怀疑脚本进入git clone命令时是否要求输入密码。

詹金斯的职位配置

#!/bin/sh
set -x
whoami #returns 'jenkins'
sudo -u root ./my_script.sh

my_script.sh

whoami #returns ROOT
sudo git clone 'https://myusername:mypassword@my.forge.fr/project/my-project.git' -b "master" --verbose

到目前为止我尝试过什么

  1. 我编辑了sudoers,并添加了jenkins ALL=NOPASSWD: ALL
  2. 我故意在git clone命令中输入了错误的凭据,但收到了错误消息remote: HTTP Basic: Access denied
  3. 在终端机上,我进入了工作区项目,切换为jenkins用户并运行sudo ./my_script.sh,它运行正常,无需输入密码
  4. root用户下运行时,它也可以正常工作(不足为奇)

有人知道我如何获得工作以使此命令通过吗?

修改

我在Mac OS上

2 个答案:

答案 0 :(得分:1)

我终于解决了它,它的确来自证书,但不是我想到的。问题来自钥匙串访问。我也表示歉意,我没有指定我使用的是 Mac ,因为我使用的是bash,因此我认为这与此处无关。

在Jenkins用户下运行脚本时,它与我使用sudo一样运行良好,但是当我尝试直接运行sudo git clone 'https://myusername:mypassword@my.forge.fr/project/my-project.git' -b "master" --verbose时出现错误:

Keychain

我找不到英文错误消息,但基本上它说“无法找到要存储的钥匙串...” ,并回答“取消”和“重置我的默认钥匙串”

从那里我:

  1. 在钥匙串管理器中创建了一个名为jenkins-dev的新钥匙串
  2. 我在myuser下将其从/Users/myuser/Library/Keychains复制到了/Users/Shared/Jenkins/Library/Keychains
  3. 然后我在jenkins用户下运行了security unlock-keychain /Users/Shared/Jenkins/Library/Keychains/jenkins-dev.keychain-db
  4. 在詹金斯用户下
  5. 最终security default-keychain /Users/Shared/Jenkins/Library/Keychains/jenkins-dev.keychain-db
  6. 我在jenkins用户下再次运行git clone ...命令行,然后它找到了钥匙串,存储了访问权限,而我的Jenkins脚本不再卡住了

希望这可以帮助

答案 1 :(得分:0)

您在该计算机上的〜/ .ssh / id_rsa.pub中有密钥吗?