Satis通过cronjob更新

时间:2013-10-09 06:45:39

标签: composer-php packagist satis

我尝试通过cron作业更新我的私人存储库,但似乎没有发生任何事情。我正在使用Satis为我的私人包创建存储库。

我可以通过SSH登录我的帐户并运行:

来手动执行此操作
php bin/satis build satis.json ./ -n

除了我必须输入我的密码百万次之外,它还能更新一切。我可以使用SSH Agent来解决这个问题,并认为这可能是我的问题......

php /home/accountname/public_html/bin/satis build /home/accountname/public_html/satis.json /home/accountname/public_html/ -n

我有什么遗漏吗?

更新

这是SSH身份验证,因为我通过电子邮件收到了此错误(缩短版本)

  

阅读vendor / package的composer.json   (主)
  无法更新   git@bitbucket.org:vendor / package.git,包含此信息的信息   存储库可能已过时(Permission denied(publickey)。致命:   远程端挂起意外错误:无法获取原点)

在文档中,它说使用-n来使用SSH密钥,但我正在使用它。

有什么想法吗?

更新

以为我会添加我满意的文件结构:

{
    "name": "Name Of My Repo",
    "homepage": "http://repodomain.co.uk",
    "repositories": [
        { "type": "vcs", "url": "git@bitbucket.org:vendor/package.git" }
    ],
    "require-all": true
} 

真的坚持这个,文档是垃圾!

1 个答案:

答案 0 :(得分:3)

你认为SSH身份验证是个问题。

当cronjob运行时,它必须以某种方式访问​​你的Bitbucket存储库。您选择使用“git”协议,该协议使用SSH。使用SSH时,使用基于密钥的身份验证比使用密码更好 - 而且当涉及到git repos时,它是大多数情况下唯一的方式,具体取决于托管。

要么将私钥放到cron服务器上才能访问Bitbucket(可能是个坏主意),或者你创建了一个新密钥对并使用它来允许访问你的仓库(更好,除非你遇到一些您的bitbucket帐户的限制,如果该密钥计为用户的用户太多 - 另一方面,您可以将此密钥限制为仅允许读取,而不是写入)。

确保用于运行cronjob的用户正在使用这些密钥,例如您应该能够在没有任何代理的情况下手动启动脚本,并且应该在不要求密码的情况下完成。私钥的正确位置是~/.ssh,公钥转到Bitbucket。之后,一切都应该在cronjob中完美运行。

另一种方法可能是使用不同的协议(如HTTPS)进行回购访问,看看会发生什么。