【问题标题】:Amazon CodeDeploy ApplicationStop script fails no matter whatAmazon CodeDeploy ApplicationStop 脚本无论如何都会失败
【发布时间】:2018-11-29 05:57:41
【问题描述】:

我正在尝试使用 codedeploy 从 bitbucket 自动部署到 ec2 实例,但 Codedeploy 在“ApplicationStop”阶段总是失败。

这是我的 appspec.yml

version: 0.0 os: linux files: - source: /quickdeal.zip destination: /home/ubuntu/quickdeal/ hooks: BeforeInstall: - location: scripts/install_dependencies.sh runas: root ApplicationStop: - location: scripts/stop_server.sh runas: root ApplicationStart: - location: scripts/start_server.sh runas: root

下面是stop_server.sh

#!/bin/bash
# stop any old running servers 
killall -s KILL node -q || echo 'no node process was running'

但这是我在 aws 中遇到的错误

Error CodeScriptFailed
Script Namescripts/stop_server.sh
MessageScript at specified location: scripts/stop_server.sh run as user root failed with exit code 1
Log TailLifecycleEvent - ApplicationStop
Script - scripts/stop_server.sh

我已经尝试过的事情

[1] 删除并重新创建应用程序 [2] 清空 stop_server.sh 使其根本不给出任何退出代码(仍然得到退出代码 1)

【问题讨论】:

  • 既然你有两个问题,你真的应该有两个独立的 SO 问题。我将编辑您的问题以删除问题 #2,然后我将尝试回答您的第一个问题。

标签: amazon-web-services amazon-s3 amazon-ec2 bitbucket aws-code-deploy


【解决方案1】:

首先,当我尝试你拥有的killall 命令时,它失败了:

killall: unknown signal q; valid signals:
HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP
TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH INFO USR1 USR2

至于您讨论的问题,我很确定scripts/stop_server.sh 不是可执行文件。如果脚本不可执行,如果您尝试手动运行它,您会得到类似sudo: scripts/stop_server.sh: command not found 的信息。尝试在本地运行脚本,我打赌你会看到的。

不过,这很容易解决。在您将在 appspec 中运行的任何可执行文件上运行它 - sudo chmod +x scripts/stop_server.sh,这应该可以在您创建新的应用程序包时解决您的问题。

【讨论】:

  • 感谢您的回复,它们一开始都是可执行的。我检查了很多次许可。其他人也遇到了这些问题,并建议清除“/opt/codedeploy-agent/deployment-root”目录并重新创建代码部署应用程序,它可以工作。
  • 嗯,很奇怪。对于您最后一次成功的部署(在所有失败之前),您在 scripts/stop_server.sh 中是否有错误?当您进行部署时,它实际上会使用您上次成功部署的ApplicationStop,而不是您当前的部署。当ApplicationStop 脚本有错误时,这是​​一个常见问题。您尝试更新部署,但它继续失败。如果是这样,你can ignore application stop failures.
  • 嘿伙计,非常感谢您提供的指导链接。我想这可能是问题所在。它成功部署了 3 次,然后当我在停止脚本中进行一些更改时它开始失败。即使将其更改回原来的那个,它仍然失败。但据我所知,停止脚本在任何其他脚本之前运行。对我来说最后一个选择是重新创建应用程序。
猜你喜欢
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 2014-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多