用于 Microsoft Power Platform 开发的可用 GitHub Actions

以下部分介绍了 GitHub Actions Microsoft Power Platform 。 此外,还展示了示例 GitHub 工作流。 有关 GitHub Actions 以及如何下载它们的详细信息,请转到适用于 Microsoft Power Platform 的 GitHub Actions

配置要用于 GitHub Actions 和 Microsoft Power Platform 的凭据

许多操作都要求您连接到 Microsoft Dataverse 环境。 您可以将服务主体或用户凭据添加为 GitHub 存储库中的密钥,然后在工作流中使用它们。

  • 有关如何在 GitHub 中设置密钥的详细信息,请参阅加密密钥

  • 有关如何为 Microsoft Power Platform 设置服务主体身份验证的详细信息,请参阅 DevOps 生成工具

配置后,可以通过操作脚本调用服务主体。

GitHub Action 脚本内定义为环境变量的参数:

  • 应用程序 ID,如:WF_APPLICATION_ID:<your application id>
  • 租户 ID,如:WF_TENANT_ID:<your tenant id>

客户端密码必须作为 GitHub 密码添加和存储,并使用如下参数从工作流内引用:client secret: ${{secrets.CLIENT_SECRET_GITHUB_ACTIONS}}

帮助程序任务

下面介绍可用的帮助程序任务。

操作-安装

当 GitHub 操作工作流强制在运行程序的上下文中安装 Power Platform CLI,并且发生超时错误时,您必须使用版本 1 (@v1) 和一个附加操作 (actions-install),如下所示。

重要提示

  • 使用版本 1 (@v1) 可能会导致现有 GitHub 操作的更新,从而导致当前工作流被更新。
  • 您必须在 Power Platform 的任何其他 GitHub 操作之前,将安装 Power Platform Tools 任务作为第一个任务添加到您的工作流中。
jobs:
    builds:
        runs-on: windows-latest   # alternate runner OS is: ubuntu-latest

    steps:
    - name: Install Power Platform Tools
        uses: microsoft/powerplatform-actions/actions-install@v1

    - name: Export Solution
         uses: microsoft/powerplatform-actions/export-solution@v1
      with:
         environment-url: 'https://myenv.crm.dynamics.com'
         user-name: 'me@myenv.onmicrosoft.com'
         password-secret: ${{ secrets.MYPASSWORD }}
         solution-name: aSolution
         solution-output-file: 'aSolution.zip'
         working-directory: 'out'

您可以在 Power Platform 操作找到 GitHub 操作的其他示例。

whoAmI

通过连接到服务并发送 WhoAmI [SDK/Web API] 请求来验证服务连接。 要提前加入 GitHub 工作流,以便在处理开始前验证连接,此任务可能非常有用。

参数 描述
environment-url 您连接到的环境的 URL。
user-name 您用于连接的帐户的用户名。
password-secret user-name 的密码。 GitHub 密码在设置密码下定义。 密码在定义并保存后不可检索。
app-id 用于进行身份验证的应用程序 ID。 在使用服务主体凭据进行身份验证时,需要此参数。
client-secret 用于对 GitHub 管道进行身份验证的客户端密码。 在使用服务主体凭据进行身份验证时,需要此参数。
tenant-id 使用 app-idclient-secret 进行身份验证时的租户 ID。

解决方案任务

这些任务根据解决方案执行操作,包括以下内容。

import-solution

将解决方案导入到目标环境。

参数 描述
environment-url (必需)要向其导入解决方案的目标环境的 URL(例如,https://YourOrg.crm.dynamics.com)。
user-name (必需)如果您使用用户名/密码身份验证,为用于连接的帐户的用户名。
password-secret (必需)如果您使用用户名/密码身份验证,为用于连接的帐户的密码。
solution-file (必需)要导入的解决方案文件的路径和名称。
app-id 用于进行身份验证的应用程序 ID。 在使用服务主体凭据进行身份验证时,需要此参数。
client-secret 用于对 GitHub 管道进行身份验证的客户端密码。 在使用服务主体凭据进行身份验证时,需要此参数。
tenant-id 使用 app-idclient-secret 进行身份验证时的租户 ID。

export-solution

从源环境中导出解决方案。

参数 描述
environment-url (必需)要从其导出解决方案的环境的 URL(例如,https://YourOrg.crm.dynamics.com)。
user-name (必需)如果您使用用户名/密码身份验证,为用于连接的帐户的用户名。
password-secret (必需)如果您使用的是用户名/密码身份验证,为 user-name 的密码。 GitHub 密码在设置密码下定义。 密码在定义并保存后不可检索。
app-id 用于进行身份验证的应用程序 ID。 在使用服务主体凭据进行身份验证时,需要此参数。
client-secret 用于对 GitHub 管道进行身份验证的客户端密码。 在使用服务主体凭据进行身份验证时,需要此参数。
tenant-id 使用 app-idclient-secret 进行身份验证时的租户 ID。
solution-name (必需)要导出解决方案的名称。 请始终使用解决方案的名称,而不是显示名称
solution-output-file (必需)要将源环境导出到的 solution.zip 文件的路径和名称。
managed (必需)设置为 true 将导出为托管解决方案;默认 (false) 导出为非托管解决方案。

unpack-solution

获取一个压缩的解决方案文件,然后将其分解为多个 XML 文件,以便源代码管理系统可以更轻松地读取和管理这些文件。

参数 描述
solution-file (必需)要解包的 solution.zip 文件的路径和文件名。
solution-folder (必需)要将解决方案解包到的路径和目标文件夹。
solution-type (必需)您要解包的解决方案的类型。 选项包括非托管(建议)、托管两者

pack-solution

将源代码控制中表示的解决方案打包到 solution.zip 文件中,该文件可以导入到另一个环境中。

参数 描述
solution-file (必需)将解决方案打包到的 solution.zip 文件的路径和文件名(例如,out/CI/ALMLab.zip)。
solution-folder (必需)要打包的解决方案的路径和源文件夹。
solution-type (可选)要打包的解决方案的类型。 选项包括非托管(建议)、托管两者

publish-solution

发布解决方案自定义项。

参数 描述
environment-url (必需)要向其发布解决方案的环境的 URL(例如,https://YourOrg.crm.dynamics.com)。
user-name (必需)如果您使用用户名/密码身份验证,为用于连接的帐户的用户名。
password-secret (必需)如果您使用用户名/密码身份验证,为用于连接的帐户的密码。
solution-file (必需)要导入的解决方案文件的路径和名称。
app-id 用于进行身份验证的应用程序 ID。 在使用服务主体凭据进行身份验证时,需要此参数。
client-secret 用于对 GitHub 管道进行身份验证的客户端密码。 在使用服务主体凭据进行身份验证时,需要此参数。
tenant-id 使用 app-idclient-secret 进行身份验证时的租户 ID。

clone-solution

克隆给定环境的解决方案。

参数 描述
environment-url (必需)要从其克隆解决方案的环境的 URL(例如,https://YourOrg.crm.dynamics.com)。
user-name (必需)如果您使用用户名/密码身份验证,为用于连接的帐户的用户名。
password-secret (必需)如果您使用用户名/密码身份验证,为用于连接的帐户的密码。
solution-file (必需)要导入的解决方案文件的路径和名称。
app-id 用于进行身份验证的应用程序 ID。 在使用服务主体凭据进行身份验证时,需要此参数。
client-secret 用于对 GitHub 管道进行身份验证的客户端密码。 在使用服务主体凭据进行身份验证时,需要此参数。
tenant-id 使用 app-idclient-secret 进行身份验证时的租户 ID。
solution-name (必需)需要克隆的 solution.zip 文件的路径和名称(例如,out/CI/ALMLab.zip)。
solution-version 要克隆的解决方案版本。
target-folder 用于放置提取的解决方案的目标文件夹。 (例如,Git 存储库\target-solution-folder)。
Working-directory 克隆解决方案所需的工作中项目的临时文件夹。
默认值:root of the repository

check-solution

检查解决方案文件以检测不一致。

参数 描述
environment-url (必需)要从其克隆解决方案的环境的 URL(例如,https://YourOrg.crm.dynamics.com)。
user-name (必需)如果您使用用户名/密码身份验证,为用于连接的帐户的用户名。
password-secret (必需)如果您使用用户名/密码身份验证,为用于连接的帐户的密码。
app-id 用于进行身份验证的应用程序 ID。 在使用服务主体凭据进行身份验证时,需要此参数。
client-secret 用于对 GitHub 管道进行身份验证的客户端密码。 在使用服务主体凭据进行身份验证时,需要此参数。
tenant-id 使用 app-idclient-secret 进行身份验证时的租户 ID。
path (必需)要检查的解决方案文件的路径和名称。
geo 要使用的 Microsoft Power Platform 检查器服务的地理位置。 默认值为“美国”。
rule-level-override 其中包含规则的 JSON 数组的文件的路径及其级别。 接受的值为:Critical、High、Low 和 Informational。 示例:[{"Id":"meta-remove-dup-reg","OverrideLevel":"Medium"},{"Id":"il-avoid-specialized-update-ops","OverrideLevel":"Medium"}]
checker-logs-artifact-name 将为其上载 Microsoft Power Platform 检查器日志的项目文件夹的名称。 默认值为“CheckSolutionLogs”。

upgrade-solution

提供升级解决方案功能。

参数 描述
environment-url (必需)要从其克隆解决方案的环境的 URL(例如,https://YourOrg.crm.dynamics.com)。
user-name (必需)如果您使用用户名/密码身份验证,为用于连接的帐户的用户名。
password-secret (必需)如果您使用用户名/密码身份验证,为用于连接的帐户的密码。
solution-file (必需)要导入的解决方案文件的路径和名称。
app-id 用于进行身份验证的应用程序 ID。 在使用服务主体凭据进行身份验证时,需要此参数。
client-secret 用于对 GitHub 管道进行身份验证的客户端密码。 在使用服务主体凭据进行身份验证时,需要此参数。
tenant-id 使用 app-idclient-secret 进行身份验证时的租户 ID。
solution-name (必需)要升级的解决方案的名称。
async 异步升级解决方案。
max-async-wait-time 异步等待的最大时间(以分钟为单位)。 默认值为 60 分钟。

打包任务

这些任务对包执行操作,其中包含以下内容。

deploy-package

提供通过包部署包 dll 或 zip 文件的功能。

备注

只有 Windows 上才支持此操作。

参数 说明
environment-url (必需)要从其克隆解决方案的环境的 URL(例如,https://YourOrg.crm.dynamics.com)。
user-name (必需)如果您使用用户名/密码身份验证,为用于连接的帐户的用户名。
password-secret (必需)如果您使用用户名/密码身份验证,为用于连接的帐户的密码。
app-id 用于进行身份验证的应用程序 ID。 在使用服务主体凭据进行身份验证时,需要此参数。
client-secret 用于对 GitHub 管道进行身份验证的客户端密码。 在使用服务主体凭据进行身份验证时,需要此参数。
tenant-id 使用 app-idclient-secret 进行身份验证时的租户 ID。
package (必需)包 dll 或具有包的 zip 文件的路径。

门户任务

这些任务对 Power Pages 执行以下操作。

upload-paportal

将数据上载到 Power Pages。

参数 说明
environment-url (必需)要向其导入解决方案的环境的 URL(例如,https://YourOrg.crm.dynamics.com)。
app-id 用于进行身份验证的应用程序 ID。 在使用服务主体凭据进行身份验证时,需要此参数。
client-secret 用于对 GitHub 管道进行身份验证的客户端密码。 在使用服务主体凭据进行身份验证时,需要此参数。
tenant-id 使用 app-idclient-secret 进行身份验证时的租户 ID。
upload-path 将存储网站内容的路径(别名:-p)。
deployment-profile 上载门户数据,其中包含通过 deployment-profiles/[profile-name].deployment.yaml 文件中的配置文件变量定义的环境详细信息。
模型版本 指示要上传的站点数据是使用标准 (1) 还是增强型数据模型 (2)。 默认值为 '1'。

了解有关 Power Pages 的 Microsoft Power Platform CLI 支持的更多信息。

目录任务(预览版)

这些任务根据 Power Platform 中的目录执行操作,并包括以下内容。

备注

当前,Power Platform 的目录任务为预览版本。

安装

将 catalog 项安装到目标环境。

参数 说明
catalog-item-id (必需)要安装在目标环境中的目录项。
target-url (必需)目录项安装到的目标环境 URL(例如 "https://YourOrg.crm.dynamics.com")。
设置 (必需)要执行的安装框架的运行时程序包设置。 字符串格式必须为 key=value|key=value
target-version 要安装的目标版本。 如果留空,则会选择已发布版本。
poll-status 轮询以检查请求的状态。

submit

列出当前 Dataverse 环境(组织)中所有已发布的目录项。

参数 说明
path (必需)目录提交文档的路径。
package-zip 要对 zip 文件打包的路径。
solution-zip 解决方案 zip 文件的路径。
poll-status 轮询以检查请求的状态。

状态

获取 catalog 安装/提交请求的状态。

参数 说明
tracking-id (必需)请求跟踪 ID。
类型 (必需)请求类型(值:安装、提交)

GitHub 工作流创作

若要了解有关使用 GitHub 操作编写 GitHub 工作流的详细信息,请完成适用于 Microsoft Power Platform 的 GitHub Actions 实验室

详细信息:关于 GitHub Actions

另请参阅

GitHub Actions 的 Microsoft Power Platform