设置 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 管道
可以使用以下平台设置管道:
工作流模板类型
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 工作流
- 从工具和模板下载相应的 模板文件。
- 根据需要重命名下载的模板文件。
- 将它们放在 下
.github/workflows
,这是GitHub Actions的指定文件夹。 - 提交这些模板文件并将其推送到远程存储库。
- 为工作流添加必要的 加密机密 。
- 触发工作流。 查看有关如何在 GitHub 上触发工作流 的更多详细信息 。
自定义 CI 工作流
若要自定义 CI 工作流,可以执行以下操作:
- 更改触发器:默认情况下,当针对
dev
分支创建新的拉取请求时,将触发 CI 工作流。 - 添加脚本以生成项目:默认情况下,将
Build the project
注释步骤。 - 添加脚本以运行单元测试:默认情况下,将
Run unit test
注释步骤。
自定义 CD 工作流
若要自定义 CD 工作流,可以执行以下操作:
- 更改触发器:默认情况下,当将新提交推送到
main
分支时,将触发 CD 工作流。 - 更改环境变量
TEAMSFX_ENV_NAME
的值:默认情况下,值为dev
。 - 更改环境变量
TEAMSFX_CLI_VERSION
的值:默认情况下,值为2.*
。 - 添加脚本以生成项目:默认情况下,将
Build the project
注释步骤。 - 添加脚本以运行单元测试:默认情况下,将
Run unit test
注释步骤。
自定义预配和发布工作流
若要自定义“预配和发布”工作流,可以执行以下操作:
- 更改触发器:默认情况下,手动触发工作流。
- 更改环境变量
TEAMSFX_ENV_NAME
的值:默认情况下,值为dev
。 - 更改环境变量
TEAMSFX_CLI_VERSION
的值:默认情况下,值为2.*
。
使用 Azure DevOps 设置管道
使用 Azure DevOps for CI/CD 设置管道:
- 创建 CI/CD 管道。
- 自定义 CI/CD 管道。
创建 CI/CD 管道
- 从工具和模板下载相应的 模板文件。
- 根据需要重命名下载的模板文件。
- 将它们放在 下
.azure/pipelines
,这是 Azure Pipelines 的传统文件夹。 - 提交这些模板文件并将其推送到远程存储库。
- 按照创建第一个 Azure DevOps 管道创建相应的 Azure DevOps 管道。
- 为管道添加必要的 Azure DevOps Pipeline 变量 。
- 自动、手动触发管道或自定义 (检查 yml 文件中的
trigger:
或pr:
部分以查找) 触发器。 有关 Azure DevOps 中的触发器的详细信息,请参阅 Azure 管道中的触发器。
自定义 CI 管道
若要自定义 CI 管道,可以执行以下操作:
- 更改触发器:默认情况下,当针对
dev
分支创建新的拉取请求时,将触发 CI 管道。 - 添加脚本以生成项目:默认情况下,将
Build the project
注释步骤。 - 添加脚本以运行单元测试:默认情况下,将
Run unit test
注释步骤。
自定义 CD 管道
若要自定义 CD 管道,可以执行以下操作:
- 更改触发器:默认情况下,当新提交推送到
main
分支时,将触发 CD 管道。 - 更改环境变量
TEAMSFX_ENV_NAME
的值:默认情况下,值为dev
。 - 更改环境变量
TEAMSFX_CLI_VERSION
的值:默认情况下,值为2.*
。 - 添加脚本以生成项目:默认情况下,将
Build the project
注释步骤。 - 添加脚本以运行单元测试:默认情况下,将
Run unit test
注释步骤。
自定义预配和发布管道
若要自定义“预配和发布”管道,可以执行以下操作:
- 更改触发器:默认情况下,手动触发工作流。
- 更改环境变量
TEAMSFX_ENV_NAME
的值:默认情况下,值为dev
。 - 更改环境变量
TEAMSFX_CLI_VERSION
的值:默认情况下,值为2.*
。
使用 Jenkins 设置管道
使用 Jenkins for CI/CD 设置管道:
- 创建 CI/CD 管道。
- 自定义 CI/CD 管道。
创建 CI/CD 管道
- 从工具和模板下载相应的 模板文件。
- 根据需要重命名下载的模板文件。
- 将它们放在 下
.jenkins/pipelines
,可以是 Jenkins Pipelines 的传统文件夹。
自定义 CI 管道
若要自定义 CI 管道,可以执行以下操作:
- 更改触发器:默认情况下,定期触发 CI 管道。
- 添加脚本以生成项目:默认情况下,将
Build the project
注释步骤。 - 添加脚本以运行单元测试:默认情况下,将
Run unit test
注释步骤。
自定义 CD 管道
若要自定义 CD 管道,可以执行以下操作:
- 更改触发器:默认情况下,定期触发 CD 管道。
- 更改环境变量
TEAMSFX_ENV_NAME
的值:默认情况下,值为dev
。 - 更改环境变量
TEAMSFX_CLI_VERSION
的值:默认情况下,值为2.*
。 - 添加脚本以生成项目:默认情况下,将
Build the project
注释步骤。 - 添加脚本以运行单元测试:默认情况下,将
Run unit test
注释步骤。
自定义预配和发布管道
若要自定义“预配和发布”管道,可以执行以下操作:
- 更改触发器:默认情况下,管道定期触发。
- 更改环境变量
TEAMSFX_ENV_NAME
的值:默认情况下,值为dev
。 - 更改环境变量
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 服务主体:
- 在单个租户中注册Microsoft Entra应用程序。
- 将角色分配给 Microsoft Entra 应用程序以访问 Azure 订阅。 建议使用
Contributor
角色。 - 创建新的Microsoft Entra应用程序机密。
提示
保存租户 ID、应用程序 ID (AZURE_SERVICE_PRINCIPAL_NAME) 和密钥 (AZURE_SERVICE_PRINCIPAL_PASSWORD) 供未来使用。
有关详细信息,请参阅 Azure 服务主体指南。 下面是创建服务主体的三种方法:
使用 Teams 开发人员门户发布 Teams 应用
如果有任何与 Teams 应用的清单文件相关的更改,可以更新清单并再次发布 Teams 应用。 若要手动发布 Teams 应用,可以使用 Teams 开发人员门户。
执行以下步骤发布应用:
- 使用相应的帐户登录到适用于 Teams 的开发人员门户。
- 在 zip 中导入应用包,选择“ 应用>导入应用>替换”。
- 在应用列表中选择目标应用。
- 若要发布应用,请选择“ 发布到>组织”。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈