AWS CodeDeploy with Bamboo

时间:2015-08-25 16:22:38

标签: node.js amazon-s3 amazon-ec2 bamboo aws-code-deploy



我们开发了一个NodeJS应用程序,我们希望在Amazon Cloud中启动它们。 我们在其他Atlassian应用程序中集成了“Bamboo”。 Bamboo将构建文件传输到Amazon的S3 Bucket。 问题是:如何从S3移动并启动应用程序到EC2实例?

您可以在附件中找到我的appspec.yml,在我的构建目录中可以找到以下文件:
- 客户 | index.html等文件
- 服务器 |像server.js和socketio.js这样的文件
- appspec.yml
- 自述



有人有个主意吗?我希望它包含您需要的所有重要信息。

谢谢你:D


附件



version: 1.0
os: linux
files:
  - source: /
    destination: /




3 个答案:

答案 0 :(得分:0)

更新

我刚刚意识到你的appspec.yml似乎缺乏部署Node.js应用程序(以及大多数其他应用程序)的关键部分,即hooks部分。如AWS CodeDeploy Application Specification Files中所述, AppSpec文件用于将每个部署作为一系列部署生命周期事件进行管理

  
      
  • 在部署步骤期间,AWS CodeDeploy代理将在AppSpec文件的钩子部分中查找当前事件的名称。 [...]如果   该事件可在钩子部分找到,AWS CodeDeploy Agent将   检索要为当前步骤执行的脚本列表。 [...]
  •   

例如,请参阅提供的AppSpec file Example(纯粹为了说明,您需要制作适合您应用的自定义版本):

os: linux
files:
  - source: Config/config.txt
    destination: webapps/Config
  - source: source
    destination: /webapps/myApp
hooks:
  BeforeInstall:
    - location: Scripts/UnzipResourceBundle.sh
    - location: Scripts/UnzipDataBundle.sh
  AfterInstall:
    - location: Scripts/RunResourceTests.sh
      timeout: 180
  ApplicationStart:
    - location: Scripts/RunFunctionalTests.sh
      timeout: 3600
  ValidateService:
    - location: Scripts/MonitorService.sh
      timeout: 3600
      runas: codedeployuser

如果没有这样的ApplicationStart命令,AWS CodeDeploy就没有任何关于如何处理您的应用程序的说明(请记住,CodeDeploy与技术无关,因此需要建议如何启动应用服务器)。 / p>

初步答复

<{3}} 中的部署概述部分说明了典型AWS CodeDeploy部署的流程

What Is AWS CodeDeploy?

关于您的问题的关键方面是第4步:

  
      
  1. 最后,每个参与实例上的AWS CodeDeploy代理从指定的Amazon S3存储桶或GitHub中提取修订版本   存储库并开始将内容部署到该实例,   按照AppSpec文件中提供的说明进行操作。 [强调我的]
  2.   

也就是说,一旦你开始enter image description here部署,一切都应该自动运行 - 因此,似乎配置不太正确,最常见的问题是部署组实际上不包含任何运行实例。您是否已验证可以通过AWS管理控制台从CodeDeploy部署到EC2实例?

答案 1 :(得分:0)

如果您登录AWS CodeDeploy控制台的“部署”列表,您会看到什么?

https://console.aws.amazon.com/codedeploy/home?region=us-east-1#/deployments

(相应地更改区域)

此外,代码将在/opt/codedeploy-agent/deployment-root/<agent-id?>/<deployment-id>/deployment-archive

中下载

/opt/codedeploy-agent/deployment-root/<agent-id?>/<deployment-id>/logs/scripts.logs

中的日志

确保代理具有从S3存储桶下载版本的连接和权限。这意味着在实例中使用互联网连接和/或使用代理(设置http_proxy以便code_deploy使用它),并在实例中设置具有读取S3存储桶权限的IAM配置文件。

检查codedeploy代理的日志以查看它是否成功连接:/var/log/aws/codedeploy-agent/codedeploy-agent.log

答案 2 :(得分:0)

您需要在代码部署中创建部署,然后使用代码depoy中的下拉箭头和S3存储桶URL部署新修订。但它需要是zip / tar.gz / tar