BicepDeploy@0 - Bicep Tarea de desplegar v0

La tarea Bicep Desplegue se utiliza para desplegar y gestionar recursos Azure usando archivos Bicep. Bicep es un lenguaje específico de dominio (DSL) que utiliza sintaxis declarativa para desplegar recursos de Azure. Esta tarea soporta tanto despliegues de Azure estándar como pilas de despliegue Azure, proporcionando una forma simplificada y más fácil de mantener de gestionar tu infraestructura Azure como código.

La tarea se encarga:

  • Creación o actualización de recursos de Azure usando plantillas de Bicep
  • Validación de plantillas de Bicep antes del despliegue
  • Cambios de vista previa con operaciones What-If
  • Gestión de pilas de despliegue con políticas de ciclo de vida
  • Eliminación de despliegues y pilas de despliegue
  • Instalación y gestión automática de las versiones de Bicep CLI

La tarea apoya:

  • Native Bicep Support: Despliegue directo desde archivos .bicep y .bicepparam sin necesidad de precompilación a plantillas ARM
  • : Soporte completo para pilas de despliegue Azure con configuraciones de denegación, políticas de recursos no gestionados y gestión del ciclo de vida
  • Automatic Bicep CLI Management: Descarga y almacena en caché automáticamente la versión especificada de Bicep CLI
  • Cross-Platform: Funciona con agentes de Windows, Linux y macOS
  • Múltiples ámbitos de despliegue: Soporta ámbitos de Grupo de Recursos, Suscripciones, Grupo de Gestión y Tenant
  • What-If Operaciones: Previsualiza los cambios antes de aplicarlos a tu entorno Azure
  • Entrada de parámetros flexible: Soporte para parámetros YAML/JSON en línea y archivos de parámetros tradicionales
  • Enmascaramiento de salida: Enmascarar automáticamente salidas sensibles como secretos y cadenas de conexión

Sintaxis

# Bicep Deploy v0
# Deploy and Manage Azure Resources using Bicep Files.
- task: BicepDeploy@0
  inputs:
  # Azure Details
    type: 'deployment' # 'deployment' | 'deploymentStack'. Required. Execution type. Default: deployment.
    #operation: 'create' # 'create' | 'validate' | 'whatIf' | 'delete'. Required when type = deployment || (type = deploymentStack && operation != whatIf). Operation. Default: create.
    scope: 'resourceGroup' # 'resourceGroup' | 'subscription' | 'managementGroup' | 'tenant'. Required. Deployment scope. Default: resourceGroup.
    #name: # string. Deployment name. 
    azureResourceManagerConnection: # string. Alias: ConnectedServiceName. Required. Azure Resource Manager connection. 
    #subscriptionId: # string. Required when scope != tenant && scope != managementGroup. Subscription. 
    resourceGroupName: # string. Required when scope = resourceGroup. Resource group. 
    #location: # string. Optional. Use when scope != resourceGroup. Location. 
    #tenantId: # string. Required when scope = tenant. Tenant ID. 
    #managementGroupId: # string. Required when scope = managementGroup. Management group ID. 
  # Template
    #templateFile: # string. Template file. 
    #parametersFile: # string. Parameters file. 
    #parameters: # string. Override parameters. 
  # Deployment Stack Options
    #actionOnUnmanageResources: 'detach' # 'delete' | 'detach'. Required when type = deploymentStack. Action on unmanaged resources. Default: detach.
    #actionOnUnmanageResourceGroups: # 'delete' | 'detach'. Optional. Use when type = deploymentStack. Action on unmanaged resource groups. 
    #actionOnUnmanageManagementGroups: # 'delete' | 'detach'. Optional. Use when type = deploymentStack. Action on unmanaged management groups. 
    #denySettingsMode: 'none' # 'none' | 'denyDelete' | 'denyWriteAndDelete'. Required when type = deploymentStack. Deny settings mode. Default: none.
    #denySettingsExcludedActions: # string. Optional. Use when type = deploymentStack && denySettingsMode != none. Deny settings excluded actions. 
    #denySettingsExcludedPrincipals: # string. Optional. Use when type = deploymentStack && denySettingsMode != none. Deny settings excluded principals. 
    #denySettingsApplyToChildScopes: false # boolean. Optional. Use when type = deploymentStack && denySettingsMode != none. Apply deny settings to child scopes. Default: false.
    #bypassStackOutOfSyncError: false # boolean. Optional. Use when type = deploymentStack. Bypass stack out of sync error. Default: false.
  # Advanced
    #description: # string. Description. 
    #tags: # string. Optional. Use when type = deploymentStack. Tags. 
    #bicepVersion: # string. Bicep version. 
    #maskedOutputs: # string. Masked outputs. 
    #environment: 'azureCloud' # 'azureCloud' | 'azureChinaCloud' | 'azureGermanCloud' | 'azureUSGovernment'. Azure environment. Default: azureCloud.
    #whatIfExcludeChangeTypes: # string. Optional. Use when operation = whatIf. What-If exclude change types. 
    #validationLevel: # 'provider' | 'template' | 'providerNoRbac'. Optional. Use when type = deployment && (operation = validate || operation = whatIf). Validation level.

Entradas

type - Tipo de ejecución
string. Obligatorio. Valores permitidos: deployment, deploymentStack (Pila de Despliegue). Valor predeterminado: deployment.

Especifica el tipo de ejecución: deployment o deploymentStack.


operation - Funcionamiento
string. Se requiere cuando type = deployment || (type = deploymentStack && operation != whatIf). Valores permitidos: create (Crear o actualizar), validate, whatIf (What-If (cambios de vista previa)), delete. Valor predeterminado: create.

Especifica la operación a realizar. Apoyos para el despliegue: crear, validar, y si. Deployment Stack soporta: crear, validar, eliminar.


scope - Alcance del despliegue
string. Obligatorio. Valores permitidos: resourceGroup (Grupo de recursos), subscription, managementGroup (Grupo de gestión), tenant. Valor predeterminado: resourceGroup.

Especifica el alcance en el que se despliegan los recursos.


name - Nombre del despliegue
string.

Especifica el nombre del despliegue o del despliegue de la pila de despliegue. Si no se proporciona, se generará un nombre predeterminado.


azureResourceManagerConnection - Azure Resource Manager conexión
Alias de entrada: ConnectedServiceName. string. Obligatorio.

Seleccione la conexión de servicio Azure Resource Manager.


subscriptionId - Suscripción
string. Se requiere cuando scope != tenant && scope != managementGroup.

Selecciona la suscripción de Azure. Es necesario si el alcance es suscripción o resourceGroup.


del grupo de recursos de
string. Se requiere cuando scope = resourceGroup.

Proporciona el nombre del grupo de recursos.


location - Ubicación
string. Opcional. Use cuando scope != resourceGroup.

Ubicación para almacenar metadatos de despliegue. Necesario para los ámbitos de suscripción, grupo de gestión y tened.


tenantId - ID de inquilino
string. Se requiere cuando scope = tenant.

Especifica el ID del inquilino. Es obligatorio si el alcance es inquilino.


managementGroupId - ID del grupo de gestión
string. Se requiere cuando scope = managementGroup.

Especifica el ID del grupo de gestión. Es necesario si el alcance es managementGroup.


templateFile - Archivo plantilla
string.

Especifica la ruta hacia el archivo plantilla de Bicep (.bicep).


parametersFile - Archivo de parámetros
string.

Especifica el camino hacia el archivo de parámetros (.json o .bicepparam).


parameters - Parámetros de invalidación
string.

Especifica los parámetros en línea como un objeto JSON o YAML. Ejemplo: {"param1": "value1", "param2": "value2"}.


actionOnUnmanageResources - Acción sobre recursos no gestionados
string. Se requiere cuando type = deploymentStack. Valores permitidos: delete, detach. Valor predeterminado: detach.

Especifica la acción a realizar sobre recursos no definidos en la plantilla.


actionOnUnmanageResourceGroups - Acción sobre grupos de recursos no gestionados
string. Opcional. Use cuando type = deploymentStack. Valores permitidos: delete, detach.

Especifica la acción a realizar sobre grupos de recursos no definidos en la plantilla.


actionOnUnmanageManagementGroups - Acción contra los grupos de gestión no gestionados
string. Opcional. Use cuando type = deploymentStack. Valores permitidos: delete, detach.

Especifica la acción a realizar sobre grupos de gestión no definidos en la plantilla.


denySettingsMode - Modo de denegar ajustes
string. Se requiere cuando type = deploymentStack. Valores permitidos: none, denyDelete (Negar Eliminar), denyWriteAndDelete (Negar Escribir y Eliminar). Valor predeterminado: none.

Especifica el modo de la configuración de denegación para evitar cambios no autorizados.


denySettingsExcludedActions - Denegar opciones excluyeron acciones
string. Opcional. Use cuando type = deploymentStack && denySettingsMode != none.

Lista separada por comas de acciones que hay que excluir de la configuración de denegación.


denySettingsExcludedPrincipals - Denegar configuraciones excluyendo a los principales
string. Opcional. Use cuando type = deploymentStack && denySettingsMode != none.

Lista separada por comas de IDs principales para excluir de la configuración de denegación.


denySettingsApplyToChildScopes - Aplicar ajustes de denegación a los microscopios hijos
boolean. Opcional. Use cuando type = deploymentStack && denySettingsMode != none. Valor predeterminado: false.

Cuando está activada, la configuración de denegación también se aplica a los ámbitos hijos de los recursos gestionados.


bypassStackOutOfSyncError - Error de bypass de pila fuera de sincronización
boolean. Opcional. Use cuando type = deploymentStack. Valor predeterminado: false.

Errores de bypass cuando la pila de despliegue está desincronizada.


description - descripción
string.

Descripción para el despliegue o la pila de despliegue.


etiquetas de tags -
string. Opcional. Use cuando type = deploymentStack.

Etiquetas como objeto JSON o YAML. Ejemplo: {"Entorno": "Desarrollo", "Propietario": "NombreEquipo"}.


bicepVersion - Bicep versión
string.

Especifica la versión de Bicep a usar (por ejemplo, '0.38.5'). Si no se proporciona, se utilizará la última versión.


maskedOutputs - Salidas enmascaradas
string.

Lista separada por comas de nombres de salida para los valores de la máscara (por ejemplo, secretos).


environment - Azure entorno
string. Valores permitidos: azureCloud (Azure Cloud), azureChinaCloud (Azure China Cloud), azureGermanCloud (Azure German Cloud), azureUSGovernment (Azure US Government). Valor predeterminado: azureCloud.

Especifica el entorno de Azure a utilizar.


whatIfExcludeChangeTypes - What-If excluye los tipos de cambio
string. Opcional. Use cuando operation = whatIf.

Lista separada por comas de tipos de cambio a excluir de What-If operación (por ejemplo, noChange, ignore).


validationLevel - Nivel de validación
string. Opcional. Use cuando type = deployment && (operation = validate || operation = whatIf). Valores permitidos: provider, template, providerNoRbac (Proveedor (Sin RBAC)).

Nivel de validación para operaciones de despliegue.


Opciones de control de tareas

Todas las tareas tienen opciones de control además de sus entradas de tarea. Para obtener más información, vea Opciones de control y propiedades de tareas comunes.

Variables de salida

Ninguno.

Observaciones

Prerrequisitos

Suscripción a Azure

Para desplegar en Azure, una suscripción de Azure debe estar vinculada a Azure Pipelines mediante una conexión de servicio:

  1. Navega a Project ConfiguraciónConexiones de servicio
  2. Crear una nueva conexión de servicio de tipo Azure Resource Manager
  3. Elige el método de autenticación:
    • Principal de servicio (automático) - Recomendado para la mayoría de los escenarios
    • Principio de Servicio (manual) - Para configuraciones avanzadas
    • Managed Identity - Para agentes Azure alojados con identidades gestionadas
    • Federación de Identidad de Carga de Trabajo - Para una mayor seguridad sin secretos

Para solucionar problemas en las conexiones del servicio, consulte la documentación de endpoint RM Azure .

Requisitos de agentes

  • Versión mínima del agente: 2.144.0
  • SO soportado: Windows, Linux, macOS
  • Node.js: Node.js 20 o más (incluido en los agentes alojados modernos)
  • Bicep CLI: Instalado automáticamente por la tarea (no se requiere instalación manual)

Salidas de despliegue

La tarea crea automáticamente variables de pipeline para todas las salidas definidas en tu plantilla de Bicep. Estas variables pueden utilizarse en tareas posteriores.

Definición de salidas en Bicep

Las salidas se definen en la plantilla de Bicep usando la palabra clave output. Por ejemplo:

output storageAccountName string = storageAccount.name
output webAppUrl string = webApp.properties.defaultHostName
output intOutput int = 42
output objectOutput object = {
  key1: 'value1'
  key2: 'value2'
}

Para una orientación detallada, consulte la documentación de Bicep Outputs.

Cómo se hacen disponibles los resultados

Una vez completado con éxito el despliegue, todas las salidas se establecen como variables de salida para el paso de la tarea. Para referenciarlos en tareas posteriores, asigna el paso a name de BicepDeploy y utiliza la sintaxis $(stepName.outputName).

Acceso a salidas en PowerShell

- task: BicepDeploy@0
  name: deploy
  displayName: 'Deploy Infrastructure'
  inputs:
    azureResourceManagerConnection: 'Azure-Connection'
    subscriptionId: '$(subscriptionId)'
    resourceGroupName: 'my-resource-group'
    templateFile: 'infra/main.bicep'

- task: PowerShell@2
  displayName: 'Use Deployment Outputs'
  inputs:
    targetType: 'inline'
    script: |
      Write-Host "Storage Account Name: $(deploy.storageAccountName)"
      Write-Host "Web App URL: $(deploy.webAppUrl)"

Acceso a las salidas en Bash

- task: BicepDeploy@0
  name: deploy
  displayName: 'Deploy Infrastructure'
  inputs:
    azureResourceManagerConnection: 'Azure-Connection'
    subscriptionId: '$(subscriptionId)'
    resourceGroupName: 'my-resource-group'
    templateFile: 'infra/main.bicep'

- task: Bash@3
  displayName: 'Use Deployment Outputs'
  inputs:
    targetType: 'inline'
    script: |
      echo "Storage Account Name: $(deploy.storageAccountName)"
      echo "Web App URL: $(deploy.webAppUrl)"

Ejemplos

Ejemplo 1: Despliegue básico

- task: BicepDeploy@0
  displayName: 'Deploy Bicep Template'
  inputs:
    azureResourceManagerConnection: 'Azure-Connection'
    subscriptionId: '$(subscriptionId)'
    resourceGroupName: 'my-resource-group'
    templateFile: 'infra/main.bicep'
    parametersFile: 'infra/main.bicepparam'

Ejemplo 2: Pila de despliegue

- task: BicepDeploy@0
  displayName: 'Deploy with Stack Protection'
  inputs:
    type: 'deploymentStack'
    operation: 'create'
    name: 'production-stack'
    azureResourceManagerConnection: 'Azure-Connection'
    subscriptionId: '$(subscriptionId)'
    resourceGroupName: 'production-rg'
    templateFile: 'infra/main.bicep'
    parametersFile: 'infra/production.bicepparam'
    actionOnUnmanageResources: 'delete'
    denySettingsMode: 'denyWriteAndDelete'

Ejemplo 3: Despliegue Subscription-Level

- task: BicepDeploy@0
  displayName: 'Deploy Subscription Resources'
  inputs:
    scope: 'subscription'
    azureResourceManagerConnection: 'Azure-Connection'
    subscriptionId: '$(subscriptionId)'
    location: 'eastus'
    templateFile: 'infra/subscription.bicep'
    parametersFile: 'infra/subscription.bicepparam'

Requisitos

Requisito Descripción
Tipos de canalización YAML, compilación clásica, versión clásica
Se ejecuta en Agente, DeploymentGroup
Peticiones Ninguno
Capacidades Esta tarea no satisface ninguna demanda de tareas posteriores en el trabajo.
restricciones de comandos Cualquiera
variables settable Cualquiera
Versión del agente 2.144.0 o superior
Categoría de tarea Implementar