如何在运行时将输入传递给cli应用程序

时间:2018-10-03 14:18:05

标签: php git automation cron auto-update

我的项目中有一个棘手的问题。我有一个在VDS上运行的应用程序。我使用git和composer安装了此应用程序。这个项目有git仓库,就像本地的。

我正在尝试制作一个自动更新机器人,该机器人将从gitlab获取最后的提交/标签并获取它。

我可以使用nodejs或php cron作业。

但是git pull命令要求输入我的用户名和密码。 我无法安装php_expect扩展名。尝试过此yuloh/expect库,但未捕获用户名输入。

这是我的问题: 我应该如何以及通过哪种方法来运行此git pull命令并传递用户名和密码?

2 个答案:

答案 0 :(得分:1)

已解决

要获取新的更新...

git pull https://username:password@gitprovider/vendor/repository "version_code":"version_code"


用于将更新与最终用户应用程序合并。

git merge "version_code":master

这两个一起完全用新版本更新了应用程序。

关于密码保护,我们将使用ioncube来存储cron文件。

答案 1 :(得分:-1)

如果我完全理解您的问题,可以尝试以下操作:

  • 您可以将密码放入.netrc文件(Windows上为_netrc)。从那里它将被自动拾取。它将进入具有600个权限的主文件夹。

  • 您也可以只使用https://user:pass@domain/repo克隆存储库,但这并不是真正推荐的做法,因为它会在很多地方显示您的用户/密码...

  • 一个新选项是使用credential helper。请注意,凭据将使用标准凭据帮助程序以明文形式存储在本地配置中。带有Wincred的凭据帮助程序也可以在Windows上使用。

凭证助手的使用示例

git config credential.helper store - stores the credentials indefinitely.
git config credential.helper 'cache --timeout=3600'- stores for 60 minutes

对于基于ssh的访问,您将使用ssh代理,该代理将在需要时提供ssh密钥。这将需要在计算机上生成密钥,将公钥存储在远程服务器上,并将私钥添加到相关的密钥库中。