Ejercicio: Creación de un flujo de trabajo para una solicitud de incorporación de cambios

Completado

El equipo de desarrollo de su sitio web le pidió que actualice el sitio web para que se ejecute en el sistema operativo Linux. En este ejercicio, agregarás un flujo de trabajo de validación que se ejecuta automáticamente cuando se abre o se actualiza una solicitud de incorporación de cambios. A continuación, crearás una solicitud de incorporación de cambios para el cambio de sistema operativo del sitio web.

Durante el proceso, hará lo siguiente:

  • Crea un flujo de trabajo para la validación de solicitudes de incorporación de cambios.
  • Agrega la linting de Bicep al flujo de trabajo.
  • Crea una solicitud de incorporación de cambios e inspecciona cómo se ejecuta el flujo de trabajo.
  • Corrige los errores identificados por el flujo de trabajo de validación de solicitudes de incorporación de cambios.
  • Vuelve a ejecutar el flujo de trabajo y, después, combina y cierra la solicitud de incorporación de cambios.

Crea de un flujo de trabajo para ejecutarlo cuando se creen y actualicen las solicitudes de incorporación de cambios

  1. En Visual Studio Code, crea un nombre de archivo pr-validation.yml en la carpeta .github/workflows.

    Captura de pantalla de Visual Studio Code que muestra el archivo YML de punto de validación de PR dentro de la carpeta de flujos de trabajo.

  2. Agregue el siguiente código al archivo:

    name: pr-validation
    
    on: pull_request
    

    Este código garantiza que el flujo de trabajo se ejecuta cada vez que se crea o actualiza una solicitud de incorporación de cambios.

    Nota

    Estás trabajando directamente contra el repositorio de la rama principal. Normalmente, no lo harías, pero en este ejercicio trabajarás con lo principal para simplificar los pasos. En sus propios proyectos, es importante configurar reglas de protección de rama para proteger la rama principal.

Añade un trabajo de lint al flujo de trabajo

Siempre que se abre o edita una solicitud de incorporación de cambios, se requiere ejecutar un paso de linting para los archivos Bicep. Hay un flujo de trabajo de lint reutilizable en el repositorio al que puedes llamar desde este flujo de trabajo.

  1. Al final del contenido del archivo existente, agrega las líneas siguientes para reutilizar el flujo de trabajo lint definido en el repositorio:

    jobs:
      lint:
        uses: ./.github/workflows/lint.yml
    

    El repositorio hay un archivo bicepconfig.json que configura el linter para que emita errores en lugar de advertencias, por lo que cualquier error durante el trabajo de lint hará que se produzca un error en el flujo de trabajo.

  2. Guarde los cambios.

  3. Confirma e inserta los cambios en la rama del repositorio Gitprincipalmediante la ejecución de los comandos siguientes en el terminal de Visual Studio Code:

    git add .
    git commit -m "Add first version of pull request validation workflow"
    git push
    

Actualización del archivo de Bicep

Después, modifica el archivo Bicep del sitio web para actualizar el sistema operativo del sitio a Linux.

  1. En el terminal de Visual Studio Code, cree una rama para los cambios ejecutando el comando siguiente:

    git checkout -b feature/linux-app
    
  2. Abra el archivo main.bicep en la carpeta deploy.

  3. Cerca de la parte superior del archivo, debajo de las definiciones de variable, define una nueva variable para que la utilice el marco de trabajo de la aplicación:

    // Define the names for resources.
    var appServiceAppName = 'toy-website-linux-${resourceNameSuffix}'
    var appServicePlanName = 'toy-website-linux'
    var storageAccountName = 'mystorage${resourceNameSuffix}'
    
    var appServiceAppLinuxFrameworkVersion = 'node|14-lts'
    

    Esta configuración indica a Azure App Service que la aplicación se va a crear con la versión 14 del marco Node.js.

  4. Actualiza la definición appServicePlan del recurso. Agregue la propiedad kind y la propiedad reserved en el objeto properties:

    resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = {
      name: appServicePlanName
      location: location
      sku: environmentConfigurationMap[environmentType].appServicePlan.sku
      kind: 'linux'
      properties: {
        reserved: true
      }
    }
    
  5. Actualiza la definición appServiceApp de recursos para establecer el marco de trabajo de la aplicación:

    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          linuxFxVersion: 'node|14-lts'
        }
      }
    }
    

    Nota

    Es posible que observes que Bicep te avisa de que no estás usando la appServiceAppLinuxFrameworkVersion variable. En este caso, estás causando intencionadamente un error de linter para poder ver cómo se ve dentro de la solicitud de incorporación de cambios de GitHub.

  6. Guarde los cambios.

  7. 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 "Update operating system to Linux"
    git push origin feature/linux-app
    

Crear una solicitud de incorporación de cambios

Ahora que el flujo de trabajo está configurado y se ha actualizado el archivo Bicep, puedes crear una solicitud de incorporación de cambios.

  1. En el explorador, selecciona el Código.

  2. Selecciona 2 ramas para abrir la lista de ramas del repositorio GitHub.

    Captura de pantalla de GitHub que muestra la lista de ramas del repositorio.

    La comparación y solicitud de cambios se muestra durante un breve tiempo cuando se insertan cambios en la rama que aún no tiene una solicitud de incorporación de cambios abierta. Se trata de un acceso directo a la página Abrir una solicitud de incorporación de cambios.

  3. Junto a la rama feature/linux-app , selecciona Nueva solicitud de incorporación de cambios. Es posible que tenga que seleccionar el icono Más (...) para mostrar la opción Nueva solicitud de cambios.

    Captura de pantalla de GitHub que muestra el vínculo para crear una solicitud de incorporación de cambios para la rama de aplicación linux de barra diagonal de características.

  4. Seleccione Crear solicitud de incorporación de cambios.

    Captura de pantalla del panel

    Se mostrará la página de detalles de la solicitud de incorporación de cambios.

  5. Consulta la sección Comprobaciones de los detalles de la solicitud de incorporación de cambios.

    Después de un momento, observe que se desencadena una comprobación automática. La comprobación ejecuta el flujo de trabajo de validación de la solicitud de incorporación de cambios.

    Es posible que el flujo de trabajo tarde un poco a empezar a funcionar. Actualiza la ventana del explorador web hasta que veas las comprobaciones de estado.

    Cuando finalice la comprobación, puede ver que se produjo un error.

    Captura de pantalla de GitHub que muestra la comprobación de estado con errores en la página de detalles de la solicitud de incorporación de cambios.

    Nota

    GitHub permite combinar la solicitud de incorporación de cambios aunque se produzca un error en las comprobaciones de estado. En una solución real, debería configurar una regla de protección de rama para evitar que una solicitud de incorporación de cambios se combine hasta que las comprobaciones de estado se hayan hecho correctamente.

Corrección de los errores de validación de solicitudes de incorporación de cambios

  1. En el panel de comprobación de estado, selecciona Detalles para inspeccionar el registro de flujo de trabajo.

    Captura de pantalla de GitHub que muestra el registro de flujo de trabajo, incluido el error de validación.

    El registro incluye este mensaje del linter de Bicep:

    Error no-unused-vars: Variable "appServiceAppLinuxFrameworkVersion" is declared but never used.
    
  2. En Visual Studio Code, abre el archivo deploy/main.bicep.

    En la línea 20, hay una variable denominada appServiceAppLinuxFrameworkVersion. No se usa la variable. Luego, se solucionará este error.

  3. En la appServiceApp definición de recursos, actualiza la linuxFxVersion propiedad para que use la variable en lugar de establecer la propiedad con el valor codificado:

    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          linuxFxVersion: appServiceAppLinuxFrameworkVersion
        }
      }
    }
    
  4. En el terminal de Visual Studio Code, confirma los cambios e insértalos en el repositorio.

    git add .
    git commit -m "Fix Bicep file"
    git push origin feature/linux-app
    

Supervisa y combina la solicitud de incorporación de cambios

  1. Vuelve a abrir el explorador en la página de detalles de la solicitud de incorporación de cambios.

    La validación de la solicitud de incorporación de cambios se ejecuta de nuevo. Si la comprobación de estado no se está ejecutando, actualiza la página.

    Espera a que termine la comprobación. Esta vez, se ha realizado correctamente. No hay ningún error de sintaxis o errores de linter en el archivo Bicep, por lo que ya puedes combinar la solicitud de incorporación de cambios.

  2. Selecciona Combinar solicitud de incorporación de cambios para cerrar la solicitud y combinar los cambios en la rama principal.

    Captura de pantalla de GitHub que muestra el botón

  3. Selecciona Confirmar combinación.