Gitlab

Optimisation des phases de la CI

Utiliser les artefacts

Les arfefacts sont des éléments de l’application qui sont générés lors du build (lors de l’intégration de l’application). Cela peut concerner l’installation de librairies tierces (vendors) dont l’application a besoin pour fonctionner, mais qui ne sont pas versionnées; ou encore la génération des assets (minification css ou js), de scripts ou d’images etc…

Grâce à Gitlab, ces éléments peuvent être stockés de manière temporaire et être ajoutés au déploiement de l’application.

Par exemple, voici une étape d’installation des librairies tierces avec Composer, qui sera exécutée par la CI Gitlab pour une application PHP :

build-php:
  stage: build-php
  image: bearstech/php-composer:8.1
  script:
    - composer install
  artifacts:
    expire_in: 1 hour
    paths:
      - vendor

L’artefact “vendor” peut ensuite être ajouté aux packages Gitlab afin d’être relié à une commit de l’application :

package-artifacts:
  stage: release
  script:
    - tar -zcv -f vendor.tar.gz vendor
    - curl --header "JOB-TOKEN:$CI_JOB_TOKEN" --upload-file vendor.tar.gz  "$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/vendor/$CI_COMMIT_SHA/vendor.tar.gz"

L’intérêt d’utiliser la variable CI_COMMIT_SHA pour stocker l’artefact est de rendre possible le “rollback” en cas de défaillance de l’application, en rejouant une pipeline d’un commit précédent : le système de déploiement du workflow Bearstech viendra remplacer le code non fonctionnel dans l’artefact par celui qui avait été validé précédemment.

Utilisation du cache

Les phases de build peuvent prendre du temps. Il est possible d’en gagner en utilisant un cache entre les stages. Par exemple pour ne pas avoir à reconstruire des assets à chaque stage.

L’utilisation du cache est documenté ici et des cas d’usage sont listés ici.

Top