我尝试通过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
}
真的坚持这个,文档是垃圾!
答案 0 :(得分:3)
你认为SSH身份验证是个问题。
当cronjob运行时,它必须以某种方式访问你的Bitbucket存储库。您选择使用“git”协议,该协议使用SSH。使用SSH时,使用基于密钥的身份验证比使用密码更好 - 而且当涉及到git repos时,它是大多数情况下唯一的方式,具体取决于托管。
要么将私钥放到cron服务器上才能访问Bitbucket(可能是个坏主意),或者你创建了一个新密钥对并使用它来允许访问你的仓库(更好,除非你遇到一些您的bitbucket帐户的限制,如果该密钥计为用户的用户太多 - 另一方面,您可以将此密钥限制为仅允许读取,而不是写入)。
确保用于运行cronjob的用户正在使用这些密钥,例如您应该能够在没有任何代理的情况下手动启动脚本,并且应该在不要求密码的情况下完成。私钥的正确位置是~/.ssh
,公钥转到Bitbucket。之后,一切都应该在cronjob中完美运行。
另一种方法可能是使用不同的协议(如HTTPS)进行回购访问,看看会发生什么。