Implementar la integración continua e implementación continua con Azure DevOps

Azure DevOps (Visual Studio Team Services y Team Foundation Server) se compone de un conjunto de herramientas y servicios que ayudan a los desarrolladores a implementar procesos de DevOps, Integración continua e implementación continua para sus proyectos de desarrollo.

Este artículo explica los pasos necesarios para configurar su entorno de Azure DevOps con la integración continua y la implementación continua para automatizar las compilaciones, implementación y pruebas de unidad de SharePoint Framework.

Elegir entre las compilaciones y versiones de Azure DevOps y Azure Multi-stage Pipelines (versión preliminar)

Actualmente, hay dos métodos disponibles para implementar la integración continua y la implementación en Azure DevOps. Compilaciones y versiones de Azure es el método tradicional, con experiencia de edición gráfica y almacenamiento de definiciones en un documento JSON oculto para el usuario.

Se describen ambos métodos para SharePoint Framework:

Integración continua

La integración continua (CI) ayuda a los desarrolladores a integrar código en un repositorio compartido al comprobar automáticamente la compilación mediante pruebas de unidad y el empaquetado de la solución cada vez que se envían nuevos cambios de código.

La configuración de Azure DevOps para la integración continua con una solución de SharePoint Framework requiere lo siguiente:

  1. Crear la definición de compilación
  2. Instalar NodeJS
  3. Restaurar dependencias
  4. Ejecutar pruebas de unidad
  5. Importar resultados de pruebas
  6. Importar información de cobertura de código
  7. Unir la solución
  8. Empaquetar la solución
  9. Preparar los artefactos
  10. Publicar los artefactos

Crear la definición de compilación

La definición de compilación, como su nombre indica, incluye todas las definiciones y las configuraciones de la compilación. Inicie la configuración de la integración continua mediante la creación de una nueva definición de compilación y la vinculación a su repositorio.

vincular la definición de compilación al repositorio

Nota:

Las definiciones de compilación se pueden describir como una plantilla de proceso. Es un conjunto de tareas de configuración que se ejecutarán una tras otra en el código fuente cada vez que se activa una compilación. Se pueden agrupar las tareas en fases, una definición de compilación contiene al menos una fase de forma predeterminada. Puede agregar nuevas tareas a la fase haciendo clic en el gran signo más junto al nombre de la fase.

Instalar NodeJS versión 10

Tras crear la definición de compilación, lo primero que necesita hacer es instalar NodeJS. Asegúrese de instalar la versión 10, ya que SharePoint Framework depende de ella. Captura de pantalla de la pantalla Seleccionar un origen con la opción Azure Repos Git resaltada.

Nota:

Asegúrese de especificar 10.x en el campo Version Spec. Si su proyecto se basa en SharePoint Framework 1.7.1 o versiones anteriores, use la versión 8. x.

Restaurar dependencias

Como las dependencias de terceros no se almacenan en el control de origen, debe restaurarlas antes de empezar a crear el proyecto. Para hacerlo, agregue una tarea npm y establezca el comando en install.

instalar dependencias

Ejecutar pruebas de unidad

SharePoint Framework no proporciona un marco de prueba de forma predeterminada (desde 1.8.0), en este ejemplo se usará Jest. Estos módulos se instalarán más adelante y se recomienda como mínimo probar la lógica empresarial del código para recibir comentarios sobre posibles problemas o regresiones tan pronto como sea posible. Para que Azure DevOps ejecute las pruebas de unidad, agregue una tarea npm. Establezca command como custom y, en el campo custom command, introduzca test. A continuación, establezca la opción Working Directory como $(Build.SourcesDirectory).

ejecutar pruebas de unidad

Configurar Jest

De forma predeterminada, los proyectos SharePoint Framework no incluyen un marco de prueba. En este ejemplo se usará Jest.

npm i jest jest-junit @voitanos/jest-preset-spfx-react16 -D

Nota:

Los proyectos generados en SharePoint Framework 1.7.1 y versiones anteriores se basan en React versión 15. Si usa React 15, debe instalarlo @voitanos/jest-preset-spfx-react15 en su lugar. Para otros marcos (Knockout, etc.) es posible que necesite instalar un valor preestablecido diferente en su lugar.

También debe configurar Jest, para hacerlo, cree un archivo config/jest.config.json y agregue el contenido siguiente.

{
  "preset": "@voitanos/jest-preset-spfx-react16",
  "rootDir": "../src",
  "coverageReporters": [
    "text",
    "json",
    "lcov",
    "text-summary",
    "cobertura"
  ],
  "reporters": [
    "default",
    ["jest-junit", {
      "suiteName": "jest tests",
      "outputDirectory": "temp/test/junit",
      "outputName": "junit.xml"
    }]
  ]
}

También necesita configurar el proyecto para utilizar jest al escribir los comandos. Para ello, edite el archivo package.json y agregue o reemplace estos dos scripts con los valores siguientes:

    "test": "./node_modules/.bin/jest --config ./config/jest.config.json",
    "test:watch": "./node_modules/.bin/jest --config ./config/jest.config.json --watchAll"

Escribir una prueba de unidades

Para escribir la primera prueba de unidad, cree un nuevo archivo src/webparts/webPartName/tests/webPartName.spec.ts y agregue el siguiente contenido:

import 'jest'

describe("webPartName", () => {
  test("should add numbers Sync fluent", () => {
    const result = 1 + 3;
    expect(result).toBe(4); // fluent API
  });
});

Nota:

Puede obtener más información sobre cómo escribir pruebas de unidad mediante Jest aquí. Puede obtener más información acerca de cómo probar las aplicaciones de reacción con Jest y Enzyme aquí (puede ignorar la parte de la configuración).

Importar resultados de pruebas

Para obtener información de los resultados de las pruebas junto con los resultados de la compilación, necesita importar estos resultados de pruebas desde el ejecutor de pruebas a Azure DevOps. Para ello, agregue una nueva tarea Publish Test Results. Establezca el campo Test results files como **/junit.xml y Search folder como $(Build.SourcesDirectory).

importar resultados de pruebas

Importar información de cobertura de código

Para obtener reportes de la cobertura del código con el estado de la compilación deberá agregar una tarea para importar esa información. Para configurar la información de cobertura de código, agregue las tareas publish code coverage results. Asegúrese de que establece la herramienta en Cobertura, Summary files en $(Build.SourcesDirectory)/**/*-coverage.xml.

importar información de cobertura

Unir la solución

Primero debe unir la solución para obtener recursos estáticos que un explorador web pueda comprender. Agregar otra tarea gulp, establezca la ruta de acceso gulpfile, establezca el campo Gulp Tasks en unir y agregue --ship en los Arguments.

unir los activos

Empaquetar la solución

Ahora que tiene activos estáticos, el siguiente paso es combinar los activos en un paquete que SharePoint podrá implementar. Agregue otra tarea gulp, establezca la ruta de acceso de gulpfile, establezca el campo Gulp Tasks en package-solution and añada --ship en los Arguments.

empaquetar la solución

Preparar los artefactos

De forma predeterminada, una compilación de Azure DevOps no conserva ningún archivo. Para asegurarse de que se conservan los archivos necesarios para la publicación, deberá indicar explícitamente que archivos deben conservarse. Agregue una tarea Copy Files y establezca los Contents en **\*.sppkg (el paquete de SharePoint creado con la tarea anterior) y la carpeta de destino en $(build.artifactstagingdirectory)/drop.

capturar los artefactos

Publicar los artefactos

Ahora que ha recopilado todos los archivos necesarios para la implementación en una carpeta especial de artefactos, aún necesita indicar a Azure DevOps para conserve estos archivos después de ejecutar la compilación. Para hacerlo, agregue una tarea Publish artifacts y establezca Path to publish en $(build.artifactstagingdirectory)/drop y el Artifact name en drop.

publicar los artefactos

Implementación continua

La implementación continua (CD) toma paquetes de código validados del proceso de compilación y los implementa en un entorno de almacenamiento provisional o de producción. Los desarrolladores pueden identificar qué implementaciones funcionaron correctamente o no y reducir los problemas a las versiones específicas del paquete.

La configuración de Azure DevOps para la implementación continua con una solución de SharePoint Framework requiere lo siguiente:

  1. Crear la definición de la versión
  2. Vincular el artefacto de la compilación
  3. Crear el entorno
  4. Instalar NodeJS
  5. Instalar la CLI para Microsoft 365
  6. Conectarse al catálogo de aplicaciones
  7. Agregar el paquete de solución al catálogo de aplicaciones
  8. Implementar la aplicación
  9. Configurar las variables en el entorno

Crear la definición de la versión

Empiece por crear una nueva definición de versión con una plantilla vacía. Una definición de versión es un proceso que se usa para identificar los elementos siguientes para la implementación:

  • Entorno
  • Tareas de implementación
  • Crear artefactos

crear la definición de la versión

Vincular el artefacto de la compilación

Haga clic en Add an artifact y seleccione la definición de compilación que haya creado. Anote el nombre Source Alias que ha establecido, ya que deberá usarlo en las siguientes tareas.

vincular los artefactos

Crear el entorno

Cuando crea el entorno de implementación continua, puede asignar un nombre y configurar aprobaciones previas a la implementación, filtros de artefactos (es decir, implementar la versión solo si proviene de esta o esa rama) y mucho más. Para hacerlo, haga clic en los botones alrededor del cuadro del entorno o directamente en el título.

crear el entorno

Instalar NodeJS

Al hacer clic en 1 job, 0 tasks puede tener acceso a la vista de configuración de tareas, que funciona de forma similar a la definición de compilación. Aquí puede seleccionar el conjunto de tareas que solo se ejecutarán para este entorno específico. Esto incluye instalar NodeJS versión 10 o posterior.

Agregar una tarea Node tool installer y definir 10.X en el campo Version Spec. Si su proyecto se basa en SharePoint Framework 1.7.1 o versiones anteriores, use la versión 8. X.

Captura de pantalla de la pantalla Node dot J S Tool Installer (Instalador de herramientas de J S del punto de nodo), en la que se muestran los campos Nombre para mostrar y Especificación de versión.

Instalar la CLI para Microsoft 365

La infraestructura de lenguaje común (CLI) de Microsoft 365 es un proyecto de código abierto creado por la comunidad de patrones y prácticas (PnP) de Microsoft 365. Para aprovechar la CLI como parte de la definición de versión, primero debe instalarla. Después, podrá aprovechar los comandos disponibles para administrar la implementación. Agregue una tarea npm, seleccione un comando Custom y escriba install -g @pnp/cli-microsoft365 en el campo Command and Arguments.

Instalar la CLI para Microsoft 365

Nota:

Obtenga más información sobre la CLI para Microsoft 365

Conectarse a SharePoint Online

Antes de usar el catálogo de aplicaciones en el entorno de implementación, primero debe autenticarse en el catálogo de aplicaciones de su espacio empresarial. Para ello, agregue una tarea Command Line y pegue el comando siguiente en el campo scriptm365 login -t password -u $(username) -p $(password).

conectar al catálogo de aplicaciones

Nota:

Si usa la CLI de Microsoft 365 para conectarse al espacio empresarial por primera vez, deberá realizar un inicio de sesión interactivo con la cuenta en primer lugar. Esto es necesario para conceder acceso a la aplicación del Shell de administración de Office 365 PnP que usa la CLI para Microsoft 365 para obtener acceso a su espacio empresarial en nombre de la cuenta. En caso contrario, se producirá un error en la tarea al iniciar una sesión no interactiva. Más información disponible en la guía del usuario sobre la CLI para Microsoft 365.

Nota:

La CLI de Microsoft 365 es una solución de código abierto con una comunidad activa que ofrece su soporte. No hay ningún contrato de nivel de servicio para el soporte de la herramienta de código abierto de Microsoft.

Agregar el paquete de solución al catálogo de aplicaciones

Cargue el paquete de soluciones en el catálogo de aplicaciones agregando otra tarea Command Line y pegando la siguiente línea de comandos en el campo Scriptm365 spo app add -p $(System.DefaultWorkingDirectory)/SpFxDevOps/drop/SharePoint/solution/sp-fx-devops.sppkg --overwrite

Nota:

La ruta de acceso del paquete depende del nombre de la solución (consulte la configuración del proyecto), así como el Source Alias definido previamente, asegúrese de que coinciden.

Nota:

Puede agregar una solución al catálogo de aplicaciones de la colección de sitios agregando --appCatalogUrl https://$(tenant).sharepoint.com/$(catalogsite) --scope sitecollection

cargar el paquete en el catálogo

Implementar la aplicación

El último paso en esta configuración es implementar la aplicación en el catálogo de aplicaciones para que esté disponible para todas las colecciones de sitios en el espacio empresarial al ser la versión más reciente. Agregue otra tarea Command Line y pegue la siguiente línea de comandos en el campo Scriptm365 spo app deploy --name sp-fx-devops.sppkg

Nota:

Asegúrese de actualizar el nombre del paquete.

Nota:

Puede implementar una solución desde un catálogo de aplicaciones de la colección de sitios agregando --appCatalogUrl https://$(tenant).sharepoint.com/$(catalogsite) --scope sitecollection

Implementar el paquete en el catálogo

Configurar las variables en el entorno

Las tareas que haya configurado en el último paso dependen de las variables de proceso de Azure DevOps (identificadas fácilmente con la sintaxis $(variableName)). Necesita definir esas variables antes de poder ejecutar la definición de compilación. Para ello, haga clic en la pestaña Variables. Agregue las siguientes variables

Nombre Valor
catalogsite Opcional. La ruta de acceso relativa al servidor del sitio del catálogo de aplicaciones, por ejemplo, sites/appcatalogcuando se carga en un Catálogo de aplicaciones de la colección de sitios
contraseña Contraseña del usuario con permisos de administrador en el espacio empresarial, no olvide marcar el candado para ocultarla a otros usuarios
usuario Nombre del usuario con permisos de administrador en el espacio empresarial
tenant Opcional. Nombre del espacio empresarial, https://tenant.sharepoint.com por ejemplo tenant, cuando se carga en un Catálogo de aplicaciones de la colección de sitios

Configuración de variables

Nota:

Asegúrese de guardar la definición de la versión.

Pruebas

Para probar el proceso de implementación continua recién creado, vuelva a la sección Builds en Azure DevOps, seleccione la definición de su compilación y haga clic en Queue. Seleccione la rama y haga clic en Queue. Se creará e iniciará una nueva compilación.

Colocar en cola una compilación

Después de unos minutos, la compilación debería completarse y mostrar una página de resultados similar a la siguiente.

Resultados de una compilación

Si se desplaza a la sección Release de Azure DevOps, una nueva versión debería haberse iniciado automáticamente. Tras unos minutos se completará la publicación y se implementará la solución de SharePoint Framework en su espacio empresarial.

Resultados de una versión

La canalización de DevOps para su solución de SharePoint Framework en Azure DevOps ya está configurada y preparada para una mejor personalización.

Vea también