使用 Microsoft Visual Studio Code 将 Microsoft Teams 应用部署到云
Microsoft Teams 工具包有助于将应用中的前端和后端代码部署或上传到 Azure 中预配的云资源。
可以部署到以下类型的云资源:
- Azure 应用服务
- Azure Functions
- Azure 存储 (为静态网站)
- SharePoint
注意
在将应用代码部署到 Azure 云之前,需要成功完成 云资源的预配。
使用 Teams 工具包部署 Teams 应用
入门指南有助于使用 Teams 工具包进行部署。 可以使用以下命令部署 Teams 应用:
登录到 Azure 帐户
使用此帐户访问Microsoft Azure 门户,并预配新的云资源以支持应用。 在将应用部署到 Azure 应用服务、Azure Functions 或 Azure 存储之前,必须登录到 Azure 帐户。
打开 Visual Studio Code。
打开在其中创建应用的项目文件夹。
选择边栏中的“Teams 工具包”图标。
选择“ 登录到 Azure”。
提示
如果已安装 Azure 帐户扩展并使用相同的帐户,则可以跳过此步骤。 使用与其他扩展中使用的帐户相同的帐户。
此时会打开默认 Web 浏览器,以便登录帐户。
使用凭据登录到 Azure 帐户。
出现提示时关闭浏览器并返回到 Visual Studio Code。
边栏的“帐户”部分分别显示这两个帐户。 它还列出了可用的 Azure 订阅数。 确保至少有一个可用的 Azure 订阅可用。 如果没有,请注销并使用其他帐户。
现在可以将应用部署到 Azure 了!
恭喜,你已创建 Teams 应用! 现在,让我们继续了解如何使用 Teams 工具包将其中一个应用部署到 Azure。
部署到 Azure
从左窗格中的“生命周期”部分选择“部署”。
选择环境。 (如果只有一个环境,则跳过此步骤。)
选择“部署”。
选择边栏中的“Teams 工具包”图标。
在 Teams 中自定义部署生命周期
若要自定义部署过程,可以在“teamsapp.yml”中编辑部署部分。
cli/runNpmCommand
此操作使用参数在指定目录下执行 npm 命令。
示例
- uses: cli/runNpmCommand
with:
workingDirectory: ./src
args: install
参数
参数 | 说明 | 必需 | 默认值 |
---|---|---|---|
workingDirectory | 表示要在其中运行命令的文件夹。 如果输入值是相对路径,则该值相对于 workingDirectory。 | 否 | 项目根 |
args | 命令参数 | 是 |
cli/runDotnetCommand
此操作使用参数在指定目录下执行 dotnet 命令。
示例
- uses: cli/runDotnetCommand
with:
workingDirectory: ./src
execPath: /YOU_DOTNET_INSTALL_PATH
args: publish --configuration Release --runtime win-x86 --self-contained
参数
参数 | 说明 | 必需 | 默认值 |
---|---|---|---|
workingDirectory | 表示要在其中运行命令的文件夹。 如果输入值是相对路径,则该值相对于 workingDirectory。 | 否 | 项目根 |
args | npm 命令参数 | 是 | |
execPath | 执行程序路径 | 否 | 系统路径 |
cli/runNpxCommand
示例
- uses: cli/runNpxCommand
with:
workingDirectory: ./src
args: gulp package-solution --ship --no-color
参数
参数 | 说明 | 必需 | 默认值 |
---|---|---|---|
workingDirectory | 表示要在其中运行命令的文件夹。 如果输入值是相对路径,则该值相对于 workingDirectory。 | 否 | 项目根 |
args | 命令参数 | 是 |
azureAppService/zipDeploy
示例
- uses: azureAppService/zipDeploy
with:
workingDirectory: ./src
artifactFolder: .
ignoreFile: ./.webappignore
resourceId: ${{BOT_AZURE_APP_SERVICE_RESOURCE_ID}}
dryRun: false
outputZipFile: ./.deployment/deployment.zip
参数
参数 | 说明 | 必需 | 默认值 |
---|---|---|---|
workingDirectory | 表示要在其中上传项目的文件夹。 如果输入值是相对路径,则该值相对于项目根目录。 | 否 | 项目根 |
artifactFolder | 表示要在其中上传项目的文件夹。 如果输入值是相对路径,则该值相对于 workingDirectory。 | 是 | |
ignoreFile | 指定上传期间使用的 ignoreFile 的文件路径。 此文件可用于从 artifactFolder 中排除某些文件或文件夹。 其语法类似于 Git 的忽略。 | 否 | 空 |
resourceId | 指示 Azure 应用服务的资源 ID。 它在运行预配命令后自动生成。 如果已有 Azure 应用服务,则可以找到其 资源 ID | 是 | |
dryRun | 如果只想测试上传的准备,但不打算部署它,则可以将 dryRun 参数设置为 true。 这有助于验证打包 zip 文件是否正确。 | 否 | false |
outputZipFile | 指示打包的项目文件夹的 zip 文件的路径。 它相对于 workingDirectory。 此文件在部署期间重新构造,反映 artifactFolder 中的所有文件夹和文件,并删除所有不存在的文件或文件夹。 | 否 | ./.deployment/deployment.zip |
azureFunctions/zipDeploy
此操作使用 zip 部署功能上传项目并将其部署到 Azure Functions。
示例
- uses: azureFunctions/zipDeploy
with:
workingDirectory: ./src
artifactFolder: .
ignoreFile: ./.webappignore
resourceId: ${{BOT_AZURE_APP_SERVICE_RESOURCE_ID}}
dryRun: false
outputZipFile: ./.deployment/deployment.zip
参数
参数 | 说明 | 必需 | 默认值 |
---|---|---|---|
workingDirectory | 表示要在其中上传项目的文件夹。 如果输入值是相对路径,则该值相对于项目根目录。 | 否 | 项目根 |
artifactFolder | 表示要在其中上传项目的文件夹。 如果输入值是相对路径,则该值相对于 workingDirectory。 | 是 | |
ignoreFile | 指定上传期间使用的 ignoreFile 的文件路径。 此文件可用于从 artifactFolder 中排除某些文件或文件夹。 其语法类似于 Git 的忽略。 | 否 | 空 |
resourceId | 指示 Azure Functions 的资源 ID。 它在运行预配命令后自动生成。 如果已有 Azure Functions,可以在 Azure 门户中找到其 资源 ID 。 | 是 | |
dryRun | 如果只想测试上传的准备,但不打算部署它,则可以将 dryRun 参数设置为 true。 这有助于验证打包 zip 文件是否正确。 | 否 | false |
outputZipFile | 指示打包的项目文件夹的 zip 文件的路径。 它相对于 workingDirectory。 此文件在部署期间重新构造,反映 artifactFolder 中的所有文件夹和文件,并删除所有不存在的文件或文件夹。 | 否 | ./.deployment/deployment.zip |
azureStorage/deploy
此操作会将项目上传并部署到 Azure 存储。
示例
- uses: azureStorage/deploy
with:
workingDirectory: ./src
artifactFolder: .
ignoreFile: ./.webappignore
resourceId: ${{BOT_AZURE_APP_SERVICE_RESOURCE_ID}}
参数
参数 | 说明 | 必需 | 默认值 |
---|---|---|---|
workingDirectory | 表示要在其中上传项目的文件夹。 如果输入值是相对路径,则该值相对于项目根目录。 | 否 | 项目根 |
artifactFolder | 表示要在其中上传项目的文件夹。 如果输入值是相对路径,则该值相对于 workingDirectory。 | 是 | |
ignoreFile | 指定上传期间使用的 ignoreFile 的文件路径。 此文件可用于从 artifactFolder 中排除某些文件或文件夹。 其语法类似于 Git 的忽略。 | 否 | 空 |
resourceId | 指示 Azure Functions 的资源 ID。 它在运行预配命令后自动生成。 如果已有 Azure Functions,可以在 Azure 门户中找到其 资源 ID 。 | 是 |
azureStorage/deploy
此操作会将项目上传并部署到 Azure 存储。
示例
- uses: azureStorage/deploy
with:
workingDirectory: ./src
artifactFolder: .
ignoreFile: ./.webappignore
resourceId: ${{BOT_AZURE_APP_SERVICE_RESOURCE_ID}}
参数
参数 | 说明 | 必需 | 默认值 |
---|---|---|---|
workingDirectory | 表示要在其中上传项目的文件夹。 如果输入值是相对路径,则该值相对于项目根目录。 | 否 | 项目根 |
artifactFolder | 表示要在其中上传项目的文件夹。 如果输入值是相对路径,则该值相对于 workingDirectory。 | 是 | |
ignoreFile | 指定上传期间使用的 ignoreFile 的文件路径。 此文件可用于从 artifactFolder 中排除某些文件或文件夹。 其语法类似于 Git 的忽略。 | 否 | 空 |
resourceId | 指示 Azure Functions 的资源 ID。 它在运行预配命令后自动生成。 如果已有 Azure Functions,可以在 Azure 门户中找到其 资源 ID 。 | 是 |
spfx/deploy
此操作上传生成的 sppkg 并将其部署到 SharePoint 应用程序目录。 如果当前 M365 租户中没有租户目录,可以手动创建租户应用目录,或者通过将 createAppCatalogIfNotExist 设置为 true 来创建租户应用目录。
示例
- uses: spfx/deploy
with:
createAppCatalogIfNotExist: false
packageSolutionPath: ./src/config/package-solution.json
参数
参数 | 说明 | 必需 | 默认值 |
---|---|---|---|
createAppCatalogIfNotExist | 如果值为 true,则此操作将首先创建租户应用目录(如果不存在)。 | 否 | False |
packageSolutionPath | SPFx 项目中package-solution.json的路径。 此操作遵循获取目标 sppkg 的配置。 | 是 |