【问题标题】:Git pull request not working with cronjobGit拉取请求不适用于cronjob
【发布时间】:2014-07-30 15:40:08
【问题描述】:

我对编码很陌生,有人可以帮助我如何使用 cron 作业成功执行 git pull

我确实编写了一个具有 git pull 的 Shell 脚本,如下所示,当我在终端上运行 shell 脚本时它确实可以工作。

#!/bin/bash

cd /Users/xplain/testing/UI
git pull
cd testing
python -m unittest XplainTestRunner.XplainTestRunner

但是对于我的 cron 工作,它不起作用。我的 cron 工作如下

11 16 * * * /Users/xplain/automation.sh >> /Users/xplain/script_output.log 2>&1

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 您的automation.sh 脚本是否标记为可执行文件?
  • @GregHewgill 是的! “我确实编写了一个带有 git pull 的 Shell 脚本,如下所示,当我在终端上运行 shell 脚本时它确实可以工作。”
  • 嗯,可以通过将其作为参数传递给sh 来运行不可执行的shell 脚本,此处未显示。
  • @GregHewgill 检查我的答案。根据原始发布者的用户路径/User/xplain/,这似乎是在Mac OS X 上。因此,如果需要钥匙串访问,除非用户使用launchd,否则这是行不通的。但也有可能需要完整的二进制路径才能运行 gitpython

标签: git shell cron


【解决方案1】:

您如何在您的计算机上以用户身份手动运行git?您是否有连接到 SSH 密钥的密码?如果是这样,当 cron 作业运行时,它会提示输入密码,但它不是交互式任务,因此会失败。

相关,我相信您使用的是 Mac OS X,因为您的脚本中有 /Users/ 文件路径:

/Users/xplain/

您实际上可能将我们的 SSH 密钥密码保存在您的用户钥匙串中。据我所知,除非您实际登录,否则无法访问。如果您在用户下运行 cron 作业,我不相信该任务将能够再次访问用户钥匙串,您的脚本将失败。

question & answer thread 解释了如何在 Mac OS X 中使用 launchd 而不是 cron 来识别钥匙串设置。所以这可能是值得探索的东西。

另一个想法是尝试为gitpython 添加完整路径:

#!/bin/bash

cd /Users/xplain/testing/UI
/usr/bin/git pull
cd testing
/usr/bin/python -m unittest XplainTestRunner.XplainTestRunner

我正在使用/usr/bin/git/usr/bin/python,因为这是它们在标准Mac OS X 安装中的安装位置。但是您可以像这样使用which 确定完整路径:

which git

对我来说返回:/usr/bin/git

which python

对我来说返回:/usr/bin/python

【讨论】:

    猜你喜欢
    • 2014-04-30
    • 2011-05-23
    • 2011-12-31
    • 2017-04-11
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    相关资源
    最近更新 更多