Git pull请求不与cronjob一起使用

时间:2014-06-10 01:20:00

标签: git shell cron

我对编码很陌生,有人可以帮助我如何使用cron job成功执行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

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

如何在计算机上手动运行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