@microsoft/m365agentstoolkit-cli
Version:
Microsoft 365 Agents Toolkit CLI
307 lines (302 loc) • 12.8 kB
YAML
# yaml-language-server: $schema=https://aka.ms/teams-toolkit/1.0.0/yaml.schema.json
# Visit https://aka.ms/teamsfx-v5.0-guide for details on this file
# Visit https://aka.ms/teamsfx-actions for details on actions
version: 1.0.0
projectId: {{projectId}}
environmentFolderPath: ./ {{~environmentFolder}}
# Triggered when 'teamsfx provision' is executed
provision:
{{#if activePlugins.fx-resource-aad-app-for-teams}}
# Creates a new Microsoft Entra app to authenticate users if
# the environment variable that stores clientId is empty
- uses: aadApp/create
with:
# Note: when you run aadApp/update, the Microsoft Entra app name will be updated
# based on the definition in manifest. If you don't want to change the
# name, make sure the name in Microsoft Entra manifest is the same with the name
# defined here.
name: {{aadAppName}}
# If the value is false, the action will not generate client secret for you
generateClientSecret: true
# Authenticate users with a Microsoft work or school account in your
# organization's Microsoft Entra tenant (for example, single tenant).
signInAudience: "AzureADMyOrg"
# Write the information of created resources into environment file for the
# specified environment variable(s).
writeToEnvironmentFile:
clientId: AAD_APP_CLIENT_ID
# Environment variable that starts with `SECRET_` will be stored to the
# .env.{envName}.user environment file
clientSecret: SECRET_AAD_APP_CLIENT_SECRET
objectId: AAD_APP_OBJECT_ID
tenantId: AAD_APP_TENANT_ID
authority: AAD_APP_OAUTH_AUTHORITY
authorityHost: AAD_APP_OAUTH_AUTHORITY_HOST
{{/if}}
# Creates a Teams app
- uses: teamsApp/create
with:
# Teams app name
name: {{teamsAppName}}
# Write the information of created resources into environment file for
# the specified environment variable(s).
writeToEnvironmentFile:
teamsAppId: TEAMS_APP_ID
{{#if activePlugins.fx-resource-bot}}
# Create or reuse an existing Microsoft Entra application for bot.
- uses: botAadApp/create
with:
# The Microsoft Entra application's display name
name: {{appName}}bt$\{{RESOURCE_SUFFIX}}
writeToEnvironmentFile:
# The Microsoft Entra application's client id created for bot.
botId: BOT_ID
# The Microsoft Entra application's client secret created for bot.
botPassword: SECRET_BOT_PASSWORD
{{/if}}
- uses: arm/deploy # Deploy given ARM templates parallelly.
with:
# AZURE_SUBSCRIPTION_ID is a built-in environment variable,
# if its value is empty, TeamsFx will prompt you to select a subscription.
# Referencing other environment variables with empty values
# will skip the subscription selection prompt.
subscriptionId: $\{{AZURE_SUBSCRIPTION_ID}}
# AZURE_RESOURCE_GROUP_NAME is a built-in environment variable,
# if its value is empty, TeamsFx will prompt you to select or create one
# resource group.
# Referencing other environment variables with empty values
# will skip the resource group selection prompt.
resourceGroupName: $\{{AZURE_RESOURCE_GROUP_NAME}}
templates:
- path: ./templates/azure/main.bicep # Relative path to this file
# Relative path to this yaml file.
# Placeholders will be replaced with corresponding environment
# variable before ARM deployment.
parameters: ./templates/azure/azure.parameters.$\{{TEAMSFX_ENV}}.json
# Required when deploying ARM template
deploymentName: teams_toolkit_deployment
# Microsoft 365 Agents Toolkit will download this Bicep CLI version from GitHub. If you remove this config, it will use the Bicep CLI in your system's PATH.
bicepCliVersion: v0.4.613
{{#if activePlugins.fx-resource-frontend-hosting}}
- uses: azureStorage/enableStaticWebsite
with:
storageResourceId: $\{{ {{~placeholderMappings.[state.fx-resource-frontend-hosting.storageResourceId]~}} }}
indexPage: index.html
errorPage: error.html
{{/if}}
{{#if activePlugins.fx-resource-aad-app-for-teams}}
# Apply the Microsoft Entra manifest to an existing Microsoft Entra app. Will use the object id in
# manifest file to determine which Microsoft Entra app to update.
- uses: aadApp/update
with:
# Relative path to this file. Environment variables in manifest will
# be replaced before apply to Microsoft Entra app
manifestPath: ./aad.manifest.json
outputFilePath : ./build/aad.manifest.$\{{TEAMSFX_ENV}}.json
{{/if}}
# Validate using manifest schema
- uses: teamsApp/validateManifest
with:
# Path to manifest template
manifestPath: ./appPackage/manifest.json
# Build Teams app package with latest env value
- uses: teamsApp/zipAppPackage
with:
# Path to manifest template
manifestPath: ./appPackage/manifest.json
outputZipPath: ./build/appPackage/appPackage.$\{{TEAMSFX_ENV}}.zip
outputJsonPath: ./build/appPackage/manifest.$\{{TEAMSFX_ENV}}.json
# Validate app package using validation rules
- uses: teamsApp/validateAppPackage
with:
# Relative path to this file. This is the path for built zip file.
appPackagePath: ./build/appPackage/appPackage.$\{{TEAMSFX_ENV}}.zip
# Apply the Teams app manifest to an existing Teams app in
# Teams Developer Portal.
# Will use the app id in manifest file to determine which Teams app to update.
- uses: teamsApp/update
with:
# Relative path to this file. This is the path for built zip file.
appPackagePath: ./build/appPackage/appPackage.$\{{TEAMSFX_ENV}}.zip
{{#if isM365}}
# Extend your Teams app to Outlook and the Microsoft 365 app
- uses: teamsApp/extendToM365
with:
# Relative path to the build app package.
appPackagePath: ./build/appPackage/appPackage.$\{{TEAMSFX_ENV}}.zip
# Write the information of created resources into environment file for
# the specified environment variable(s).
writeToEnvironmentFile:
titleId: M365_TITLE_ID
appId: M365_APP_ID
{{/if}}
# Triggered when 'teamsfx deploy' is executed
deploy:
{{#if activePlugins.fx-resource-frontend-hosting}}
# Run npm command
- uses: cli/runNpmCommand
name: install tab dependencies
with:
workingDirectory: tabs
args: install
# Run npm command
- uses: cli/runNpmCommand
name: build tab app
{{#if activePlugins.fx-resource-aad-app-for-teams}}
env:
REACT_APP_CLIENT_ID: $\{{AAD_APP_CLIENT_ID}}
REACT_APP_START_LOGIN_PAGE_URL: $\{{ {{~placeholderMappings.[state.fx-resource-frontend-hosting.endpoint]~}} }}/auth-start.html
{{#if activePlugins.fx-resource-function}}
REACT_APP_FUNC_ENDPOINT: $\{{ {{~placeholderMappings.[state.fx-resource-function.functionEndpoint]~}} }}
REACT_APP_FUNC_NAME: {{defaultFunctionName}}
{{/if}}
{{/if}}
with:
workingDirectory: tabs
args: run build --if-present
# Deploy bits to Azure Storage Static Website
- uses: azureStorage/deploy
with:
workingDirectory: tabs
# Deploy base folder. This folder includes manifest files for Microsoft Entra app and Teams app that should be ignored using the ignoreFile.
artifactFolder: build
# The resource id of the cloud resource to be deployed to.
# This key will be generated by arm/deploy action automatically.
# You can replace it with your existing Azure Resource id
# or add it to your environment variable file.
resourceId: $\{{ {{~placeholderMappings.[state.fx-resource-frontend-hosting.storageResourceId]~}} }}
{{/if}}
{{#if activePlugins.fx-resource-bot}}
{{#if isFunctionBot}}
- uses: cli/runNpmCommand
name: install bot dependencies
with:
workingDirectory: bot
args: install
{{#if isTypescript}}
- uses: cli/runNpmCommand
name: build bot app
with:
workingDirectory: bot
args: run build --if-present
{{/if}}
# Deploy your application to Azure Functions using the zip deploy feature.
# For additional details, see at https://aka.ms/zip-deploy-to-azure-functions
- uses: azureFunctions/zipDeploy
with:
workingDirectory: bot
# Deploy base folder
artifactFolder: .
# Ignore file location, leave blank will ignore nothing
ignoreFile: .funcignore
# The resource id of the cloud resource to be deployed to.
# This key will be generated by arm/deploy action automatically.
# You can replace it with your existing Azure Resource id
# or add it to your environment variable file.
resourceId: $\{{ {{~botResourceId~}} }}
{{else}}
# Run npm command
- uses: cli/runNpmCommand
name: install bot dependencies
with:
workingDirectory: bot
args: install
{{#if isTypescript}}
# Run npm command
- uses: cli/runNpmCommand
name: build bot app
with:
workingDirectory: bot
args: run build --if-present
{{/if}}
# Deploy your application to Azure App Service using the zip deploy feature.
# For additional details, refer to https://aka.ms/zip-deploy-to-app-services.
- uses: azureAppService/zipDeploy
with:
workingDirectory: bot
# Deploy base folder.
artifactFolder: .
# The resource id of the cloud resource to be deployed to.
# This key will be generated by arm/deploy action automatically.
# You can replace it with your existing Azure Resource id
# or add it to your environment variable file.
resourceId: $\{{ {{~botResourceId~}} }}
{{/if}}
{{/if}}
{{#if activePlugins.fx-resource-function}}
# Install development tool(s)
- uses: devTool/install
with:
dotnet: true
# Write the information of installed development tool(s) into environment
# file for the specified environment variable(s).
writeToEnvironmentFile:
dotnetPath: DOTNET_PATH
- uses: cli/runNpmCommand
name: install api dependencies
with:
workingDirectory: api
args: install
- uses: cli/runDotnetCommand
with:
workingDirectory: api
args: build extensions.csproj -o bin --ignore-failed-sources
execPath: $\{{ {{~dotnetPath~}} }} # Use dotnet installed by devTool/install action
{{#if isTypescript}}
- uses: cli/runNpmCommand
name: build api app
with:
workingDirectory: api
args: run build --if-present
{{/if}}
# Deploy your application to Azure Functions using the zip deploy feature.
# For additional details, see at https://aka.ms/zip-deploy-to-azure-functions
- uses: azureFunctions/zipDeploy
with:
workingDirectory: api
# Deploy base folder
artifactFolder: .
# Ignore file location, leave blank will ignore nothing
ignoreFile: .funcignore
# The resource id of the cloud resource to be deployed to.
# This key will be generated by arm/deploy action automatically.
# You can replace it with your existing Azure Resource id
# or add it to your environment variable file.
resourceId: $\{{ {{~placeholderMappings.[state.fx-resource-function.functionAppResourceId]~}} }}
{{/if}}
# Triggered when 'teamsfx publish' is executed
publish:
# Validate using manifest schema
- uses: teamsApp/validateManifest
with:
# Path to manifest template
manifestPath: ./appPackage/manifest.json
# Build Teams app package with latest env value
- uses: teamsApp/zipAppPackage
with:
# Path to manifest template
manifestPath: ./appPackage/manifest.json
outputZipPath: ./build/appPackage/appPackage.$\{{TEAMSFX_ENV}}.zip
outputJsonPath: ./build/appPackage/manifest.$\{{TEAMSFX_ENV}}.json
# Validate app package using validation rules
- uses: teamsApp/validateAppPackage
with:
# Relative path to this file. This is the path for built zip file.
appPackagePath: ./build/appPackage/appPackage.$\{{TEAMSFX_ENV}}.zip
# Apply the Teams app manifest to an existing Teams app in
# Teams Developer Portal.
# Will use the app id in manifest file to determine which Teams app to update.
- uses: teamsApp/update
with:
# Relative path to this file. This is the path for built zip file.
appPackagePath: ./build/appPackage/appPackage.$\{{TEAMSFX_ENV}}.zip
# Publish the app to
# Teams Admin Center (https://admin.teams.microsoft.com/policies/manage-apps)
# for review and approval
- uses: teamsApp/publishAppPackage
with:
appPackagePath: ./build/appPackage/appPackage.$\{{TEAMSFX_ENV}}.zip
# Write the information of created resources into environment file for
# the specified environment variable(s).
writeToEnvironmentFile:
publishedAppId: TEAMS_APP_PUBLISHED_APP_ID