作为开发人员,您需要一个管道,以在每次提交更改时都从内部部署 GitHub 实例中获取自动化云模板。您需要使用该管道将 WordPress 应用程序部署到 Amazon Web Services (AWS) EC2 或数据中心。 Code Stream 将从该管道调用云模板,并自动执行该云模板的持续集成和持续交付 (CICD) 以部署您的应用程序。

要创建并触发管道,您需要一个 VMware 云模板。

对于 Code Stream 云模板任务中的云模板源,可以选择以下两项之一:

  • Cloud Assembly 模板,作为源控制。在这种情况下,不需要 GitLab 或 GitHub 存储库。
  • 源控制(如果使用 GitLab 或 GitHub 作为源控制)。在这种情况下,必须具有 Git webhook 并通过该 webhook 触发管道。

如果您的 GitHub 存储库中有 YAML 云模板,并且希望在管道中使用该云模板,则需要执行以下操作。

  1. Cloud Assembly 中,将云模板推送到 GitHub 存储库。
  2. Code Stream 中,创建 Git 端点。然后,创建使用 Git 端点和管道的 Git webhook。
  3. 要触发管道,请更新 GitHub 存储库中的任何文件并提交所做的更改。

如果您的 GitHub 存储库中没有 YAML 云模板,并且希望使用源控制中的云模板,请使用以下过程了解如何操作。该过程展示了如何为 WordPress 应用程序创建云模板,并从内部部署 GitHub 存储库中触发该云模板。每当您更改 YAML 云模板时,管道都会触发并自动发布应用程序。

  • Cloud Assembly 中,将添加云帐户、添加云区域并创建云模板。
  • Code Stream 中,将为托管云模板的内部部署 GitHub 存储库添加端点。然后,将云模板添加到管道中。

以下用例示例展示了如何使用内部部署 GitHub 存储库中的云模板。

该工作流可帮助您了解自动执行从 YAML 云模板部署的应用程序的发布过程。

前提条件

  • 在 vRealize Automation Cloud Assembly 基础架构中添加一个云帐户和一个云区域。请参见 vRealize Automation Cloud Assembly 文档。
  • 要按照以下过程创建云模板,请将 WordPress YAML 代码复制到剪贴板。请参见 vRealize Automation Cloud Assembly 文档中 WordPress 用例中的云模板 YAML 代码。
  • 将 WordPress 应用程序的 YAML 代码添加到 GitHub 实例。
  • 为 Git 触发器添加 Webhook,以便管道可以在您提交更改时提取 YAML 代码。在 Code Stream 中,单击触发器 > Git > 适用于 Git 的 Webhook
  • 要使用云模板任务,您必须具有任意 Cloud Assembly 角色。

过程

  1. Cloud Assembly 中,执行以下步骤。
    1. 单击 VMware Cloud Templates,然后为 WordPress 应用程序创建云模板和部署。
    2. 将已复制到剪贴板的 WordPress YAML 代码粘贴到云模板,然后部署该云模板。
      通过使用 YAML 代码,云模板会在部署中创建数据库层、Web 层和网络。
  2. Code Stream 中,创建端点。
    1. 为 YAML 文件所在的内部部署 GitHub 存储库添加 Git 端点。
    2. 添加电子邮件端点,以便可以在管道运行时向用户通知管道状态。
      添加电子邮件端点时,需要设置加密方法和设置出站协议。
  3. 创建一个管道,并添加分别表示管道成功和失败的电子邮件通知。
    添加电子邮件通知时,需要选择一种管道状态,以及选择电子邮件服务器和收件人。
  4. 添加开发阶段和云模板任务。
    1. 添加用于部署计算机的云模板任务,并将该任务配置为使用 WordPress 应用程序的云模板 YAML。
      resources:
        DBTier:    
          type: Cloud.Machine    
          properties:      
              name: mysql      
              image: 'ubuntu-16'      
              flavor: 'small'      
              constraints:        
                  -   tag: zone:dev
        WebTier:
          type: Cloud.Machine    
          properties:     
              name: wordpress      
              image: 'ubuntu-16'      
              flavor: 'small'      
              constraints:        
                  - tag: zone:dev
       WP-Network-Private:
          type: Cloud.Network
          properties:
              name: WP-Network-Private
              networkType: existing
              constraints:
                  - tag: 'type:isolated-net'
                  - tag: 'zone:dev'
    2. 添加销毁计算机以释放资源的云模板任务。
  5. 添加生产阶段,并包含批准任务和部署任务。
    1. 添加用户操作任务,以指定需要批准才能将 WordPress 应用程序推送到生产环境。
    2. 添加用于部署计算机的云模板任务,并将其配置为使用 WordPress 应用程序的云模板 YAML。
      选择 创建时,部署名称必须唯一。如果将名称留空, Code Stream 将为其分配唯一的随机名称。
      以下是您在自己的用例中选择 回滚时必须了解的内容:如果选择 回滚操作并输入 回滚版本,则版本必须采用 n-X 形式。例如, n-1n-2n-3 等。如果在 Code Stream 以外的任何位置创建并更新部署,则允许回滚。
      登录到 Code Stream 时,它将获取用户令牌,令牌有效时间为 30 分钟。如果管道持续运行时间长,则云模板任务之前任务的运行时间为 30 分钟或更长时间时,用户令牌将过期。因此,云模板任务将失败。
      为确保管道的运行时间可超过 30 分钟,可以输入可选的 API 令牌。当 Code Stream 调用云模板时,API 令牌将持续存在,并且云模板任务将继续使用 API 令牌。
      使用 API 令牌作为变量时,将对其进行加密。否则,将以纯文本形式使用。
      云模板任务可以使用 Cloud Assembly 中的 VMware 云模板,或者从 GitLab 存储库或 GitHub 存储库中的源控制提取一个。
  6. 运行管道。

    要验证每个任务是否已成功完成,请单击正在执行的任务,然后检查部署详细信息中的状态,以查看详细资源信息。

  7. 在 GitHub 中,将 WordPress 服务器实例的特定实例从 small 修改为 medium
    当您提交更改时,管道将触发。它会从 GitHub 存储库中提取更新的代码,并构建您的应用程序。
    WebTier:
        type: Cloud.Machine    
        properties:     
            name: wordpress      
            image: 'ubuntu-16'      
            flavor: 'medium'      
            constraints:        
                - tag: zone:dev
  8. 重新运行管道,验证管道是否已成功并且已将 WordPress 实例的特定实例从 small 更改为 medium

结果

恭喜!您已自动执行从 YAML 云模板部署的应用程序的发布。

下一步做什么

要了解有关如何使用 Code Stream 的更多信息,请参见Code Stream 使用教程

有关其他参考,请参见 供 Code Stream 管理员和开发人员使用的更多资源