Ejercicio: Publicación de una especificación de plantilla

Completado

El equipo tiene algunos archivos de Bicep protegidos por la seguridad que son compatibles con el nuevo modelo de gobernanza de su empresa. Uno de los archivos de Bicep protegidos implementa una aplicación de Azure App Service basada en Linux. En este ejercicio se usa una canalización de implementación para publicar el archivo de Bicep como especificación de plantilla.

Durante el proceso, hará lo siguiente:

  • Agregue una fase de lint a la canalización.
  • Agregue una fase de canalización para publicar la especificación de plantilla.
  • Compruebe que la canalización se inicia y finaliza correctamente.
  • Compruebe la especificación de plantilla publicada en Azure.

Agregación de una fase de lint a la canalización

El repositorio contiene un borrador de definición de canalización que puede usar como punto de partida.

  1. En Visual Studio Code expanda la carpeta template-specs/linux-app-service en la raíz del repositorio.

  2. Abra el archivo pipeline.yml.

    Captura de pantalla de Visual Studio Code que muestra la ubicación del archivo de definición de canalización.

  3. En la parte inferior del archivo, reemplace # To be added por la siguiente definición de fase de lint:

    stages:
    
    - stage: Lint
      jobs:
      - job: LintCode
        displayName: Lint code
        steps:
          - script: |
              az bicep build --file $(TemplateSpecFilePath)
            name: LintBicepCode
            displayName: Run Bicep linter
    

    El repositorio contiene un archivo bicepconfig.json que configura el linter para que emita errores en lugar de advertencias. Cualquier error durante la fase de lint hará que se produzca un error en la canalización.

    Sugerencia

    Los archivos YAML son sensibles a la sangría. Tanto si escribe o pega este código, asegúrese de que la sangría es correcta. Más adelante en este ejercicio verá la definición de canalización YAML completa para que pueda comprobar que el archivo coincide.

Agregación de una fase de publicación a la canalización

Ahora puede agregar una segunda fase para publicar la especificación de plantilla en Azure.

  1. Agregue el siguiente código al final del archivo pipeline.yml:

    - stage: Publish
      jobs:
      - job: Publish
        steps:
          - task: AzureCLI@2
            name: Publish
            displayName: Publish template spec
            inputs:
              azureSubscription: $(ServiceConnectionName)
              scriptType: 'bash'
              scriptLocation: 'inlineScript'
              inlineScript: |
                az ts create \
                  --resource-group $(AzureResourceGroupName) \
                  --name $(TemplateSpecName) \
                  --version $(Build.BuildNumber) \
                  --template-file $(TemplateSpecFilePath) \
                  --location $(AzureRegion) \
                  --yes
    

    En esta fase se extrae el código del repositorio y se inicia sesión en Azure mediante la conexión de servicio que ha creado. A continuación, ejecuta el comando az ts create para publicar la especificación de plantilla en Azure.

    Sugerencia

    Para simplificar las cosas, la canalización usa el número de compilación de la canalización como número de versión de la especificación de plantilla. En la unidad siguiente obtendrá información sobre un sistema de control de versiones más complejo.

  2. Guarde los cambios en el archivo.

Comprobación y confirmación de la definición de canalización

  1. Compruebe que el archivo azure-pipelines.yml es similar al del ejemplo siguiente:

    trigger:
      batch: true
      branches:
        include:
        - main
      paths:
        include:
        - 'template-specs/linux-app-service/**'
    
    variables:
    - name: ServiceConnectionName
      value: ToyReusable
    - name: AzureResourceGroupName
      value: ToyReusable
    - name: AzureRegion
      value: westus3
    - name: TemplateSpecName
      value: linux-app-service
    - name: TemplateSpecFilePath
      value: template-specs/linux-app-service/main.bicep
    
    pool:
      vmImage: ubuntu-latest
    
    stages:
    
    - stage: Lint
      jobs:
      - job: LintCode
        displayName: Lint code
        steps:
          - script: |
              az bicep build --file $(TemplateSpecFilePath)
            name: LintBicepCode
            displayName: Run Bicep linter
    
    - stage: Publish
      jobs:
      - job: Publish
        steps:
          - task: AzureCLI@2
            name: Publish
            displayName: Publish template spec
            inputs:
              azureSubscription: $(ServiceConnectionName)
              scriptType: 'bash'
              scriptLocation: 'inlineScript'
              inlineScript: |
                az ts create \
                  --resource-group $(AzureResourceGroupName) \
                  --name $(TemplateSpecName) \
                  --version $(Build.BuildNumber) \
                  --template-file $(TemplateSpecFilePath) \
                  --location $(AzureRegion) \
                  --yes
    

    Si no es así, actualícelo para que coincida con este ejemplo y después guárdelo.

  2. Confirme e inserte los cambios en el repositorio de Git mediante la ejecución de los comandos siguientes en el terminal de Visual Studio Code:

    git add .
    git commit -m "Add lint and publish stages to Linux App Service template spec pipeline"
    git push
    

    Inmediatamente después de la inserción, Azure Pipelines inicia una nueva ejecución de canalización.

Supervisar la canalización

  1. En el explorador seleccione Canalizaciones>Canalizaciones.

    Captura de pantalla de Azure Pipelines que muestra el elemento de menú Canalizaciones.

  2. Seleccione la ejecución de canalización activa.

  3. Se muestra la ejecución de canalización.

    Espere a que finalice la ejecución de la canalización. La especificación de plantilla se publica en Azure.

    Captura de pantalla de Azure Pipelines que muestra una ejecución correcta de la canalización y resalta el número de compilación.

  4. Observe el número de compilación de la canalización, que incluye la fecha de hoy y un número de revisión único. En el ejemplo que se muestra en la captura de pantalla, el número de compilación es 20230407.1.

Revisar la especificación de plantilla en Azure

También puede ver la especificación de plantilla publicada en el Portal de Azure.

  1. En el explorador, vaya a Azure Portal.

  2. Vaya al grupo de recursos ToyReusable y seleccione la especificación de plantilla linux-app-service.

    Captura de pantalla de Azure Portal que muestra el grupo de recursos, con la especificación de plantilla resaltada.

  3. Examine los detalles de la especificación de plantilla.

    Captura de pantalla de Azure Portal que muestra detalles de la especificación de plantilla.

    Observe que la versión más reciente y el número de versión son los mismos que el número de compilación de la canalización. La canalización usa el número de compilación para el número de versión de la especificación de plantilla.