Herramientas de desarrollo: AppVeyor

Tiempo de lectura: 5 minutos
La imagen muestra el logo de Nuget y AppVeyor

Hoy vengo con otra entrada de esas que me hacen ilusión, y es que volvemos a colaborar con José de VariableNotFound, esta vez para hablar de cómo crear paquetes Nuget (con SourceLink, por supuesto), sobre el repositorio Nuget.org, y sobre como publicar nuestros paquetes automáticamente con un sistema de CI/CD como AppVeyor.

En la primera parte de la entrada, que se ha publicado en VariableNotFound hablábamos de cómo crear un paquete Nuget con SourceLink y publicarlo en Nuget.org (si no sabes lo que es, deberías echarle un vistazo a la entrada hablando del tema). Como comentábamos al final, hacerlo a mano se hace tedioso, por eso es una buena idea utilizar una herramienta de Despliegue Continuo (CD por sus siglas en ingles).

En su momento publique en el blog de compañero de trabajo unas entradas sobre AppVeyor en las que explicaba como añadir AppVeyor a nuestro repositorio. Hoy, vamos a continuar aquella entrada añadiendo el CD hacia Nuget.org (aunque repasemos la parte que es común).

En primer lugar, nos tendremos que crear una cuenta en AppVeyor, algo que es muy fácil si tenemos cuenta de GitHub. Simplemente vamos a «Sign in» y seleccionamos iniciar con GitHub (u otros servicios).

Añadiendo AppVeyor a nuestro repositorio

Login AppVeyor

Con nuestra cuenta creada, añadimos el proyecto con el botón «NEW PROJECT»

Señala el botón de crear proyecto en AppVeyor

Y después, seleccionamos el proyecto que queremos, y pulsamos sobre el botón «Add»

Con esto, nuestro proyecto se compilará automáticamente cada vez que hagamos un «push» al repositorio y ejecutará las pruebas unitarias, aunque obviamente fallará porque aún no hemos configurado que tiene que hacer.

Para configurarlo, vamos a la pestaña «settings»

En primer lugar, en el menú «General» vamos a tener que bajar hasta casi el final, y seleccionar «On» en la opción «.NET Core .csproj patching «, con esto, vamos a conseguir cambiar la versión del paquete a la que queramos. Recordemos, qué si intentamos resubir un paquete con la misma versión que uno que ya existe, fallará. Como lo que nos interesa es que la versión se actualice y no se repita, vamos a utilizar la variable de AppVeyor «version«, la cual depende de los campos «Next build number» y «Build version format«, siendo el primero el número de compilación (es autoincremental) y el segundo la versión «Major» que queremos que tenga nuestro paquete, una vez hecho, pulsamos sobre el botón «Save» para guardar los cambios.

La imagen muestra como activar el parcheo de versión del paquete Nuget en AppVeyor

Pasamos al menú «Environment», en este solo vamos a necesitar seleccionar la imagen de Visual Studio 2017 y pulsar en el botón «Save».

La imagen muestra como seleccionar Visual Studio 2017 en AppVeyor

Ahora vamos con el menú «Build», aquí le vamos a indicar como tiene que hacer la compilación, además de ejecutar scripts para preparar los prerrequisitos que tengamos, por ejemplo, hacer un «nuget restore». Esta es quizás la parte más compleja del trabajo.

Lo primero, seleccionamos la configuración «Release» escribiéndolo en el apartado «Configuraton» al inicio, y después hay que bajar casi hasta el final para seleccionar que queremos hacer un paquete («Package NuGet projects»), que queremos incluir los símbolos para SourceLink («Include NuGet symbol packages»), y por último y muy importante (si no, no compilará), añadir un comando previo a la compilación que ejecutará un «nuget restore».

La imagen muestra la configuración del menú "Build"

Con esto, tras pulsar en «Save», si hacemos cambios sobre el repositorio, podemos ver que ejecuta toda la integración continua.

La imagen muestra la salida de la consola

Configurando el despliegue en Nuget.org desde AppVeyor

Por último, vamos al menú «Deployment», y añadimos un nuevo despliegue pulsando sobre «Add deployment» y seleccionando Nuget en la lista desplegable. Ahora, simplemente introducimos nuestra API Key, le decimos que no queremos publicar un paquete de símbolos, y por ultimo y MUY IMPORTANTE, como no queremos que se haga deploy de cada push, añadimos la condición de que para hacer un deploy, tiene que ser un push con un «tag», esto lo conseguimos poniendo como condición que la variable de AppVeyor «APPVEYOR_REPO_TAG» sea true.

La imagen muestra la configuración de el despliegue

Si con esto pulsamos sobre salvar, y mandamos un nuevo tag al repositorio, veremos cómo al igual que si lo enviábamos manualmente, aparece disponible en Nuget.org. Como siempre, dejo el código fuente en GitHub.

En próximas entradas, hablaremos sobre como utilizar Azure Pipelines como CD además de CI y las ventajas que tiene cerrar el ciclo CI/CD.

Deja un comentario