gpt4 book ai didi

django - CodeDeploy 运行过时的 appspec 文件?

转载 作者:行者123 更新时间:2023-12-04 11:21:33 24 4
gpt4 key购买 nike

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

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

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

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

结果我忘了改 runas用户在 ApplicationStop钩。然后我更改了它,再次进行推送和创建部署,但错误仍然相同。我是否需要做其他事情来考虑 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

最佳答案

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

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

关于django - CodeDeploy 运行过时的 appspec 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50145466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com