1

我正在使用 AWS codedeploy 和 git 进行应用程序部署。我创建了一个 appspec.yml。在文件部分,我需要将文件从不同的文件夹(例如:/home/ec2-user/sample.war)复制到目的地。


version: 0.0
os: linux
files:
   - source: /home/ec2-user/deploy/sample.war
     destination: /usr/share/tomcat6/webapps/

文件部分中的源属性仅在 codedeploy 代理目录中查找文件(例如:/opt/codedeploy-agent/deployment-root/1d4de60d-99c1-4e40-bd14-335b6f8b5633/d-sfjksdjfkl/home/ec-user/sample.战争)。根据 AWS 文档,这是正确的。是否有任何其他选项可用于从 ec2 实例的不同位置复制文件?或任何可用于在运行时定位 aws codedeploy 代理文件夹的变量?

4

2 回答 2

0

我认为你可以使用钩子脚本来做到这一点。似乎该文件未包含在捆绑包中,您可以使用一个简单的脚本来为您执行 cp。我认为最好在“BeforeInstall”事件期间运行脚本来复制脚本。

您可以在此处查看如何在 appsec 文件中设置挂钩。

浜溪

于 2015-04-17T00:29:49.783 回答
0

您可以完全自定义CodeDeploy 在应用安装之前、之后和期间执行的操作。您只需在 hooks 部分中声明要复制的文件,如下所示:

应用规范.yml

version: 0.0
os: linux
files:
  - source: /
    destination: /var/www/html/dbex.ml
hooks:
  BeforeInstall:
    - location: scripts/install_dependencies.sh
      timeout: 300
      runas: root
  AfterInstall:
    - location: scripts/after_install.sh
      timeout: 300
      runas: root
  ApplicationStart:
    - location: scripts/start_server.sh
      timeout: 300
      runas: root
  ApplicationStop:
    - location: scripts/stop_server.sh
      timeout: 300
      runas: root

您想要做的是编辑 AfterInstall 挂钩中的 after_install.sh 文件,如下所示:

after_install.sh

#!/bin/sh
sudo cp /path/to/file /your/app/folder/
于 2017-04-09T13:51:14.760 回答