top of page

¿Cómo funcionan las extensiones pre-construídas de Azure DevOps?


¿Alguna vez te has preguntado cómo se comporta cierta extensión en Azure DevOps?¿Quieres ojear su implementación ya sea para entender su funcionamiento, para conocer nuevos patrones o prácticas para guiar el desarrollo de una propia o quizá tomar de referencia alguna funcionalidad?



Una manera sencilla es analizando el código fuente de las extensiones publicadas por Microsoft que reposan en su repositorio.



En este repositorio se encuentran todas las tareas que provee Microsoft para Azure Pipelines y Team Foundation Server.


Pero hay otras formas de las cuales hablaré en este artículo que te permiten hacer lo mismo incluso con extensiones propias (en caso de que no cuentes con su implementación). Es posible desempaquetar una extensión publicada en el Marketplace o usar una extensión privada instalada en la organización de Azure DevOps.



1. Extensión en el Marketplace


Cuando se crea una extensión se genera un archivo .vsix que es un archivo empaquetado1. Un .vsix se utiliza para distribuir una extensión personalizada que se puede utilizar en los servicios de Azure DevOps. Luego, este archivo se debe publicar en la tienda de extensiones de Azure DevOps junto con un manifest llamado vss-extension.json que describa la extensión y sus características.


Para este escenario tomaré la siguiente extensión de prueba de mi autoría:



Una vez tengamos la extensión haremos el paso normal de instalación pero en vez de instalar en nuestro Azure DevOps, vamos a descargar el archivo para un Azure DevOps Server.


Este el archivo que se descarga:



Como comentaba el archivo .vsix básicamente es un empaquetado, es un comprimido que utiliza el formato ZIP y esto lo podemos validar con el comando file desde la terminal de comandos. El comando file se utiliza en sistemas operativos tipo Unix/Linux para identificar el tipo de archivo de un archivo dado, es decir, determinar su formato o tipo MIME.


Esta es la salida de ejecutar “file AT-Test.prueba-extension-tutorial-0.0.1.vsix”

Como vemos es un archivo .zip que podemos descomprimir cambiando la extensión del archivo .vsix a .zip o directamente con algún software de compresión que acepte este formato.


Una vez que se haya descomprimido el archivo, se podrá examinar el contenido de la extensión, como los archivos de código fuente, las imágenes, los archivos de recursos y el archivo manifest.


Este es el resultado y como se observa se encuentra toda la estructura de la extensión:



2. Extensión dentro de la Organización


Para esto haremos uso de la siguiente API



Esta API de Azure DevOps permite obtener información sobre todas las tareas de la organización. Mediante ella vamos a identificar el id de la extensión y la versión en específico que queremos inspeccionar.


Para identificar de una forma fácil la extensión se puede buscar por el nombre o el friendlyName.



Con los datos del Id y versión vamos a generar la siguiente ruta


Para este escenario la ruta sería la siguiente:


Esto descarga un comprimido con el código de la extensión

Descomprimimos y esta es la estructura del archivo descargado.


Con esto podemos usar la ingeniería inversa para conocer más el funcionamiento de una extensión, esto puede ser útil para varios propósitos:


1. Inspeccionar el contenido de la extensión: Esto es especialmente útil si queremos entender cómo funciona una extensión o establecer estándares para el desarrollo de extensiones propias.


2. Realizar modificaciones en la extensión: Podemos modificar el código fuente de la extensión, agregar nuevos recursos o imágenes, o incluso modificar el archivo manifest para cambiar la configuración de la extensión. Sin embargo, es importante tener en cuenta que cualquier modificación que realicemos puede afectar la funcionalidad de base de la extensión.


3. Crear una versión personalizada de la extensión: Al descomprimir un archivo .vsix y modificar su contenido, podemos crear una versión personalizada de la extensión que se ajuste a nuestras necesidades específicas. Esto puede ser especialmente útil si necesitamos una funcionalidad específica que no está disponible en la versión original de la extensión.

"No hay problema que un buen código no pueda resolver" y conocer las “entrañas” de lo que usamos es la mejor manera de entender con qué fin lo usamos y cómo podemos sacarle el mejor provecho.




¡Gracias por leer!





128 visualizaciones8 comentarios

Entradas Recientes

Ver todo

8 Comments

Rated 0 out of 5 stars.
No ratings yet

Add a rating
Guest
Jul 04, 2023
Rated 5 out of 5 stars.

Excelente aporte Antony, muchas gracias.

Like

Guest
Jun 30, 2023
Rated 5 out of 5 stars.

Exelente!

Like

Guest
Jun 30, 2023
Rated 5 out of 5 stars.

Muy útil!! Gracias 🙏

Like

Guest
Jun 29, 2023
Rated 5 out of 5 stars.

Excelente Aporte!! Gracias

Like

Guest
Jun 29, 2023
Rated 5 out of 5 stars.

Excelente artículo

Like
bottom of page