我正在调试一个问题,当我使用master respawn程序进行升级时,unicorn没有在部署中拾取代码更改。我需要一种方法来询问unicorn/我的rails应用程序当前在内存中的代码修订版本-但我不确定该如何操作?
4dc9hkyq1#
这取决于你如何部署你的应用程序。当你部署的时候,.git目录是否在适当的位置并且完整的被部署?这不是一个推荐的做法。(因为如果您的服务器受到危害您不希望潜在的敏感或私人信息存储在该服务器上,比如git data中可能会出现的内容)系统上是否安装了git二进制文件?这同样不是推荐的做法,因为已部署的应用不应该'他们没有应用程序,攻击者可以利用它来拉下他们自己的恶意代码。如果两者都存在,那么您可以使用https://github.com/ruby-git/ruby-git,或者更简单地说,https://github.com/NARKOZ/git-revision,然后在应用程序中的某个地方显示它。(比如健康检查端点,或者在头中)这将是您必须编写的依赖于应用程序的自定义代码。一个更好的实践是在部署应用程序时将静态值注入到应用程序中。您的CI/CD管道将克隆repo,获取当前版本,然后在应用程序发布之前将其存储在应用程序的静态文件中。然后应用程序会按需提供这个文件。(或在 Boot 时加载到内存中)这有一个额外的好处,即不会让应用程序因更多技术上不需要的gem和二进制文件而膨胀,从而增加攻击面。
.git
1条答案
按热度按时间4dc9hkyq1#
这取决于你如何部署你的应用程序。当你部署的时候,
.git
目录是否在适当的位置并且完整的被部署?这不是一个推荐的做法。(因为如果您的服务器受到危害您不希望潜在的敏感或私人信息存储在该服务器上,比如git data中可能会出现的内容)系统上是否安装了git二进制文件?这同样不是推荐的做法,因为已部署的应用不应该'他们没有应用程序,攻击者可以利用它来拉下他们自己的恶意代码。如果两者都存在,那么您可以使用https://github.com/ruby-git/ruby-git,或者更简单地说,https://github.com/NARKOZ/git-revision,然后在应用程序中的某个地方显示它。(比如健康检查端点,或者在头中)这将是您必须编写的依赖于应用程序的自定义代码。
一个更好的实践是在部署应用程序时将静态值注入到应用程序中。您的CI/CD管道将克隆repo,获取当前版本,然后在应用程序发布之前将其存储在应用程序的静态文件中。然后应用程序会按需提供这个文件。(或在 Boot 时加载到内存中)这有一个额外的好处,即不会让应用程序因更多技术上不需要的gem和二进制文件而膨胀,从而增加攻击面。