我是AWS CodeDeploy的新手,实际上,我只是在试验。
我正在尝试使用CircleCI 2.0和AWS CodeDeploy处理持续集成,以便当我将更改推送到github中的开发环境时,它会在CircleCI中进行构建,然后将部署推送到S3,之后将更改部署到EC2。
我在CodeDeploy中进行了所有配置,并从github上的一个人那里复制了appspec,他使用Django/DRF项目(与我的类似)使用CodeDeploy。唯一的区别是他在EC2实例中使用另一个内核(我认为是AWS Linux),而我正在使用ubuntu。因此,我必须更改每个钩子部分中
我正在尝试使用CircleCI 2.0和AWS CodeDeploy处理持续集成,以便当我将更改推送到github中的开发环境时,它会在CircleCI中进行构建,然后将部署推送到S3,之后将更改部署到EC2。
我在CodeDeploy中进行了所有配置,并从github上的一个人那里复制了appspec,他使用Django/DRF项目(与我的类似)使用CodeDeploy。唯一的区别是他在EC2实例中使用另一个内核(我认为是AWS Linux),而我正在使用ubuntu。因此,我必须更改每个钩子部分中
runas
部分中的用户名。当我第一次在aws cli中运行create-deployment命令时,部署失败,并显示以下消息:LifecycleEvent - ApplicationStop
Script - scripts/stop_application.sh
[stderr]No passwd entry for user 'ec2-user'
事实证明,我忘记在 ApplicationStop
钩子中更改 runas
用户。然后我进行了更改,执行了 push 和 create-deployment,但错误仍然相同。我需要做些其他的事情才能考虑 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