Amazon Web 服务 CodeDeploy appspec.yml 个问题
Amazon Web Service CodeDeploy appspec.yml problems
我有一个 Node.js 应用程序,它正在通过 Codeship using the CodeDeploy AWS 自动部署到 Amazon Web Service部署系统.
在部署过程中,我在 appspec.yml 中设置了要停止的当前 运行ning Web 应用程序。部署完成后,我希望重新启动 Web 应用程序。
os: linux
files:
- source: /
destination: /var/www/app2
hooks:
AfterInstall:
- location: bash_scripts/stop_forever.sh
runas: ec2-user
ApplicationStart:
- location: bash_scripts/start_forever.sh
runas: ec2-user
但是我还没有能够在部署期间从 appspec.yml 文件中成功调用这些脚本中的任何一个。
我在 AWS 部署代理日志中看到的当前错误是
Error CodeScriptMissing
Script Name /var/scripts/stop_forever.sh
MessageScript does not exist at specified location: /var/scripts/stop_forever.sh
Log TailLifecycleEvent - ApplicationStop
这似乎是指 appspec.yml 文件的旧版本,该文件试图 运行 这些脚本位于不同的位置。即使我更改了已部署包中 appspec.yml 文件的内容,此错误消息在每次部署时仍然相同。
除了上面列出的 appspec.yml 文件外,我还尝试进行以下更改:
- 没有为每个挂钩列出 运行as 参数
- 引用部署目录中的脚本
- 引用部署目录外的脚本
- 将 version 参数初始设置为 0.0
不幸的是,除了 AWS documentation。
之外,关于 appspec.yml 故障排除的在线信息很少
我做错了什么非常明显的事情?
在尝试 运行 当前部署 appspec.yml
文件之前,正在从先前安装的部署中调用 ApplicationStop
挂钩。
为了防止这种情况发生,您必须从服务器上删除任何以前安装的部署。
- 停止代码部署代理 -
sudo service codedeploy-agent stop
- 清除
/opt/codedeploy-agent/deployment-root
下的所有部署
- 重新启动代码部署代理 -
sudo service codedeploy-agent start
AWS 开发人员论坛中记录了另一种方法,我认为这种方法更可取。
在进行部署时使用 CLI 工具的 --ignore-application-stop-failures 选项,它对我来说非常有效。
取自论坛的例子:
aws deploy create-deployment --application-name APPLICATION --deployment-group-name GROUP --ignore-application-stop-failures --s3-location bundleType=tar,bucket=BUCKET,key=KEY --description "Ignore ApplicationStop failures due to broken script"
我有一个 Node.js 应用程序,它正在通过 Codeship using the CodeDeploy AWS 自动部署到 Amazon Web Service部署系统.
在部署过程中,我在 appspec.yml 中设置了要停止的当前 运行ning Web 应用程序。部署完成后,我希望重新启动 Web 应用程序。
os: linux
files:
- source: /
destination: /var/www/app2
hooks:
AfterInstall:
- location: bash_scripts/stop_forever.sh
runas: ec2-user
ApplicationStart:
- location: bash_scripts/start_forever.sh
runas: ec2-user
但是我还没有能够在部署期间从 appspec.yml 文件中成功调用这些脚本中的任何一个。
我在 AWS 部署代理日志中看到的当前错误是
Error CodeScriptMissing
Script Name /var/scripts/stop_forever.sh
MessageScript does not exist at specified location: /var/scripts/stop_forever.sh
Log TailLifecycleEvent - ApplicationStop
这似乎是指 appspec.yml 文件的旧版本,该文件试图 运行 这些脚本位于不同的位置。即使我更改了已部署包中 appspec.yml 文件的内容,此错误消息在每次部署时仍然相同。
除了上面列出的 appspec.yml 文件外,我还尝试进行以下更改:
- 没有为每个挂钩列出 运行as 参数
- 引用部署目录中的脚本
- 引用部署目录外的脚本
- 将 version 参数初始设置为 0.0
不幸的是,除了 AWS documentation。
之外,关于 appspec.yml 故障排除的在线信息很少我做错了什么非常明显的事情?
在尝试 运行 当前部署 appspec.yml
文件之前,正在从先前安装的部署中调用 ApplicationStop
挂钩。
为了防止这种情况发生,您必须从服务器上删除任何以前安装的部署。
- 停止代码部署代理 -
sudo service codedeploy-agent stop
- 清除
/opt/codedeploy-agent/deployment-root
下的所有部署
- 重新启动代码部署代理 -
sudo service codedeploy-agent start
AWS 开发人员论坛中记录了另一种方法,我认为这种方法更可取。
在进行部署时使用 CLI 工具的 --ignore-application-stop-failures 选项,它对我来说非常有效。
取自论坛的例子:
aws deploy create-deployment --application-name APPLICATION --deployment-group-name GROUP --ignore-application-stop-failures --s3-location bundleType=tar,bucket=BUCKET,key=KEY --description "Ignore ApplicationStop failures due to broken script"