Skip to main content

Construction des assets front

Il est peut probable que vous puissiez utiliser ces jobs tel quels mais, vous pouvez vous en servir comme exemple à mettre dans votre .gitlab-ci.yml.

Utilisation

variables:
CI_TEMPLATE_VERSION: &CI_TEMPLATE_VERSION main
PATH_TO_THEME: "./web/themes/wam_theme" # dossier contenant le gulp file / package.json...
ASSETS_IMAGE: "registry.gitlab.com/kgaut/docker-node-images:19"
ASSETS_ARTEFACTS: "./website/themes/wam_theme/css"
ASSETS_ARTEFACTS_TARGET: "./website/themes/wam_theme"

include:
- project: kgaut/gitlab-ci-templates
ref: *CI_TEMPLATE_VERSION
file:
- '/templates/generic/stages-variables-extends.yml'
- '/templates/generic/assets.yml'

Variables nécessaires

Nom de la variableContenuExempleRemarque
PATH_TO_THEMELe chemin vers le dossier contenant le package.json./web/themes/wam_themesi à la racine, renseignez ./
ASSETS_IMAGELe tag de l'image à utiliser pour la compilationnode:19
ASSETS_ARTEFACTSLe dossier contenant le resultat du build (qui sera envoyé sur le serveur )./web/themes/wam_theme/css
ASSETS_ARTEFACTS_TARGETLe dossier cible devant contenir le résultat du build./web/themes/wam_theme

Liste des jobs

prod:assets-generation

Compilation des assets pour la prod

preprod:assets-generation

Compilation des assets pour la preprod, uniquement lorsqu'il y a un changement dans le dossier 'web/themes/custom'

** Note :** si web/themes/custom n'est pas correcte pour votre infra, vous devrez alors surchager le job preprod-assets-generation-rule suivant dans votre .gitlab-ci.yml en changeant la dernière ligne :

.preprod-assets-generation-rule:
rules:
- if: $ENV_PREPROD_DISABLED != "1" && $CI_COMMIT_BRANCH == $PREPROD_BRANCH && $CI_PIPELINE_SOURCE != "schedule"
changes:
- "web/themes/custom/**/*"

prod:assets-deploy

Rsync des assets vers la prod

preprod:assets-deploy

Rsync des assets vers la preprod, uniquement lorsqu'il y a un changement dans le dossier $CUSTOM_THEMES_FOLDER_PATH (par défaut : 'web/themes/custom').

Surcharge

Il est probable que vous ne puissiez utiliser ces jobs directement, voici ce que vous pouvez copier / coller dans votre .gitlab-ci.yml pour l'adapter à vos besoin :

variables:
PATH_TO_THEME: "./website/themes/cb_tools"
ASSETS_IMAGE: "registry.gitlab.com/kgaut/docker-node-images:19"
ASSETS_ARTEFACTS: "./website/themes/cb_tools/css"

.assets-generation:
extends:
- .job-docker
image: $ASSETS_IMAGE
stage : deploy
script:
- cd $PATH_TO_THEME
- npm ci
- npm run sass-compile
artifacts:
paths:
- $ASSETS_ARTEFACTS
expire_in: 20 minutes

prod:assets-generation:
extends:
- .prod
- .assets-generation

preprod:assets-generation:
extends:
- .preprod
- .assets-generation

.assets-deploy:
extends:
- .ssh
stage : deploy
script:
- rsync -avhzi --delete --stats $ASSETS_ARTEFACTS -e ssh $SSH_USER@$SSH_HOST:$PROJECT_ROOT/$PATH_TO_THEME
- $SSH_CHAIN "$DRUSH_BIN $DRUSH_ALIAS cr"

prod:assets-deploy:
extends:
- .prod
- .assets-deploy
needs:
- prod:assets-generation

preprod:assets-deploy:
extends:
- .preprod
- .assets-deploy
needs:
- preprod:assets-generation