教程:使用适用于 Microsoft Power Platform 的 GitHub Actions 自动部署解决方案

在本教程中,您将了解如何:

  • 创建新 GitHub 存储库
  • 使用适用于 Microsoft Power Platform 的 GitHub Actions 创建两个 GitHub 工作流

这些工作流可以从开发环境中自动导出您的应用(作为非托管解决方案),生成生成项目(托管解决方案),然后将应用部署到生产环境中。 本教程使用您构建的 ALMLab 解决方案和您在以前的教程中设置的环境。

相关教程:开始使用构建模型驱动应用

创建 GitHub 帐户

  1. 转到 https://github.com,单击注册开始免费试用(如果您已有帐户,请登录)。

    创建帐户

  2. 创建帐户后,选择创建存储库新建来创建存储库。

    创建存储库

    您可能会看到以下替代登陆屏幕:

    创建新存储库

  3. 创建新存储库并将其命名为“poweractionslab”。 确保选择了添加自述文件以启动存储库,然后选择创建存储库

    启动存储库。

为服务主体身份验证创建新密码

  1. 导航到您的存储库并单击 Settings(设置),然后展开 Secrets(密钥),然后单击 Actions(操作)

  2. 密码页上,将密码命名为“PowerPlatformSPN”。 使用在 Microsoft Entra 中创建的应用程序注册中的客户端密码,将其输入到字段,然后选择添加密码。 此客户端密码将在本实验室后面用于定义 GitHub 工作流的 YML 文件中引用。

    创建服务主体密码

    客户端密码现在已安全地存储为 GitHub 密码。

创建工作流将解决方案文件导出并解包到新分支

  1. 单击操作并单击自己设置工作流,或单击建议用于此存储库部分下的简单工作流框中的“配置”。

    设置工作流。

  2. 这将使用基本工作流启动一个新 YAML 文件,以帮助您开始使用 GitHub Actions。

    示例 YML 文件

  3. 删除预先创建的内容,粘贴 export-and-branch-solution-with-spn-auth.yml 文件中的内容,然后将文件重命名为 ‘export-and-branch-solution’.yml。

    重命名和替换内容。

  4. 使用要从中导出的开发环境的 URL 更新 <ENVIRONMENTURL>(例如:https://poweractionsdev.crm.dynamics.com)。

  5. 用您的值更新 <APPID><TENANT ID>

    • 如果要使用凭据,请粘贴 export-and-branch-solution.yml 文件,而不是粘贴 export-and-branch-solution-with-spn-auth.yml 文件内容。 使用您用于连接到环境的用户名更新 <USERNAME>

      重命名和替换内容

    小费

    如果您不熟悉 GitHub Actions,并且想要了解详情,请查看 https://docs.github.com/en/actions 中的正式文档。

  6. 现在您可以提交更改了。 选择开始提交,在标题字段中键入创建导出 yml,然后添加说明(可选)。 接下来,单击提交新文件

    开始提交。

恭喜,您已经使用以下操作创建了第一个 GitHub 工作流:

  • 是谁:确保您可以成功连接到要从中导出的环境。
  • 导出解决方案:从开发环境导出解决方案文件。
  • 解压缩解决方案:从服务器导出的解决方案文件是包含合并配置文件的压缩(zip)文件。 这些初始文件不适合用于源代码管理,因为它们的结构不便于源代码管理系统正确地对文件进行区分和捕获要提交给源代码管理的更改。 您需要“解包”解决方案文件,以使其适合用于源代码管理的存储和处理。
  • Branch Solution:创建一个新分支来存储导出的解决方案。

测试导出和解包工作流

  1. 接下来,测试工作流是否运行。 导航到操作运行工作流,选择运行工作流。 如果您的解决方案名称与“ALMLab”不同,请更改此处的值,但保留其他值不变。

    运行工作流。

  2. 5–10 秒后,工作流将开始,您可以选择正在运行的工作流来监视进度。

    单击查看工作流。

    选择和查看工作流。

  3. 工作流完成后,验证是否已创建新分支,并将解决方案解包到 solutions/ALMLab 文件夹。 导航到 Code 选项卡展开 branches 下拉列表

  4. 选择操作创建的分支。

  5. 验证是否在新分支中创建了 solutions/ALMLab 文件夹,然后创建一个拉取请求来将更改合并到主分支中。 单击 Contribute(贡献 ),然后在浮出控件 中单击 Open Pull request(打开拉取请求)。

  6. 打开拉取请求屏幕上,根据需要添加标题和说明,然后单击创建拉取请求。

  7. 屏幕将更新,并显示新创建的拉取请求。 在创建拉取请求时,将会提供确认,以表明我们的分支与主分支没有冲突。 此确认意味着更改可自动合并到主分支中。 单击 Merge pull request (合并拉取请求),然后单击 Confirm merge( 确认合并)。 或者,单击“删除分支”以清理现已失效的分支。

    查看分支

  8. 导航回默认的(主)分支并验证解决方案现在也可用。

创建可重用的工作流以生成生成项目并导入生产环境

在本节中,我们将再创建一个工作流,该工作流:

  • 创建托管解决方案并将其作为 GitHub 项目发布
  • 将生成项目导入到生产环境
  1. 导航到操作,选择新建工作流

    创建新工作流。

  2. 选择自行设置工作流

    设置工作流。

  3. 将工作流的标题重命名为“release-solution-to-prod-with-inputs”,从 release-solution-to-prod-with-inputs.yml 文件中复制内容并粘贴到编辑新文件屏幕中。

    重命名和粘贴代码。

  4. 提交更改。 选择开始提交,然后添加标题和说明(可选)。 接下来,选择提交新文件

    提交更改。

在发布事件上调用可重用的工作流

在本节中,我们将在发布事件上调用可重用工作流。

  1. 导航到操作,选择新建工作流

    创建新工作流。

  2. 选择自己设置工作流

    设置工作流。

  3. 将工作流的标题重命名为“release-action-call”,从 release-action-call.yml 文件中复制内容并粘贴到编辑新文件屏幕中。

    重命名和粘贴代码。

  4. 在新工作流文件中更新以下变量:

  5. 提交更改。 选择开始提交,然后添加标题(可选)和说明(可选)。 接下来,选择提交新文件

    提交更改。

测试生产工作流的发布

现在您已准备好对最后一个工作流进行测试了。 此工作流在向生产环境部署了新发布时触发。

  1. 导航到发布

    导航到发布。

  2. 选择草拟新发布

  3. 添加发布标签、标题,然后选择发布版本

  4. 选择操作查看运行的工作流。

    选择查看工作流。

  5. 选择运行的工作流查看运行时的操作。

    查看工作流。

  6. 等待每个操作完成。

    查看分支。

  7. 工作流完成后,登录到您的生产环境,验证解决方案是否已作为托管解决方案部署。

在生产发布之前部署更新和审查更改

现在,我们将测试端到端流程,然后看看在将应用部署到生产环境之前如何查看和验证对应用所做的更改。

  1. 导航到开发环境中的 ALMLab 解决方案,并选择编辑或单击解决方案显示名称。

    编辑解决方案。

  2. 选择并查看休息时间请求表。

    查看此表。

  3. 单击 + 添加列并创建新列,如下图所示。

    添加列。

    更新的 Field 值:**

    • 显示名称:已批准
    • 数据类型:是/否
  4. 单击完成

  5. 单击保存表添加列。

  6. 导航回 GitHub 存储库操作选项卡,选择运行工作流,然后选择运行工作流按钮。

    运行工作流。

  7. 5–10 秒后,工作流将开始,您可以单击正在运行的工作流来监视它的进度。

    选择工作流。

    查看工作流。

  8. 工作流完成后,通过选择代码,然后选择分支导航到新分支。

    导航到分支。

  9. 选择展开参与创建的分支,然后单击打开拉取请求

  10. 添加标题(可选),然后单击创建拉取请求

  11. 在内容更新后,单击已更改文件选项卡。

  12. 请注意,对解决方案的更改以绿色突出显示,以指示对比主分支中的同一文件,文件中增加了这一部分。

  13. 导航回对话选项卡。选择拉取请求,然后选择之前创建的拉取请求。

  14. 拉取请求页上,选择挤压和合并以将更新的解决方案文件合并到主分支中,并(可选)删除现在合并到主分支中的内容。

    打开针对新分支的拉取请求,查看更改并合并到默认分支

  15. 按照测试生产工作流的发布一节中的步骤创建一个新发布,并验证是否已将更新的解决方案部署到生产环境中。

恭喜,您已使用 GitHub Actions 成功设置了示例 CI/CD 工作流!

另请参阅

自动化从想法到生产的工作流程