我正在使用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代理文件夹的变量?
答案 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/