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

Nec*_*ras 1 msbuild bitbucket amazon-web-services aws-code-deploy

我正在阅读有关如何使用 AWS CodeDeploy 直接从 BitBucket 部署代码的AWS 博客文章。大部分内容都相当简单,直到我提到了 appspec.yml 文件。我知道其目的是描述要部署的内容以及如何部署,但我不明白如何为应用程序(而不仅仅是一个简单的页面)执行此操作。根据我以前的经验,会有一系列步骤,例如

  1. 从仓库拉取
  2. 针对 X 项目运行 MSBuild。
  3. 针对 X 项目运行测试。
  4. 将构建工件复制到 S3。
  5. 停止 Web 服务器上的应用程序池。
  6. 运行 cmd 文件来部署构建工件。
  7. 在 Web 服务器上启动应用程序池。
  8. 清理/构建后步骤。

我假设我上面编写的步骤与此处详细介绍的appspec.yml 文件中的“文件”和“挂钩”部分之间存在某种相关性。不幸的是,我无法在头脑中找出两者之间的映射,我发现的每一篇博客文章、在线文档和视频几乎都只是说“你需要这个文件”并指出一个移动一个静态文件的示例并且有一个或两个钩子。我不知道如何集成部署的实际构建部分。

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

ste*_*r84 5

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
Run Code Online (Sandbox Code Playgroud)

关于codedeploy,我的流程是这样的:

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