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

How do I configure my appspec.yml file to deploy an application rather than a single page?

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

  1. 从 Repo 中提取
  2. 运行 针对 X 项目的 MSBuild。
  3. 运行 针对 X 项目的测试。
  4. 将构建工件复制到 S3。
  5. 停止 Web 服务器上的应用程序池。
  6. 运行 部署生成工件的 cmd 文件。
  7. 在网络服务器上启动应用程序池。
  8. Cleanup/Post 构建步骤。

我假设我上面写的步骤与 appspec.yml 文件 detailed here 中的 "files" 和 "hooks" 部分有一些关联。不幸的是,我无法在脑海中找出两者之间的映射,我发现的每个博客 post、在线文档和视频几乎都只是说 "you need this file" 并指向一个移动的示例一个静态文件并且有一个或两个钩子。我不知道如何集成部署的实际构建部分。

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

CodeDeploy 用于部署构建的应用程序。预先构建和任何东西都需要单独管理。您传递给 codedeploy 的 zip 文件应该是构建的应用程序加上描述安装的 appspec。

下面是我的 .NET 应用程序的应用规范。

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 来 运行 tests/build 代码。
  4. Jenkins 压缩构建工件(构建的解决方案)并上传到 S3
  5. Jenkins 使用 s3 zip 文件触发 codedeploy 部署。
  6. 代码部署读取 zip 中的应用规范并相应地提取内容。
  7. 生命周期挂钩在适当的时候执行。就我而言,用于启动和停止 IIS,以及从 ELB 中安全地删除实例。