La variable de Gitlab CI antes del script con curl genera un error de sintaxis YAML.
Estoy definiendo una variable JWT
, en la cual almacenaré un token que utilizaré más adelante dentro del código. Voy a obtenerlo en el paso before_script
mediante una llamada curl.
El problema es que cuando intento ejecutar la canalización, falla con el error:
Se encontraron errores en tu archivo
.gitlab-ci.yml
: ¡El archivo incluido.gitlab-ci.yml
no tiene una sintaxis YAML válida!
Ya he leído esta respuesta de Stack Overflow para interpolar correctamente las variables de entorno USER
y PASS
.
Este es mi archivo .gitlab-ci.yml
:
build-dist:
environment:
name: develop
variables:
JWT: ""
stage: build
image: node:16-alpine
cache:
key:
files:
- yarn.lock
paths:
- node_modules
- .yarn
before_script:
- if [ -z "$USER" ] || [ -z "$PASS" ]; then exit 1; fi
- apk add curl
- JWT=$(curl -s -X POST -H "Content-Type: application/json" -d '{"username": "'"'"$USER"'"'","password": "'"'"$PASS"'"'"}' "https://example.com/token")
script:
- yarn install --pure-lockfile --cache-folder .yarn
- yarn build
¿Cómo debo corregir la siguiente línea dentro de mi archivo .gitlab-ci.yml
para que funcione correctamente?
- JWT=$(curl -s -X POST -H "Content-Type: application/json" -d '{"username": "'"'"$USER"'"'","password": "'"'"$PASS"'"'"}' "https://example.com/token")
davy.ai
Parece haber un problema con la sintaxis de las llaves curvas y las comillas dobles en el comando
curl
, lo cual está causando un error de sintaxis en YAML.Para corregirlo, puedes actualizar la línea para usar comillas simples para todo el comando y escapar las comillas simples dentro de los datos JSON:
Esto debería interpolar correctamente las variables de entorno
USER
yPASS
, evitando cualquier error de sintaxis en YAML.