¿Cuáles son las variables de entorno predefinidas de GitLab?
GitLab provee una gran lista de variables predefinidas, la lista de estas variables puede ser consultada en el sitio https://docs.gitlab.com/ee/ci/variables/predefined_variables.html.
Por ejemplo la variable CI_COMMIT_SHORT_SHA provee un identificador único asociado al hash de nuestro commit.
Vamos a abrir el archivo src/pages/index.js y podemos agregar la siguiente línea como parte del cuerpo del componente REact.
<div>Version %%VERSION%%</div>
Para mostrar la versión podemos reemplazar el contenido utilizando el comando sed posterior a la compilación del proyecto Gatsby.
build website:
stage: build
script:
- npm i
- npm i -g gatsby-cli
- gatsby build
- sed -i "s/%%VERSION%%/$CI_COMMIT_SHORT_SHA/" ./public/index.html
Al empujar los cambios veremos que en el lugar del texto %%VERSION%% podemos ver el valor del hash del commit.
Tests sobre deployments
Al finalizar el despliegue de una aplicación podemos realizar un test sobre un deployment. Para ello creamos un nuevo stage para este propósito.
stages:
- build
- test
- deploy
- deployment test
image: node
build website:
stage: build
script:
- npm i
- npm i -g gatsby-cli
- gatsby build
- sed -i "s/%%VERSION%%/$CI_COMMIT_SHORT_SHA/" ./public/index.html
artifacts:
paths:
- ./public
test index:
stage: test
script:
- grep "Gatsby" "./public/index.html"
deploy static website:
stage: deploy
script:
- npm i -g surge
- surge --project ./public --domain arumals-static.surge.sh
test deployment:
image: alpine
stage: deployment test
script:
- apk add --no-cache curl
- curl -s "https://subdominio.surge.sh/" | grep -q "Hi people"
- curl -s "https://subdominio.surge.sh/" | grep -q "$CI_COMMIT_SHORT_SHA"
Al ejecutar el post deployment usamos la imagen optimizada alpine, instalamos sobre esta curl y verificamos que sobre la url que hemos desplegado sea visible el contenido de la página.