Variables de entorno predefinidas: ¿Cómo se utilizan? de 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 (archive.org).

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.