Cron作业自动推送到Git问题

时间:2016-06-13 13:00:42

标签: git bash cron bitbucket

我有一个cron作业设置来运行一个bash脚本,每晚都推送给Git。

cron作业是以root用户身份设置的,我已经通过以下方式设置了我的git凭据:git config credential.helper storeGit push: username, password, how to avoid?(第二个回答)

bash脚本的代码非常简单

#!/bin/bash

# Nightly push to Bitbucket

# Set some variables
DAY=$(date +%F);

# Make sure we run as root
if [ "$(whoami)" != "root" ]; then
    echo "Only root can do this.";
    exit 1;
else
    # Make sure we are in the right directory
    cd /hosting;
    # Now add any changes
    git add .;
    # Now commit
    git commit -m "$DAY Nightly";
    git push all;
fi;

只要我登录服务器并以root身份运行它,就可以在没有打嗝的情况下运行。

但是,它不会在指定时间运行。

Crontab -e设置为:30 3 * * * back-to-git >/dev/null 2>&1

我该怎么做才能让它发挥作用?

1 个答案:

答案 0 :(得分:3)

首先,最好在cron选项卡中包含脚本的完整路径。

30 3 * * * /opt/btg/back-to-git >/dev/null 2>&1

/opt/btg/back-to-git替换为脚本的绝对路径。 然后尝试不丢弃我包含错误的输出:

30 3 * * * /opt/btg/back-to-git &>/home/your_user/btg.log 

这样,您可以在cron处理脚本时检测错误。

您的上一条评论表明bitbucket可能存在身份验证问题。为了确保你以正确的方式推进,我建议总是在脚本中写出git的完整目标。所以尝试使用

git push --all origin代替git push all;

请在推送到bitbucket时检查您的git设置以使用ssh而不是https

您还可以在/root/.ssh/config

中指定要使用的主机和ssh密钥
Host bitbucket
  HostName bitbucket.org
  User YOUR_USERNAME
  IdentityFile /root/.ssh/id_rsa
  IdentitiesOnly yes