Optimisation des phases de la CI
Sur cette page
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.