【问题标题】:CodeDeploy running outdated appspec file?CodeDeploy 运行过时的 appspec 文件?
【发布时间】:2018-05-03 00:54:56
【问题描述】:

我是 AWS CodeDeploy 的新手,事实上,我只是在尝试。

我正在尝试使用 CircleCI 2.0 和 AWS CodeDeploy 处理持续集成,这样当我将 django 项目的更改推送到 github 中的开发时,它会在 CircleCI 中构建,然后将部署推送到 S3,然后更改是部署到 EC2。

我在 CodeDeploy 中完成了所有配置,并从 github 中使用 CodeDeploy 和 Django/DRF 项目(例如我的项目)的人那里复制了 appspec。唯一的区别是他在他的 EC2 实例中使用了另一个内核(我认为是 AWS linux),而我使用的是 ubuntu。所以我不得不在每个hooks 部分的runas 部分更改用户名。我第一次在 aws cli 中运行 create-deployment 命令时,部署失败并显示以下消息:

LifecycleEvent - ApplicationStop
Script - scripts/stop_application.sh
[stderr]No passwd entry for user 'ec2-user'

事实证明,我忘记更改 ApplicationStop 挂钩中的 runas 用户。然后我改变了它,再次推送和创建部署,但错误仍然是一样的。我是否需要做其他事情才能考虑 appspec 中的更改或为什么会发生这种情况?

这是 appspec.yml 文件:

version: 0.0
os: linux
files:
  - source: /
    destination: /home/ubuntu/taptop_web
permissions:
  - object: /home/ubuntu
    pattern: "**"
    owner: ubuntu
    group: ubuntu
hooks:
  BeforeInstall:
    - location: scripts/clean_instance.sh
      timeout: 6000
      runas: root
  AfterInstall:
    - location: scripts/install_os_dependencies.sh
      timeout: 6000
      runas: root
    - location: scripts/install_python_dependencies.sh
      timeout: 6000
      runas: ubuntu
    - location: scripts/migrate.sh
      timeout: 6000
      runas: ubuntu
  ApplicationStart:
    - location: scripts/start_application.sh
      timeout: 6000
      runas: ubuntu
  ApplicationStop:
    - location: scripts/stop_application.sh
      timeout: 6000
      runas: ubuntu

还有 stop_application.sh

#!/usr/bin/env bash
cd /home/ubuntu/taptop_web
ps auxw | grep runserver | awk '{print $2}' | xargs kill

【问题讨论】:

    标签: django amazon-web-services command-line-interface circleci aws-code-deploy


    【解决方案1】:

    要解决您的问题,您唯一需要做的就是成功部署。它只是看起来好像没有更新,因为当您进行部署时,它将从以前的版本运行ApplicationStop。这通常令人困惑,但它的工作原理是这样的,因为只有修订应该知道如何停止它自己的应用程序 - 如果停止命令在修订之间发生变化,新的停止命令将不起作用。

    话虽如此,客户的ApplicationStop 脚本由于脚本中的问题而失败并不少见,因此部署将在没有干预的情况下继续失败。如果有您的问题,请关注this guide 以摆脱困境。

    【讨论】:

    • 谢谢!那是前一段时间了。我通过删除应用程序并使用新的 appspec 创建另一个来解决它。但是您的解决方案似乎要好得多(我的解决方案本身不是解决方案,而是一种解决方法)。我要试试。
    猜你喜欢
    • 2018-02-26
    • 2019-01-03
    • 2018-02-04
    • 2021-11-08
    • 1970-01-01
    • 2018-01-14
    • 2021-12-18
    • 2016-05-28
    • 1970-01-01
    相关资源
    最近更新 更多