Esdeveniment
Crear aplicacions i agents d'IA
17 de març, 21 - 21 de març, 10
Uneix-te a la sèrie de trobades per crear solucions d'IA escalables basades en casos d'ús del món real amb altres desenvolupadors i experts.
Registreu-vos-hi araAquest navegador ja no s’admet.
Feu l’actualització al Microsoft Edge per aprofitar les característiques més recents, les actualitzacions de seguretat i l’assistència tècnica.
Use Azure Pipelines para la implementación automática en Azure Functions. Azure Pipelines permite compilar, probar e implementar con integración continua (CI) y entrega continua (CD) mediante Azure DevOps.
Las canalizaciones de YAML se definen mediante un archivo YAML en el repositorio. Un paso es el bloque de creación más pequeño de una canalización y puede ser un script o una tarea (script empaquetado previamente). Obtenga información sobre los conceptos y componentes clave que forma una canalización.
Usará la tarea AzureFunctionApp
para realizar la implementación en Azure Functions. Ahora hay dos versiones de la tarea AzureFunctionApp (AzureFunctionApp@1, AzureFunctionApp@2).
AzureFunctionApp@2
incluye compatibilidad mejorada con la validación que hace que las canalizaciones tengan menos probabilidades de producir errores.
Elija la versión de la tarea en la parte superior del artículo. Las canalizaciones YAML no están disponibles para Azure DevOps 2019 y versiones anteriores.
Nota
Se recomienda encarecidamente AzureFunctionApp@2. La implementación en una aplicación en el plan de consumo flexible solo se admite en la versión 2.
Una organización de Azure DevOps. Si no tiene ninguna, puede crearla gratis. Si el equipo ya tiene una, asegúrese de que usted es el administrador del proyecto de Azure DevOps que desea usar.
Tener capacidad para ejecutar canalizaciones en agentes hospedados por Microsoft. Puede comprar un trabajo paralelo o solicitar un nivel gratuito.
Si planea usar GitHub en lugar de Azure Repos, también necesita un repositorio de GitHub. Si no tiene una cuenta de GitHub, puede crearla gratis.
Una aplicación de funciones existente en Azure que tiene su código fuente en un repositorio compatible. Si aún no tiene un proyecto de código de Azure Functions, puede crear uno completando el siguiente artículo específico del lenguaje:
Recuerde cargar el proyecto de código local en el repositorio de GitHub o de Azure Repos después de publicarlo en la aplicación de funciones.
Las siguientes canalizaciones específicas del lenguaje se pueden usar para compilar aplicaciones.
Puede utilizar el ejemplo siguiente con el fin de crear un archivo YAML para compilar la aplicación .NET.
Si ve errores al compilar la aplicación, compruebe que la versión de .NET que usa coincide con la versión de Azure Functions. Para más información, consulte Selección de un destino para versiones de runtime de Azure Functions.
pool:
vmImage: 'windows-latest'
steps:
- script: |
dotnet restore
dotnet build --configuration Release
- task: DotNetCoreCLI@2
inputs:
command: publish
arguments: '--configuration Release --output publish_output'
projects: '*.csproj'
publishWebProjects: false
modifyOutputPath: false
zipAfterPublish: false
- task: ArchiveFiles@2
displayName: "Archive files"
inputs:
rootFolderOrFile: "$(System.DefaultWorkingDirectory)/publish_output"
includeRootFolder: false
archiveFile: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip'
artifactName: 'drop'
Se implementará con la tarea de implementación de Azure Function App. Esta tarea requiere una conexión de servicio de Azure como entrada. Una conexión de servicio de Azure almacena las credenciales para conectarse de Azure Pipelines a Azure.
Para implementar en Azure Functions, agregue el siguiente fragmento de código al final del archivo azure-pipelines.yml
. El valor predeterminado de appType
es Windows. Puede especificar Linux estableciendo el valor de appType
en functionAppLinux
. La implementación en una aplicación Consumo flexible no es compatible con @v1 de la tarea AzureFunctionApp.
trigger:
- main
variables:
# Azure service connection established during pipeline creation
azureSubscription: <Name of your Azure subscription>
appName: <Name of the function app>
# Agent VM image name
vmImageName: 'ubuntu-latest'
- task: DownloadBuildArtifacts@1 # Add this at the end of your file
inputs:
buildType: 'current'
downloadType: 'single'
artifactName: 'drop'
itemPattern: '**/*.zip'
downloadPath: '$(System.ArtifactsDirectory)'
- task: AzureFunctionApp@1
inputs:
azureSubscription: <Azure service connection>
appType: functionAppLinux # default is functionApp
appName: $(appName)
package: $(System.ArtifactsDirectory)/**/*.zip
#Uncomment the next lines to deploy to a deployment slot
#Note that deployment slots is not supported for Linux Dynamic SKU
#deployToSlotOrASE: true
#resourceGroupName: '<Resource Group Name>'
#slotName: '<Slot name>'
En el fragmento de código se da por supuesto que los pasos de compilación del archivo YAML generan el archivo ZIP en la carpeta $(System.ArtifactsDirectory)
del agente.
Puede implementar automáticamente el código como una aplicación de funciones contenedorizada después de cada compilación correcta. Para más información sobre los contenedores, consulte Trabajar con contenedores y Azure Functions.
La manera más sencilla de implementar en un contenedor es usar la tarea de implementación de Azure Function App en el contenedor.
Para realizar la implementación, agregue el siguiente fragmento de código al final del archivo YAML:
trigger:
- main
variables:
# Container registry service connection established during pipeline creation
dockerRegistryServiceConnection: <Docker registry service connection>
imageRepository: <Name of your image repository>
containerRegistry: <Name of the Azure container registry>
dockerfilePath: '$(Build.SourcesDirectory)/Dockerfile'
tag: '$(Build.BuildId)'
# Agent VM image name
vmImageName: 'ubuntu-latest'
- task: AzureFunctionAppContainer@1 # Add this at the end of your file
inputs:
azureSubscription: '<Azure service connection>'
appName: '<Name of the function app>'
imageName: $(containerRegistry)/$(imageRepository):$(tag)
El fragmento de código inserta la imagen de Docker en Azure Container Registry. La tarea de implementación de Azure Function App en el contenedor extrae la imagen de Docker adecuada correspondiente al BuildId
del repositorio especificado y, a continuación, implementa la imagen.
Para ver un ejemplo completo de canalización de un extremo a otro, incluida la compilación del contenedor y la publicación en el registro de contenedor, consulte este ejemplo de implementación de contenedores de Azure Pipelines.
Puede configurar la aplicación de funciones para que tenga varias ranuras. Las ranuras permiten implementar la aplicación de forma segura y probarla antes de ponerla a disposición de los clientes.
El siguiente fragmento de código YAML muestra cómo implementar en un espacio de ensayo y, a continuación, cambiar a un espacio de producción:
- task: AzureFunctionApp@1
inputs:
azureSubscription: <Azure service connection>
appType: functionAppLinux
appName: <Name of the Function app>
package: $(System.ArtifactsDirectory)/**/*.zip
deployToSlotOrASE: true
resourceGroupName: <Name of the resource group>
slotName: staging
- task: AzureAppServiceManage@0
inputs:
azureSubscription: <Azure service connection>
WebAppName: <name of the Function app>
ResourceGroupName: <name of resource group>
SourceSlot: staging
SwapWithProduction: true
Para crear una canalización de compilación en Azure, use el comando az functionapp devops-pipeline create
. La canalización de compilación se crea para compilar y liberar los cambios de código que se realicen en el repositorio. El comando generará un nuevo archivo YAML que define la canalización de versión y compilación y lo confirma en el repositorio. Los requisitos previos para este comando dependen de la ubicación del código.
Si el código está en GitHub:
Debe contar con permisos de escritura en su suscripción.
Debe ser el administrador del proyecto en Azure DevOps.
Debe tener permisos para crear un token de acceso personal (PAT) en GitHub que tenga permisos suficientes. Para obtener más información, consulte Requisitos de permiso de token de acceso personal en GitHub.
Debe tener permisos para confirmar en la rama principal del repositorio de GitHub con el fin de confirmar el archivo YAML generado automáticamente.
Si el código está en Azure Repos:
Debe contar con permisos de escritura en su suscripción.
Debe ser el administrador del proyecto en Azure DevOps.
Las siguientes canalizaciones específicas del lenguaje se pueden usar para compilar aplicaciones.
Puede utilizar el ejemplo siguiente con el fin de crear el archivo YAML para compilar la aplicación de .NET:
pool:
vmImage: 'windows-latest'
steps:
- script: |
dotnet restore
dotnet build --configuration Release
- task: DotNetCoreCLI@2
inputs:
command: publish
arguments: '--configuration Release --output publish_output'
projects: '*.csproj'
publishWebProjects: false
modifyOutputPath: false
zipAfterPublish: false
- task: ArchiveFiles@2
displayName: "Archive files"
inputs:
rootFolderOrFile: "$(System.DefaultWorkingDirectory)/publish_output"
includeRootFolder: false
archiveFile: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip'
artifactName: 'drop'
Se implementará con la tarea de Implementación de Azure Function App v2. Esta tarea requiere una conexión de servicio de Azure como entrada. Una conexión de servicio de Azure almacena las credenciales para conectarse de Azure Pipelines a Azure. Debe crear una conexión que use la federación de identidades de carga de trabajo.
La versión v2 de la tarea incluye compatibilidad con pilas de aplicaciones más recientes para .NET, Python y Node. La tarea incluye comprobaciones previas a la implementación de redes. Cuando hay problemas de implementación previa, la implementación se detiene.
Para implementar en Azure Functions, agregue el siguiente fragmento de código al final del archivo azure-pipelines.yml
. El valor predeterminado de appType
es Windows. Puede especificar Linux estableciendo el valor de appType
en functionAppLinux
. La implementación en una aplicación de Consumo flexible requiere que configure ambas appType: functionAppLinux
y isFlexConsumption: true
.
trigger:
- main
variables:
# Azure service connection established during pipeline creation
azureSubscription: <SUBSCRIPTION_NAME>
appName: <APP_NAME>
# Agent VM image name
vmImageName: 'ubuntu-latest'
- task: AzureFunctionApp@2 # Add this at the end of your file
inputs:
azureSubscription: <AZURE_SERVICE_CONNECTION>
appType: functionAppLinux # This specifies a Linux-based function app
#isFlexConsumption: true # Uncomment this line if you are deploying to a Flex Consumption app
appName: $(appName)
package: $(System.ArtifactsDirectory)/**/*.zip
deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required. Deployment method. Default: auto.
#Uncomment the next lines to deploy to a deployment slot
#Note that deployment slots is not supported for Linux Dynamic SKU
#deployToSlotOrASE: true
#resourceGroupName: '<RESOURCE_GROUP>'
#slotName: '<SLOT_NAME>'
En el fragmento de código se da por supuesto que los pasos de compilación del archivo YAML generan el archivo ZIP en la carpeta $(System.ArtifactsDirectory)
del agente.
Si ha optado por implementar en una ranura de implementación, puede agregar el siguiente paso para realizar un intercambio de ranuras. Las ranuras de implementación aún no están disponibles para la SKU de Consumo flexible.
- task: AzureAppServiceManage@0
inputs:
azureSubscription: <AZURE_SERVICE_CONNECTION>
WebAppName: <APP_NAME>
ResourceGroupName: <RESOURCE_GROUP>
SourceSlot: <SLOT_NAME>
SwapWithProduction: true
Puede implementar automáticamente el código en Azure Functions como un contenedor personalizado después de cada compilación correcta. Para más información sobre los contenedores, consulte Trabajar con contenedores y Azure Functions.
La manera más sencilla de implementar en un contenedor es usar la tarea de implementación de Azure Function App en el contenedor.
Para realizar la implementación, agregue el siguiente fragmento de código al final del archivo YAML:
trigger:
- main
variables:
# Container registry service connection established during pipeline creation
dockerRegistryServiceConnection: <DOCKER_REGISTRY_SERVICE_CONNECTION>
imageRepository: <IMAGE_REPOSITORY_NAME>
containerRegistry: <AZURE_CONTAINER_REGISTRY_NAME>
dockerfilePath: '$(Build.SourcesDirectory)/Dockerfile'
tag: '$(Build.BuildId)'
# Agent VM image name
vmImageName: 'ubuntu-latest'
- task: AzureFunctionAppContainer@1 # Add this at the end of your file
inputs:
azureSubscription: '<AZURE_SERVICE_CONNECTION>'
appName: '<APP_NAME>'
imageName: $(containerRegistry)/$(imageRepository):$(tag)
El fragmento de código inserta la imagen de Docker en Azure Container Registry. La tarea de implementación de Azure Function App en el contenedor extrae la imagen de Docker adecuada correspondiente al BuildId
del repositorio especificado y, a continuación, implementa la imagen.
Para crear una canalización de compilación en Azure, use el comando az functionapp devops-pipeline create
. La canalización de compilación se crea para compilar y liberar los cambios de código que se realicen en el repositorio. El comando generará un nuevo archivo YAML que define la canalización de versión y compilación y lo confirma en el repositorio. Los requisitos previos para este comando dependen de la ubicación del código.
Si el código está en GitHub:
Debe contar con permisos de escritura en su suscripción.
Debe ser el administrador del proyecto en Azure DevOps.
Debe tener permisos para crear un token de acceso personal (PAT) en GitHub que tenga permisos suficientes. Para obtener más información, consulte Requisitos de permiso de token de acceso personal en GitHub.
Debe tener permisos para confirmar en la rama principal del repositorio de GitHub con el fin de confirmar el archivo YAML generado automáticamente.
Si el código está en Azure Repos:
Debe contar con permisos de escritura en su suscripción.
Debe ser el administrador del proyecto en Azure DevOps.
Esdeveniment
Crear aplicacions i agents d'IA
17 de març, 21 - 21 de març, 10
Uneix-te a la sèrie de trobades per crear solucions d'IA escalables basades en casos d'ús del món real amb altres desenvolupadors i experts.
Registreu-vos-hi araFormació
Mòdul
Automatización de implementaciones de contenedores de Docker con Azure Pipelines - Training
Use Azure Pipelines para implementar contenedores de Docker en Azure App Service.
Certificació
Microsoft Certified: Azure Developer Associate - Certifications
Cree soluciones de un extremo a otro en Microsoft Azure para crear Azure Functions, implementar y administrar aplicaciones web, desarrollar soluciones que usen Azure Storage, etc.