Variables de entorno predefinidas: ¿Cómo se utilizan?

Variables de entorno predefinidas: ¿Cómo se utilizan?

¿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.