AWS Codedeploy部署间歇性地失败,没有记录信息,也没有创建部署ID错误的目录

时间:2017-08-10 08:34:12

标签: jenkins aws-code-deploy

我们有一个Jenkins触发的构建设置,它在后期构建操作中具有AWS代码部署设置。当天的第一次部署发生如下 -

  • 即使在10分钟后,Kept也会无限期地在AWS codedeploy控制台中显示正在进行中。
  • Jenkins超时发生导致以下最后状态 以下是部署日志中的最后一个日志行 -

    部署状态:InProgress;实例:{待定:0,InProgress:3,成功:0,失败:0,跳过:0} 超过最大轮询时间500000毫秒。 部署状态:InProgress;实例:{待定:0,InProgress:3,成功:0,失败:0,跳过:0} 部署没有成功。最终状态:InProgress

  • 我不得不从AWS控制台手动停止部署。

  • 我们自定义生成的日志文件显示了与执行后执行的脚本相对应的脚本。

  • 在指定位置/opt/codedeploy-agent/deployment-root/3dfdc563-66c5-47a0-98f8-01605d25a6e9/创建的部署ID明智目录,以下是/opt/codedeploy-agent/deployment-root/deployment-logs/codedeploy-agent-deployments.log文件中的最后一行(这些不是致命错误,预计不会使构建挂起) -

    [2017-08-10 07:10:22.484] [d-C2A5P270O] [stderr] ls:无法访问测试/ hiphop_errors.txt:没有这样的文件或  目录 [2017-08-10 07:10:27.511] [d-C2A5P270O] [stderr] cat:/ opt / codedeploy-agent / deployment-root / 3dfdc563-66c5-4 7a0-98f8-01605d25a6e9 / d-C2A5P270O / deployment-archive / tests / dummy_nginx_access_logs.txt:没有这样的文件或目录

以下是AWS代码部署控制台的屏幕截图 - enter image description here

针对单个实例的详细信息显示没有关于错误的详细信息 - enter image description here

然后我在构建服务器中执行了dos2unix所有钩子文件(在各种部署步骤中执行的文件,即afterInstall,beforeInstall等),只是为了确定,因为我遇到过类似的问题复制粘贴Windows文件/代码之前的早期版本。在此之后,又花了两个版本,现在我看到以下内容 -

  • 在所有实例上部署失败。 AWS代码部署控制台显示对所有实例都失败,没有详细信息 -

enter image description here

  • 在前一种情况下,没有在指定位置创建特定于部署ID的目录。根本没有创建部署日志。

由于代码部署行为奇怪,我再次无能为力。昨天,我们发现了类似的日志文件无法生成的问题。重新安装了codedeploy代理,然后部署日志创建正常。但是,我们应该盲目地进行多少次新安装?

更新

为部署保持正在进行的情况无限期地添加/var/log/aws/codedeploy-agent/codedeploy-agent.log文件的内容,如@EmptyArsenal的回答所指出的那样(我没有注意到日志中有任何错误) -

2017-08-21 11:13:47 INFO  [codedeploy-agent(1983)]: Version file found in /opt/codedeploy-agent/.version.
2017-08-21 11:13:47 INFO  [codedeploy-agent(1983)]: [Aws::CodeDeployCommand::Client 200 0.065601 0 retries] poll_host_command(host_identifier:"arn:aws:ec2:us-east-1:377703961998:instance/i-e551e37d")

2017-08-21 11:13:47 INFO  [codedeploy-agent(1983)]: Version file found in /opt/codedeploy-agent/.version.
2017-08-21 11:13:47 INFO  [codedeploy-agent(1983)]: [Aws::CodeDeployCommand::Client 200 0.044413 0 retries] put_host_command_acknowledgement(diagnostics:nil,host_command_identifier:"WyJjb20uYW1hem9uLmFwb2xsby5kZXBsb3ljb250cm9sLmRvbWFpbi5Ib3N0Q29tbWFuZElkZW50aWZpZXIiLHsiZGVwbG95bWVudElkIjoiQ29kZURlcGxveS91cy1lYXN0LTEvUHJvZC9hcm46YXdzOnNkczp1cy1lYXN0LTE6Mzc3NzAzOTYxOTk4OmRlcGxveW1lbnQvZC1XNDFCV0tLN08iLCJob3N0SWQiOiJhcm46YXdzOmVjMjp1cy1lYXN0LTE6Mzc3NzAzOTYxOTk4Omluc3RhbmNlL2ktZTU1MWUzN2QiLCJjb21tYW5kTmFtZSI6IkFmdGVySW5zdGFsbCIsImNvbW1hbmRQb3NpdGlvbiI6NSwiY29tbWFuZEF0dGVtcHQiOjF9XQ==")

2017-08-21 11:13:47 INFO  [codedeploy-agent(1983)]: Version file found in /opt/codedeploy-agent/.version.2017-08-21 11:13:47 INFO  [codedeploy-agent(1983)]: [Aws::CodeDeployCommand::Client 200 0.027061 0 retries] get_deployment_specification(deployment_execution_id:"CodeDeploy/us-east-1/Prod/arn:aws:sds:us-east-1:377703961998:deployment/d-W41BWKK7O",host_identifier:"arn:aws:ec2:us-east-1:377703961998:instance/i-e551e37d")

1 个答案:

答案 0 :(得分:0)

在主机永远不会开始执行生命周期事件的情况下,几乎总是代理未安装,未运行或权限未正确设置的情况。您只需要安装一次代理,因此我不确定您为什么必须重新安装。也许代理人死了,它只是没有运行(虽然它应该自行重启)。

我会在/var/log/aws/codedeploy-agent/codedeploy-agent.log查看日志。这些是代理日志,不是特定于部署的。如果代理崩溃,您应该在那里看到信息。

至于您所看到的部署特定错误,对我来说看起来像是一个脚本错误。您尝试访问的文件不存在,或者您没有适当的权限与它们进行交互。您可以在appspec中修复它。如果那些在任何地方失败,您可能希望在不运行这些命令的情况下进行部署,以验证错误确实不是致命的。