es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo definir condicionalmente un parámetro de plantilla de Azure?

En una plantilla de Azure, se permiten los parámetros, sin embargo, no se pueden definir variables… Necesito definir condicionalmente un parámetro en una plantilla de canalización de Azure basado en un parámetro diferente.

Aquí está mi sintaxis deseada, que arroja un error:


parameters:
– name: my_host_url
type: string
${{ if eq(parameters.environment, ‘prod’) }}:
default: ‘https://example.com’
${{ else }}:
default: ‘https://dev.example.com’

Lo anterior arroja un error:

Una expresión de plantilla no está permitida en este contexto.

Es posible hacer algo similar para las variables utilizando: https://learn.microsoft.com/en-us/azure/devops/release-notes/2021/sprint-192-update#new-yaml-conditional-expressions. Sin embargo, dado que estoy en una plantilla de canalización de Azure, no se permiten las variables, por lo que estoy definiendo parámetros en lugar de variables.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, no es posible definir condicionalmente un parámetro en una plantilla de Azure Pipeline en función de otro parámetro utilizando expresiones de plantilla como la que proporcionaste. El mensaje de error que recibiste indica que las expresiones de plantilla no están permitidas en este contexto.

    Sin embargo, hay una solución alternativa que puedes utilizar. En lugar de definir el parámetro condicionalmente, puedes definir dos parámetros separados con diferentes valores predeterminados y utilizar una expresión de plantilla en la definición de tu pipeline para elegir qué parámetro utilizar en función del valor del otro parámetro.

    Aquí tienes un ejemplo:

    parameters:
      - name: environment
        type: string
        default: dev
        values:
          - dev
          - prod
    
      - name: dev_host_url
        type: string
        default: https://dev.example.com
    
      - name: prod_host_url
        type: string
        default: https://example.com
    
    steps:
      - script: |
          if [ "${{ parameters.environment }}" = "prod" ]
          then
            echo "Usando la URL del host de prod: ${{ parameters.prod_host_url }}"
          else
            echo "Usando la URL del host de dev: ${{ parameters.dev_host_url }}"
          fi
    

    En este ejemplo, definimos dos parámetros, dev_host_url y prod_host_url, con diferentes valores predeterminados. Luego, en nuestra definición de pipeline, utilizamos un paso de script de shell para elegir qué parámetro utilizar en función del valor del parámetro environment.

    Ten en cuenta que esta solución alternativa requiere que actualices la definición de tu pipeline cada vez que agregues o elimines un parámetro. Si esto no es aceptable, puedes considerar utilizar un sistema de plantillas de pipeline diferente que admita definiciones de parámetros condicionales.

Comments are closed.