Ejercicio: creación de una canalización para el paquete

Completado

Aquí obtendrá el nuevo código del equipo para el proyecto Tailspin.SpaceGame.Web.Models que ahora es independiente del proyecto Tailspin.SpaceGame.Web . Crea un proyecto de Azure Pipelines para el proyecto Modelos y verá el artefacto en Azure Artifacts con el número de versión 1.0.0 en la fuente.

¿Qué cambios se realizaron en el proyecto?

Recuerde que el sitio web de Space Game es una aplicación ASP.NET Core. Usa el patrón Model-View-Controller (MVC) para separar los datos de cómo se muestran esos datos en la interfaz de usuario. Andy y Mara quieren mover las clases de modelo a una biblioteca independiente para que varios proyectos puedan usar esas clases.

Para ello, crean un nuevo proyecto de C# denominado Tailspin.SpaceGame.Web.Models que contiene solo las clases de modelo. Al mismo tiempo, quitan las clases de modelo de su proyecto existente, Tailspin.SpaceGame.Web. Reemplazan las clases de modelo en su proyecto existente por una referencia al proyecto Tailspin.SpaceGame.Web.Models .

Para compilar estos proyectos, Andy y Mara utilizan dos canalizaciones, una para cada proyecto. Ya tiene el primer proyecto y su configuración asociada de Azure Pipelines. Aquí bifurca el segundo proyecto en GitHub y crea una configuración de Azure Pipelines para compilarlo. Publique el paquete resultante en Azure Artifacts.

Preparación de Visual Studio Code

Antes, ha configurado Visual Studio Code para trabajar con el proyecto Tailspin.SpaceGame.Web. Aquí, abre una segunda instancia de Visual Studio Code para que pueda trabajar con el proyecto Tailspin.SpaceGame.Web.Models .

  1. Abra una segunda instancia de Visual Studio Code.

  2. En Visual Studio Code, abra el terminal integrado.

  3. Vaya al directorio primario desde donde se encuentra el proyecto mslearn-tailspin-spacegame-web . Este es un ejemplo de movimiento al directorio principal:

    cd ~
    

Obtención del código fuente

Obtenga el código fuente del proyecto Tailspin.SpaceGame.Web.Models desde GitHub y configure Visual Studio Code para que pueda trabajar con los archivos.

Creación de una bifurcación

El primer paso consiste en bifurcar el repositorio mslearn-tailspin-spacegame-web-models para que pueda trabajar con los archivos de origen y modificarlos. Recuerde que Mara puso el directorio Models en un nuevo proyecto y lo quitó del proyecto web.

Para hacer un fork del proyecto mslearn-tailspin-spacegame-web-models en tu cuenta de GitHub:

  1. Desde un explorador web, vaya a GitHub e inicie sesión.
  2. Vaya al proyecto mslearn-tailspin-spacegame-web-models.
  3. Seleccione Fork.
  4. Siga las instrucciones para bifurcar el repositorio en su cuenta.

Clonación de la bifurcación localmente

Para clonar los proyectos mslearn-tailspin-spacegame-web-models en su ordenador:

  1. En GitHub, vaya a la bifurcación del proyecto mslearn-tailspin-spacegame-web-models.

  2. Seleccione Código. A continuación, en la pestaña HTTPS , seleccione el botón situado junto a la dirección URL para copiar la dirección URL en el Portapapeles.

    Captura de pantalla que muestra la dirección URL y el botón copiar del repositorio de GitHub.

  3. En Visual Studio Code, vaya a la ventana del terminal y ejecute este git clone comando. Reemplace la dirección URL por el contenido del Portapapeles.

    git clone https://github.com/your-name/mslearn-tailspin-spacegame-web-models.git
    
  4. Vaya al directorio mslearn-tailspin-spacegame-web-models . Esta ubicación es el directorio raíz del repositorio.

    cd mslearn-tailspin-spacegame-web-models
    

Abra el proyecto y examine la configuración.

En Visual Studio Code, la ventana del terminal apunta al directorio raíz del proyecto mslearn-tailspin-spacegame-web-models . Abra el proyecto desde el explorador de archivos para que pueda ver su estructura y trabajar con archivos.

  1. La forma más fácil de abrir el proyecto es reabrir Visual Studio Code en el directorio actual. Para hacerlo, ejecute el comando siguiente en el terminal integrado:

    code -r .
    

    Verá el árbol de directorios y archivos en el Explorador de archivos.

  2. Vuelva a abrir el terminal integrado. El terminal le sitúa en la raíz del proyecto web.

  3. Abra el archivo azure-pipelines.yml .

    Verá los pasos en los que se compila el paquete, se establece la versión y el paquete se agrega a Azure Artifacts.

    Esta tarea DotNetCoreCLI@2 compila el código del proyecto:

    - task: DotNetCoreCLI@2
      displayName: 'Build the project - $(buildConfiguration)'
      inputs:
        command: 'build'
        arguments: '--no-restore --configuration $(buildConfiguration)'
        projects: '**/*.csproj'
    

    Esta DotNetCoreCLI@2 tarea empaqueta el proyecto con una versión de 1.0.0:

    - task: DotNetCoreCLI@2
      displayName: 'Pack the project - $(buildConfiguration)'
      inputs:
        command: 'pack'
        projects: '**/*.csproj'
        arguments: '--no-build --configuration $(buildConfiguration)'
        versioningScheme: byPrereleaseNumber
        majorVersion: '1'
        minorVersion: '0'
        patchVersion: '0'
    

    Al desarrollar el paquete, es habitual usar el byPrereleaseNumber esquema de control de versiones. Este enfoque anexa un sufijo de versión preliminar único, como -CI-20190621-042647 al final del número de versión. Después de este ejemplo, el número de versión completo sería 1.0.0-CI-20190621-042647.

    Esta tarea NuGetCommand@2 inserta el paquete en su fuente de Azure Artifacts Tailspin.SpaceGame.Web.Models:

    - task: NuGetCommand@2
      displayName: 'Publish NuGet package'
      inputs:
        command: push
        feedPublish: '$(System.TeamProject)/Tailspin.SpaceGame.Web.Models'
        allowPackageConflicts: true
      condition: succeeded()
    

    feedPublish especifica el nombre de la fuente en la que se publicará. El formato del nombre es <projectName>/<feedName>, donde:

    • $(System.TeamProject) es una variable predefinida que hace referencia al nombre del proyecto, por ejemplo, "Space Game - web - Dependencies".
    • Tailspin.SpaceGame.Web.Models es el nombre del feed que proporcionó en el ejercicio anterior.

Establecer permisos

Para poder configurar y ejecutar la canalización, debe conceder al servicio de Build los permisos correctos.

  1. Vaya al proyecto en Azure DevOps.
  2. Seleccione Artefactos en el menú de la izquierda.
  3. Seleccione el icono Configuración en la parte superior derecha de la pantalla y, a continuación, seleccione la pestaña Permisos .
  4. Seleccione el botón Agregar usuarios o grupos .
  5. En el campo Usuarios/grupos , escriba Space Game - web - Dependencies Build Service, seleccione el rol Colaborador y seleccione Guardar.

Creación de la canalización en Azure Pipelines

Aquí se muestra cómo configurar una segunda canalización para compilar el paquete y cargar ese paquete en Azure Artifacts.

  1. En Azure DevOps, vaya al proyecto Space Game - web - Dependencies .

  2. En el menú de la izquierda, seleccione Canalizaciones.

  3. Seleccione Nueva canalización.

  4. En la pestaña Conectar , seleccione GitHub.

  5. En la pestaña Seleccionar , seleccione mslearn-tailspin-spacegame-web-models.

    Si se le solicita, escriba las credenciales de GitHub. En la página que aparece, desplácese hasta la parte inferior y seleccione Aprobar e instalar.

  6. En la pestaña Revisar , verá el archivo azure-pipelines.yml de la nueva canalización.

  7. Seleccione Ejecutar.

  8. Vea la ejecución de canalización.

  9. Vaya a la pestaña Artefactos .

  10. En la lista desplegable de la parte superior, seleccione Tailspin.SpaceGame.Web.Models.

    Captura de pantalla que muestra la ubicación del paquete en la lista desplegable.

    Verá el paquete resultante , Tailspin.SpaceGame.Web.Models, en Azure Artifacts.

    Captura de pantalla del paquete en Azure Artifacts, que muestra la versión 1.0 del paquete.

  11. Seleccione el paquete para ir a la página de detalles. A continuación, copie el número de versión en una ubicación donde pueda acceder a él más adelante.

    Captura de pantalla de Azure Artifacts que muestra los detalles del paquete. Resaltado es el número de versión del paquete.

    Use este número de versión en la unidad siguiente.