【问题标题】:Add sha to git commit or elastic beanstalk deploy将 sha 添加到 git commit 或弹性 beanstalk deploy
【发布时间】:2016-01-06 16:16:22
【问题描述】:

我正在部署一个带有弹性 beanstalk 的应用程序,它有自己的部署工具。该工具采用最新的提交,从中创建一个 zip,并将其部署到云中。为了验证每台服务器上的部署,我希望它能够在部署后报告自己的 SHA。实际上有一些有效的方法:

  • 使用 git 挂钩将 SHA 添加到当前提交。
  • 更改 EB 部署脚本以包含特定的未提交文件,该文件可以在部署脚本或 git 挂钩中轻松创建。
  • 使弹性 beanstalk 当前应用程序版本标签可用于实例。

【问题讨论】:

  • 你问的问题到底是什么?

标签: git amazon-web-services amazon-elastic-beanstalk


【解决方案1】:

我用 .gitattribtues export-subst 解决了这个问题。 (http://git-scm.com/docs/gitattributes) 这会在归档时自动将 SHA 添加到 repo,这就是 elastic-beanstalk 在部署时所做的。

我的 .git 属性:

*.py diff=python
version.txt export-subst

我的版本.txt:

$Format:%H$

https://stackoverflow.com/a/16365314/478354

【讨论】:

  • 我正在尝试这个,当我手动运行git archive 时它工作正常,但是当我使用eb deploy 时,不会在 EC2 实例上进行替换。知道为什么会这样吗?我正在使用单容器 docker 堆栈,以防与它有关。 AWS 文档是否在某处承诺eb deploy 将始终使用git archive
  • 好的,我想通了。如果你有一个.ebignore 文件,eb deploy 不使用 git。因此,您必须摆脱该文件才能使您的技术发挥作用。
【解决方案2】:

使用 git 钩子将 SHA 添加到当前提交。

这似乎并不实用,因为它会更改提交(及其 SHA1)!

因此,在部署时根据提交生成正确的文件通常是最佳实践。

【讨论】:

    【解决方案3】:

    您可以创建部署后挂钩,并在 bash 脚本中访问 SHA 版本。

    这是一个对我有用的例子:

    使用此内容创建一个类似.ebextensions/post_deploy_hook.config 的文件:

    commands:
      create_pre_dir:
        command: "mkdir /opt/elasticbeanstalk/hooks/appdeploy/pre"
        ignoreErrors: true
      create_post_dir:
        command: "mkdir /opt/elasticbeanstalk/hooks/appdeploy/post"
        ignoreErrors: true
    files:
      "/opt/elasticbeanstalk/hooks/appdeploy/post/rollback_deploy_tracking.sh":
        content: |
          #!/bin/bash
    
          REVISION=`unzip -z /opt/elasticbeanstalk/deploy/appsource/source_bundle | tail -n 1`
    
          # put your own logic here...
    
          exit 0;
    

    现在,当使用 eb deploy 进行部署时,该脚本将运行。

    【讨论】:

      猜你喜欢
      • 2012-09-05
      • 2014-02-10
      • 1970-01-01
      • 1970-01-01
      • 2015-04-20
      • 2014-08-14
      • 2020-02-14
      • 2013-01-22
      • 1970-01-01
      相关资源
      最近更新 更多