1

我在 AWS 中有两个实例。一种用于生产,一种用于认证。我使用 CodeDeploy 自动部署。我在 BitBucket 上有两个分支,master 和 homolog。当我在同源部署中提交时,必须转到同源实例,如果我在主部署中进行合并,则必须处于生产阶段。

要将 Bitbucket 自动部署到 AWS,有一系列配置部署详细信息的文件。这些文件之一是 appspec.yml。根据 AWS,只能有一个 appspec.yml 文件。

此基本表单文件具有以下结构:

version: 0.0
os: linux
files:
  - source: /
    destination: /var/www/html
hooks:
  AfterInstall:
    - location: deploy-scripts/install_dependencies.py
      timeout: 300
      runas: root

问题是对于每个实例我都有一个目标文件夹。

如果我在同源实例上进行部署,目标文件夹应该是var/www/html,而对于生产实例,它应该是var/www/html/test/

我试图这样做:

version: 0.0
os: linux
files:
  - source: /
    destination: deploy-scripts/destination.py
hooks:
  AfterInstall:
    - location: deploy-scripts/install_dependencies.py
      timeout: 300
      runas: root

这就是destination.py:

if os.environ['APPLICATION_NAME'] == 'ahimsa-store-homolog':
    return '/var/www/html/'
elif os.environ['APPLICATION_NAME'] == 'ahimsa-store':
    return '/var/www/html/teste/'

上述选项不起作用。我怎样才能做到这一点?

4

2 回答 2

0

另一种选择是在每个分支中使用不同的 appspec。这会使合并变得更加困难,但它可能会有所帮助。

于 2018-10-15T18:13:48.883 回答
0

文件部分appspec.yml不运行脚本。

  • 使用文件部分将所需文件移动到临时文件夹
  • 创建一个脚本,根据您的要求将这些文件从临时位置移动到所需的目的地。正如你所建议的,os.environ['APPLICATION_NAME']例如使用。
  • 确保您的脚本在移动文件后设置正确的文件权限。
  • 在AfterInstall部分中包含该脚本,以便该脚本可以在您选择的临时位置找到“已安装”的新文件。还要确保它在安装依赖项之前!
于 2018-08-02T18:54:23.107 回答