0

我在 heroku 上设置了这个 cron 作业,以删除特定文件夹中的一些文件并使用新数据再次创建它们。我的代码在 Github 上并连接到 heroku。在 heroku 上运行这个 cron 后,如何更新我的 github 分支?

4

1 回答 1

0

你真的不想这样做。如果您有正在更改的文件,则应将它们存储在 S3 或数据库或其他一些外部存储中。

Heroku dynos 有临时文件系统,heroku 至少每 24 小时重启一次你的 dynos。对本地文件系统的任何更改都会在重新启动时丢失。

这意味着如果您更改文件,并且在将该文件推送到 github 之前 heroku 重新启动,您将丢失更改。

这也意味着每次推送到 github 存储库时都需要重新部署。因此,如果您经常推送,您将不断地重新部署。

理论上,这是一种方法。

  • 安装heroku-apt-buildpack
  • 配置它以安装 git。
  • 生成 SSH 密钥对。将私钥放在您的 heroku 应用程序的配置变量中。在 github 上安装公钥,以便您的 dyno 可以推送到 github。
  • 将您的 cron 作业配置为从 git 中提取,进行本地文件系统更改,并在进行任何本地文件系统更改后使用 config var 中的私有 ssh 密钥推送到 git。
  • 如果你想要“最后一次推送获胜”语义强制推送。否则,您将需要处理推送失败的情况“拉,可能解决冲突,推送”
  • 将 heroku 配置为在每次推送到主分支时从 github 自动部署。

但真的 - 不要这样做。将您的文件放在一些外部存储服务上。

于 2019-06-08T16:25:18.630 回答