如何配置appspec.yml文件以部署应用程序而不是单个页面?

时间:2016-08-04 22:48:59

标签: amazon-web-services msbuild bitbucket aws-code-deploy

我正在研究如何使用AWS CodeDeploy直接从BitBucket部署代码AWS blog post。大多数情况都非常简单,直到我提到appspec.yml文件为止。我的理解目的是描述要部署的内容以及如何操作,但我不了解如何为应用程序执行此操作,而不仅仅是一个简单的页面。根据我以前的经验,会有一系列步骤,例如

  1. 从Repo拉出
  2. 针对X项目运行MSBuild。
  3. 针对X项目运行测试。
  4. 将构建工件复制到S3。
  5. 在网络服务器上停止应用程序池。
  6. 运行部署构建工件的cmd文件。
  7. 在网络服务器上启动App Pool。
  8. 清理/后期构建步骤。
  9. 我假设我在上面写的步骤与appspec.yml文件detailed here中的“files”和“hooks”部分之间存在某种关联。不幸的是,我无法弄清楚两者之间的映射,每个博客文章,在线文档和视频我发现只是说“你需要这个文件”并指向一个移动一个静态文件的例子并有一个或两个钩子。关于如何集成部署的实际构建部分,我感到很遗憾。

    任何人都可以提供一个示例appspec.yml文件来说明完整的应用程序部署,而不是简单的复制粘贴,或者指向一个能更好地解释这个过程的资源吗?

1 个答案:

答案 0 :(得分:4)

CodeDeploy用于部署构建的应用程序。事先建立和任何事情都需要单独管理。您传递给codedeploy的zip文件应该是构建的应用程序以及描述安装的appspec。

以下是我的.NET应用程序的appspec。

version: 0.0
os: windows
files:
  - source: /
    destination: C:\inetpub\wwwroot
hooks:
   BeforeInstall:
     - location: CodeDeploy/appstop.bat       
       runas: administrator
   ApplicationStart:
     - location: CodeDeploy/appstart.bat       
       runas: administrator

关于codedeploy,我的流程如下:

  1. 将代码检入Github,
  2. Github将webhook发送给Jenkins
  3. Jenkins使用MS Build来运行测试/构建代码。
  4. Jenkins拉上构建工件(构建的解决方案)并上传到S3
  5. Jenkins使用s3 zip文件触发codedeploy部署。
  6. 代码部署会读取zip中的appspec并相应地提取内容。
  7. 生命周期钩子在适当的时候被解雇。在我的例子中,用于启动和停止IIS,以及安全地从ELB中删除实例。