Wilson Vargas
Wilson Vargas

Un programador enamorado de su código.

Wilson Vargas
Author

Un chico con una gran experiencia en el arte del desarrollo software. Desarrollador de aplicaciones de móviles, especialista en ASP.Net, Xamarin y tecnologías de computo en la Nube en especial Azure.

Share


Suscribete


Mantente al tanto de mis nuevos artículos

Tags


Featured on Planet Xamarin badge

Twitter


Cómo crear tu propio servidor Nuget en Azure

Wilson VargasWilson Vargas

Muchas veces me ha tocado ser parte de un gran equipo de desarrollo o trabajar solo en mis propios proyectos, y en el transcurso de estos me he topado con algo muy común en todos, la manera de reutilizar librerías especificas con ciertas funciones que solo son utilizadas en las aplicaciones que estoy construyendo.

Una buena forma de hacerlo es la creación de paquetes, almacenar en un repositorio y hacer referencia a ellos cuando sea necesario. Nuget te permiten tener varias versiones de un mismo paquete y especificar las dependencias que necesitas. Si usas con regularidad NuGet Package Manager de Visual Studio, entonces ya estás muy familiarizado con este concepto.
Este artículo te mostrará cómo puedes crear tu propio servidor NuGet privado y cómo alojarlo en Azure, para así poder disponer de todos los beneficios que ofrece esta plataforma.

Prerrequisitos

No sé si sea necesario mencionar que necesitas Visual Studio para esto, pero lo voy hacer: Necesitas Visual Studio para seguir este tutorial :P . Cualquier edición reciente debería funcionar, de hecho, capturas de este artículo las he hecho de Visual Studio 2013.

Y, obviamente, también necesitarás una suscripción Azure. Si no tienes una, existen tres formas de conseguir Azure:

Empecemos

En Visual Studio vamos a Archivo -> Nuevo -> Proyecto para crear un nuevo proyecto.
De la lista de plantillas elegir Aplicación Web ASP.Net vacía como se muestra en la imagen:

Tu explorador de soluciones debe quedar de la siguiente manera:

Ahora, clic derecho sobre el proyecto que has creado y luego clic en Administrador de paquetes Nuget.

Para que este ejemplo no sea muy complicado, vamos a utilizar un paquete que hicieron los chicos de Nuget, no es necesario inventar la rueda otra vez…
En el administrador de paquetes Nuget buscaremos Nuget.Server y lo instalaremos

Aceptamos los términos

Ahora tu explorador de soluciones se debe ver de la siguiente manera:

Presiona F6 y asegúrate de que la solución compile sin problemas.
Si tu aplicación compila sin problemas eso quiere decir que estás casi listo de tener un Servidor Nuget privado, ahora solo una cosa más por hacer antes de que puedas ejecutar y desplegar tu solución, básicamente es revisar la configuración del proyecto. Abre el archivo web.config y revisa las siguientes líneas de código:

Para garantizar que sólo los usuarios autorizados podrán añadir y eliminar paquetes, configura la llave llamada requireApiKey en true y la llave ApiKey asignando una llave con un valor que especifico que deseas usar. (Por favor, asegúrate de usar una clave diferente a la de este ejemplo). Finalmente, deja la llave packagesPath en su valor predeterminado.
Ahora presiona F5, ponte a rezar para que funcione y en tu navegar se debe mostrar lo siguiente:

Ahora ya tenemos un servidor NuGet ejecutándose localmente, el siguiente paso es desplegarlo en Azure.

Desplegando nuestra solución en Azure

Una de las características que me fascina de Visual Studio, es la integración completa que tiene con Azure, sobre todo al momento de desplegar crear y desplegar Sitios Web directamente desde Visual Studio. En el explorador de soluciones, clic derecho sobre tu proyecto y luego clic en Publicar.

En la sección Perfil, seleccionamos Microsoft Azure Websites

Clic en Iniciar Sesión y te auténticas con la dirección de correo que usas para acceder a Azure.

Una vez que hayas iniciado sesión, clic en Nuevo… para crear un nuevo sitio web.

Elige un nombre para el sitio que no haya sido utilizado. Yo voy a utilizar el nombre server-nuget para el resto de este artículo. Mi servidor Nuget estará disponible en: http://server-nuget.azurewebsites.net/ (por supuesto, debes utilizar un nombre diferente porque yo ya utilice este).

Luego, a menos que tengas varias suscripciones, deja la opción por defecto. Elige la región que esté más cerca de tus usuarios con el fin de mejorar el rendimiento. Finalmente, no hay necesidad de una base de datos para este proyecto.

Ahora, haz clic en Crear para poder crear el sitio web en Azure. Una vez que se ha creado, te muestra la pantalla final antes de su publicación. Contiene detalles de la conexión, como la dirección de la página, el nombre de usuario y la contraseña. Todos los campos deben estar correctamente pre-poblados, puedes hacer clic en Validar Conexión para asegurarte de que los datos son correctos.

Cuando esté listo, debes hacer clic en Publicar para desplegar el servidor NuGet a la página web.

Una vez que Visual Studio complete este proceso puedes ir a la dirección con la cual has creado tu sitio web, en mi caso http://server-nuget.azurewebsites.net/. Asegúrate de que el servicio se está ejecutando, debes ver algo como esto:

Publicando tu primer paquete Nuget

Descarga NuGet.exe de http://nuget.codeplex.com/releases/view/121838 (o buscar la última versión) y asegúrate de que esté en el path para que puedas ejecutarlo desde la línea de comandos. De hecho, NuGet.exe es una herramienta de línea de comandos que te permite crear y publicar paquetes. Para efectos de este artículo, he creado un paquete de ejemplo (Ejemplo.Package.2.1.23.nupkg), y si quieres leer más sobre cómo crear paquetes NuGet, hay una excelente documentación en nuget.org.

Ahora estás listo para publicar primer paquete. Desde la línea de comandos, ejecuta:

Nuget push <Nombre de tu paquete> -p <Direccion de tu servidor Nugte> <ApiKey de tu servidor Nuget>

Cuando termine este proceso puedes ver que en te da un mensaje de que se publicó correctamente.

También puedes verificar si tu paquete se ha publicado con éxito yendo a la siguiente dirección (en mi caso): http://server-nuget.azurewebsites.net/nuget/Packages

Descarga tus propios paquetes desde Visual Studio

Ahora que tienes tu propio servidor de paquetes NuGet, puedes configurar Visual Manager Package Studio para acceder a tus propios paquetes.
En Visual Studio, vas al administrador de Paquetes Nuget haciendo clic derecho a tu proyecto, en la nueva venta que aparece vas a Configuraciones.

Ahora, debes hacer en el signo + (en la esquina superior derecha) para añadir una nueva fuente.

Debes llenar el campo nombre con un valor adecuado, en este caso Nuget Privado y establecer la dirección url de origen en mi caso: http://server-nuget.azurewebsites.net/

Ahora, puedes añadir tus propios paquetes privados para tus proyectos. Para hacerlo en un determinado proyecto, has clic en referencias y seleccione Administrar paquetes NuGet....
En el lado izquierdo, selecciona Nuget Privado y Ejemplo.Package.2.1.23.nupkg debe aparecer:

Ahora tienes un entorno de desarrollo prácticamente de profesionales donde se puede publicar paquetes privados para su reutilización a través de varios proyectos.

Conclusión

En este artículo, he dado algunos detalles cómo crear tu propio servidor de paquetes NuGet privado y cómo publicarlo en Windows Azure. Esto es muy fácil de configurar y su servidor debe estar ejecutándose desde la nube en unos 20 minutos.

Con esto, puedes crear paquetes y publicarlos para compartir con tu equipo de desarrollo o para reutilizarlos en futuros proyectos.

Una de las grandes ventajas de Azure es la escalabilidad, tengo pensado escribir un artículo de cómo poder configurar tus sitios web para escalar automáticamente horizontal o verticalmente dependiendo de la carga de trabajo del servidor.

Por favor, háganme saber cómo van con su servidor NuGet privado. ¿Lo utilizan en el trabajo? ¿O lo utilizas en casa para proyectos personales? ¿Te encontraste con alguna limitación o tienes algún problema? Estoy encantado de poder ayudar en cualquiera de tus dudas, nos leemos pronto.

Un chico con una gran experiencia en el arte del desarrollo software. Desarrollador de aplicaciones de móviles, especialista en ASP.Net, Xamarin y tecnologías de computo en la Nube en especial Azure.

Comentarios