使用git的AWS CodeDeploy

时间:2015-04-07 10:40:05

标签: amazon-web-services aws-code-deploy

我正在使用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/

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

2 个答案:

答案 0 :(得分:0)

我认为您可以使用钩子脚本来执行此操作。看来文件没有包含在包中,你可以有一个简单的脚本来为你做cp。我认为您可以在“BeforeInstall”事件期间运行脚本以最好地复制脚本。

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

邦西

答案 1 :(得分:0)

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

<强> appspec.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/