Seguro que en más de una ocasión has necesitado devolver algunos valores entre tarea y tarea de Azure DevOps. En mi caso, he estado creando algunos recursos de Microsoft Azure de manera dinámica, que luego he tenido que usar en los siguientes pasos. Es por ello que he necesitado recuperar el endpoint o la clave de acceso, para poder utilizarlo después. En este artículo te muestro cómo.
Sintaxis para la exportación
Para poder exportar cualquier variable a Azure DevOps debemos seguir esta sintaxis en nuestros scripts:
##vso[task.setvariable variable=VARIABLE_NAME]VALUECon esta cadena, publicamos fuera de nuestra tarea la variable que queramos, pudiendo reutilizarla en pasos posteriores.
En este ejemplo puedes ver cómo exportar valores en un script en bash (Linux):
#!/bin/bash
#Variables
RESOURCE_GROUP=CosmosDB$RANDOM
LOCATION=northeurope
ACCOUNT_NAME=cosmos$RANDOM
#Create a resource group
az group create --name $RESOURCE_GROUP --location $LOCATION --tags
#Create a CosmosDB account
az cosmosdb create --resource-group $RESOURCE_GROUP --name $ACCOUNT_NAME --kind GlobalDocumentDB
#Get the primary key
key=$(az cosmosdb list-keys --name $ACCOUNT_NAME --resource-group $RESOURCE_GROUP --query "primaryMasterKey" --output tsv)
#Get the endpoint
endpoint=$(az cosmosdb show --name $ACCOUNT_NAME --resource-group $RESOURCE_GROUP --query "documentEndpoint" --output tsv)
echo "##vso[task.setvariable variable=CosmosDBRg]$RESOURCE_GROUP"
echo "##vso[task.setvariable variable=CosmosDBAccountName]$ACCOUNT_NAME"
echo "##vso[task.setvariable variable=CosmosDBEndpoint]$endpoint"
echo "##vso[task.setvariable variable=CosmosDBAuthKey;issecret=true]$key"Y en este otro en un script batch (Windows):
#Variables
SET RESOURCE_GROUP=CosmosDB%RANDOM%
SET LOCATION=northeurope
SET ACCOUNT_NAME=cosmos%RANDOM%
#Create a resource group
CALL az group create --name %RESOURCE_GROUP% --location %LOCATION%
#Create a CosmosDB account
CALL az cosmosdb create --resource-group %RESOURCE_GROUP% --name %ACCOUNT_NAME% --kind GlobalDocumentDB
#Get the primary key
CALL az cosmosdb list-keys --name %ACCOUNT_NAME% --resource-group %RESOURCE_GROUP% --query "primaryMasterKey" --output tsv>primaryKey
set /p key= < primaryKey
#Get the endpoint
CALL az cosmosdb show --name %ACCOUNT_NAME% --resource-group %RESOURCE_GROUP% --query "documentEndpoint" --output tsv>documentEndpoint
set /p endpoint= < documentEndpoint
echo ##vso[task.setvariable variable=CosmosDBRg]%RESOURCE_GROUP%
echo ##vso[task.setvariable variable=CosmosDBAccountName]%ACCOUNT_NAME%
echo ##vso[task.setvariable variable=CosmosDBEndpoint]%endpoint%
echo ##vso[task.setvariable variable=CosmosDBAuthKey;issecret=true]%key%Como ves, en ambos, creamos las variables CosmosDBRg, CosmosDBAccountName, CosmosDBEndpoint y CosmosDBAuthKey. Estas pueden ser recuperadas directamente en una tarea del tipo “Command Line” de Azure DevOps:

O también es posible utilizarlas dentro de otro script. En el caso de Windows funciona de esta manera:
ECHO %CosmosDBAccountName%
ECHO %CosmosDBRg%
CALL az group delete --name %CosmosDBRg% --yes --no-waitEn el caso de Linux necesitas pasar como parámetro la variable a través del campo Arguments:

y después utilizarla de la siguiente manera:
#!/bin/bash
az group delete --name $1 --yes --no-waitEl código de ejemplo que he utilizado es este en GitHub.
¡Saludos!
Si quieres seguir aprendiendo sobre contenedores, tienes una lista de vídeos en mi canal de YouTube 👇🏻
Docker CLI: Comandos esenciales que todo developer debe conocer
Domina los Dockerfiles: De lo básico a multi-stage
4 formas de crear un Dockerfile sin empezar desde cero
¿No entiendes las redes en Docker? Mira este vídeo
Cómo NO perder tus datos en Docker: Guía definitiva
Deja de configurar contenedores a mano: Aprende Docker Compose 🐙
Cómo subir tus imágenes a Docker Hub (Guía paso a paso)
Publica y automatiza tus imágenes de Docker con GitHub


¿Qué son los contenedores? Docker desde cero para principiantes
return(GiS); julio 10, 2024 10:00 am