设置 CI/CD 管道

TeamsFx 有助于在生成 Microsoft Teams 应用程序时自动执行开发工作流。 用于设置 CI/CD 管道的工具和模板是使用 GitHub、Azure DevOps、Jenkins 和其他平台创建工作流模板和自定义 CI/CD 工作流。 若要预配资源,可以创建 Azure 服务主体并使用预配管道,或使用 bicep 文件手动执行此操作。 若要发布 Teams 应用,可以使用“发布”管道,或通过利用 Teams 开发人员门户手动执行。

工具和模板

工具和模板 说明
TeamsFx-CLI-Action 与 TeamsFx CLI 集成的 GitHub 操作。
Microsoft Teams Toolkit for Visual Studio Code Microsoft Visual Studio Code扩展,可帮助你开发适用于 GitHub、Azure DevOps 和 Jenkins 的 Teams 应用和自动化工作流。
适用于 CLI 的 Microsoft Teams 工具包 命令行工具,可帮助你开发 Teams 应用以及适用于 GitHub、Azure DevOps 和 Jenkins 的自动化工作流。
github/ci.yml
github/cd.azure.yml
github/cd.spfx.yml
github/provision.azure.yml
github/provision.spfx.yml
github/publish.yml
GitHub 上的自动化模板。
azdo/ci.yml
azdo/cd.azure.yml
azdo/cd.spfx.yml
azdo/provision.azure.yml
azdo/provision.spfx.yml
azdo/publish.yml
Azure DevOps 上的自动化模板。
jenkins/Jenkinsfile.ci
jenkins/Jenkinsfile.azure.cd
jenkins/Jenkinsfile.spfx.cd
jenkins/Jenkinsfile.azure.provision
jenkins/Jenkinsfile.spfx.provision
jenkins/Jenkinsfile.publish
Jenkins 上的自动化模板。
others/ci.sh
others/cd.azure.sh
others/cd.spfx.sh
others/provision.azure.sh
others/provision.spfx.sh
others/publish.sh
用于 GitHub、Azure DevOps 或 Jenkins 外部自动化的脚本模板。

设置 CI/CD 管道

可以使用以下平台设置管道:

  1. 使用 GitHub 设置工作流
  2. 使用 Azure DevOps 设置管道
  3. 使用 Jenkins 设置管道
  4. 为其他平台设置管道

工作流模板类型

TeamsFx 支持四种类型的工作流模板:

  • CI:帮助签出代码、生成和运行测试。
  • CD:帮助签出代码、生成、测试和部署到云。
  • 预配:帮助在云和 Teams 应用注册中创建或更新资源。
  • 发布:帮助将 Teams 应用发布到租户。

准备凭据

CI/CD 工作流中涉及两类登录凭据:

  • Microsoft 365:运行基于预配、发布和 SPFx 的项目 CD 工作流需要 Microsoft 365 凭据。
  • Azure:运行 Azure 托管项目的预配和 CD 工作流需要 Azure 凭据。

注意

在运行预配工作流之前,需要在环境变量或 env/.env.* 文件中设置 Azure 订阅 ID。 使用的变量名称为 AZURE_SUBSCRIPTION_ID。 此外,不要忘记提交文件 env/.env.* 并将其推送到 Git 存储库或设置管道的环境变量,因为默认情况下,文件会 .gitignore 忽略这些文件。

名称 说明
AZURE_SERVICE_PRINCIPAL_NAME 用于预配资源的 Azure 的服务主体名称。
AZURE_SERVICE_PRINCIPAL_PASSWORD Azure 服务主体的密码。
AZURE_SUBSCRIPTION_ID 标识要在其中预配资源的订阅。
AZURE_TENANT_ID 标识订阅所在的租户。
M365_ACCOUNT_NAME 用于创建和发布 Teams 应用的 Microsoft 365 帐户。
M365_ACCOUNT_PASSWORD Microsoft 365 帐户的密码。
M365_TENANT_ID 标识在其中创建或发布 Teams 应用的租户。 此值是可选的,除非你有一个多租户帐户,并且你希望使用另一个租户。 详细了解如何查找 Microsoft 365 租户 ID。

注意

  • 目前,MICROSOFT 365 的非交互式身份验证样式在 CI/CD 工作流中使用,因此请确保 Microsoft 365 帐户在租户中具有足够的权限,并且未启用多重身份验证或其他高级安全功能。 请参阅 配置 Microsoft 365 凭据 ,确保已禁用工作流中使用的凭据的多重身份验证和安全默认值。
  • 目前,Azure 的服务主体在 CI/CD 工作流中使用,若要创建要使用的 Azure 服务主体,请参阅 此处

主机类型

模板在 Azure 或 SPFx (主机类型上有所不同,) 预配和 CD 工作流模板被拆分为副本。 CI、发布工作流模板与主机类型无关。 如果使用的是 Azure 托管项目,请下载具有修补程序文件名的 azure 模板。 如果你正在处理 SPFx 托管的项目,请下载这些模板,其中包含修补程序的 spfx 文件名。

使用 GitHub 设置工作流

使用 GitHub for CI/CD 设置管道:

  • 创建 CI/CD 工作流。
  • 自定义 CI/CD 工作流。

创建 CI/CD 工作流

  1. 从工具和模板下载相应的 模板文件。
  2. 根据需要重命名下载的模板文件。
  3. 将它们放在 下.github/workflows,这是GitHub Actions的指定文件夹。
  4. 提交这些模板文件并将其推送到远程存储库。
  5. 为工作流添加必要的 加密机密
  6. 触发工作流。 查看有关如何在 GitHub 上触发工作流 的更多详细信息

自定义 CI 工作流

若要自定义 CI 工作流,可以执行以下操作:

  1. 更改触发器:默认情况下,当针对 dev 分支创建新的拉取请求时,将触发 CI 工作流。
  2. 添加脚本以生成项目:默认情况下,将 Build the project 注释步骤。
  3. 添加脚本以运行单元测试:默认情况下,将 Run unit test 注释步骤。

自定义 CD 工作流

若要自定义 CD 工作流,可以执行以下操作:

  1. 更改触发器:默认情况下,当将新提交推送到 main 分支时,将触发 CD 工作流。
  2. 更改环境变量 TEAMSFX_ENV_NAME的值:默认情况下,值为 dev
  3. 更改环境变量 TEAMSFX_CLI_VERSION的值:默认情况下,值为 2.*
  4. 添加脚本以生成项目:默认情况下,将 Build the project 注释步骤。
  5. 添加脚本以运行单元测试:默认情况下,将 Run unit test 注释步骤。

自定义预配和发布工作流

若要自定义“预配和发布”工作流,可以执行以下操作:

  1. 更改触发器:默认情况下,手动触发工作流。
  2. 更改环境变量 TEAMSFX_ENV_NAME的值:默认情况下,值为 dev
  3. 更改环境变量 TEAMSFX_CLI_VERSION的值:默认情况下,值为 2.*

使用 Azure DevOps 设置管道

使用 Azure DevOps for CI/CD 设置管道:

  • 创建 CI/CD 管道。
  • 自定义 CI/CD 管道。

创建 CI/CD 管道

  1. 从工具和模板下载相应的 模板文件。
  2. 根据需要重命名下载的模板文件。
  3. 将它们放在 下 .azure/pipelines,这是 Azure Pipelines 的传统文件夹。
  4. 提交这些模板文件并将其推送到远程存储库。
  5. 按照创建第一个 Azure DevOps 管道创建相应的 Azure DevOps 管道
  6. 为管道添加必要的 Azure DevOps Pipeline 变量
  7. 自动、手动触发管道或自定义 (检查 yml 文件中的 trigger:pr: 部分以查找) 触发器。 有关 Azure DevOps 中的触发器的详细信息,请参阅 Azure 管道中的触发器

自定义 CI 管道

若要自定义 CI 管道,可以执行以下操作:

  1. 更改触发器:默认情况下,当针对 dev 分支创建新的拉取请求时,将触发 CI 管道。
  2. 添加脚本以生成项目:默认情况下,将 Build the project 注释步骤。
  3. 添加脚本以运行单元测试:默认情况下,将 Run unit test 注释步骤。

自定义 CD 管道

若要自定义 CD 管道,可以执行以下操作:

  1. 更改触发器:默认情况下,当新提交推送到 main 分支时,将触发 CD 管道。
  2. 更改环境变量 TEAMSFX_ENV_NAME的值:默认情况下,值为 dev
  3. 更改环境变量 TEAMSFX_CLI_VERSION的值:默认情况下,值为 2.*
  4. 添加脚本以生成项目:默认情况下,将 Build the project 注释步骤。
  5. 添加脚本以运行单元测试:默认情况下,将 Run unit test 注释步骤。

自定义预配和发布管道

若要自定义“预配和发布”管道,可以执行以下操作:

  1. 更改触发器:默认情况下,手动触发工作流。
  2. 更改环境变量 TEAMSFX_ENV_NAME的值:默认情况下,值为 dev
  3. 更改环境变量 TEAMSFX_CLI_VERSION的值:默认情况下,值为 2.*

使用 Jenkins 设置管道

使用 Jenkins for CI/CD 设置管道:

  • 创建 CI/CD 管道。
  • 自定义 CI/CD 管道。

创建 CI/CD 管道

  1. 从工具和模板下载相应的 模板文件。
  2. 根据需要重命名下载的模板文件。
  3. 将它们放在 下 .jenkins/pipelines,可以是 Jenkins Pipelines 的传统文件夹。

自定义 CI 管道

若要自定义 CI 管道,可以执行以下操作:

  1. 更改触发器:默认情况下,定期触发 CI 管道。
  2. 添加脚本以生成项目:默认情况下,将 Build the project 注释步骤。
  3. 添加脚本以运行单元测试:默认情况下,将 Run unit test 注释步骤。

自定义 CD 管道

若要自定义 CD 管道,可以执行以下操作:

  1. 更改触发器:默认情况下,定期触发 CD 管道。
  2. 更改环境变量 TEAMSFX_ENV_NAME的值:默认情况下,值为 dev
  3. 更改环境变量 TEAMSFX_CLI_VERSION的值:默认情况下,值为 2.*
  4. 添加脚本以生成项目:默认情况下,将 Build the project 注释步骤。
  5. 添加脚本以运行单元测试:默认情况下,将 Run unit test 注释步骤。

自定义预配和发布管道

若要自定义“预配和发布”管道,可以执行以下操作:

  1. 更改触发器:默认情况下,管道定期触发。
  2. 更改环境变量 TEAMSFX_ENV_NAME的值:默认情况下,值为 dev
  3. 更改环境变量 TEAMSFX_CLI_VERSION的值:默认情况下,值为 2.*

为其他平台设置管道

可以按照 工具和模板 中列出的预定义示例 bash 脚本在其他平台上生成和自定义 CI/CD 管道:

这些脚本基于跨平台 TeamsFx 命令行工具 TeamsFx-CLI。 可以使用 npm install -g @microsoft/teamsfx-cli 进行安装,并按照文档自定义脚本。

注意

  • 如果要启用在 CI 模式下运行的@microsoft/teamsfx-cli,请通过 export CI_ENABLED=true 打开 CI_ENABLED。 在 CI 模式下, @microsoft/teamsfx-cli 适用于 CI/CD。
  • 如果要在非交互模式下启用 @microsoft/teamsfx-cli,请使用命令设置全局配置: teamsfx config set -g interactive false 在非交互模式下, @microsoft/teamsfx-cli 不提示输入。

确保安全地在环境变量中设置 Azure 和 Microsoft 365 凭据。 例如,如果使用 GitHub 作为源代码存储库,请参阅 Github 密钥

如何创建要使用的 Azure 服务主体?

如果要在 CI/CD 中预配和部署面向 Azure 的资源,必须创建供使用的 Azure 服务主体。

执行以下步骤来创建 Azure 服务主体:

  1. 在单个租户中注册Microsoft Entra应用程序。
  2. 将角色分配给 Microsoft Entra 应用程序以访问 Azure 订阅。 建议使用 Contributor 角色。
  3. 创建新的Microsoft Entra应用程序机密。

提示

保存租户 ID、应用程序 ID (AZURE_SERVICE_PRINCIPAL_NAME) 和密钥 (AZURE_SERVICE_PRINCIPAL_PASSWORD) 供未来使用。

有关详细信息,请参阅 Azure 服务主体指南。 下面是创建服务主体的三种方法:

使用 Teams 开发人员门户发布 Teams 应用

如果有任何与 Teams 应用的清单文件相关的更改,可以更新清单并再次发布 Teams 应用。 若要手动发布 Teams 应用,可以使用 Teams 开发人员门户

执行以下步骤发布应用:

  1. 使用相应的帐户登录到适用于 Teams 的开发人员门户
  2. 在 zip 中导入应用包,选择“ 应用>导入应用>替换”。
  3. 在应用列表中选择目标应用。
  4. 若要发布应用,请选择“ 发布到>组织”。

另请参阅