【发布时间】: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