【问题标题】:How to deploy a subdirectory of git repo to elastic beanstalk如何将 git repo 的子目录部署到弹性 beantalk
【发布时间】:2016-11-20 17:09:23
【问题描述】:

我对弹性豆茎相当陌生。对我来说,部署需要提交到 git 并不明显,但现在我在文档中发现它在幕后使用 git archive 来制作部署的 zip。

如何只部署大型项目的子目录;不上传 repo 的全部内容?

假设我有这样的结构:

git-repo/
    mobile/
        ios/...
        android/...
    assets/...
    django-app/
        .ebextensions
        manage.py
        site/...
        ...

我只想部署django-app 及以下。

理想情况下,我会避免使用子树,并避免使用其他脚本(但如果 eb deploy 有办法自动化它们,脚本就可以了)。

【问题讨论】:

  • 您是否考虑过将多个存储库安排为子模块?还是您也想避免这种情况?
  • 我认为那是子树(尽管我可能会遗漏一些细微差别)。我希望它为其他开发人员“克隆、更改、提交、部署”,因此大量介入和检查嵌套层的东西有点烦人(在这种情况下我将设置多个存储库)
  • 我也想知道怎么做。

标签: django git amazon-elastic-beanstalk


【解决方案1】:

假设您已经安装并设置了EB CLI,您可以创建一个脚本来压缩您的 django-app/ 文件夹,然后部署生成的工件:

  1. 在您的项目根目录中创建一个名为 .ebextensions 的文件夹,并在此文件夹中创建一个名为 config.yml 的文件,其中包含以下基本内容:

    部署: 工件:“deploy.zip”

(注意间距在 yml 文件中非常重要,“deploy”应该在第一列,“artifact”在第二列(制表符间隔))

  1. 在您的项目根目录中创建一个 deploy.sh 脚本:

    git archive --format=zip HEAD:django-app/ > deploy.zip; eb 部署;

注意:这在 Mac 和 Linux 上运行良好,过去我在使用 Windows 时遇到过问题,因为 Windows 上的用户文件夹结构中存在空格。

【讨论】:

  • 不回答如何从 github 进行操作
  • 不,这具体是如何使用 CLI 和 git 来完成的。 Github Actions 有很多选项,这是一个简单的选项,在很大程度上做同样的事情:github.com/marketplace/actions/beanstalk-deploy
  • 当我使用这种方法时,我收到一个错误,指出没有为 EB 设置目录,我应该运行 eb init。这样做会在 .elasticbeanstalk 中生成一个新的 config.yml 文件,它会忽略我的 zip 部署(即使我将 dploy 命令添加到新的配置文件中)。这个方法还有用吗?如果是这样,我做错了什么?
猜你喜欢
  • 2015-04-30
  • 2020-12-10
  • 2017-12-18
  • 2020-12-16
  • 2020-12-05
  • 2019-04-14
  • 1970-01-01
  • 2019-05-01
  • 2012-08-24
相关资源
最近更新 更多