CI/CD vers Nextcloud"> CI/CD vers Nextcloud" />

CI/CD vers Nextcloud">Publier des documents LaTeX avec git et CI/CD vers Nextcloud

Par @Vincent-Xavier Jumel dans le
Tags : #Technique, #Git, #LaTeX,
/CD vers Nextcloud&via=">Twitter Google+ /CD vers Nextcloud">Facebook CI/CD vers Nextcloud" rel="nofollow" onclick="javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=450,width=650');return false;">Linkedin CI/CD vers Nextcloud&body=Viens découvrir un article à propos de [Publier des documents LaTeX avec git et CI/CD vers Nextcloud] sur le site de Vincent-Xavier Jumel. https://blog.thetys-retz.net/post/2020/02/27/publier-des-documents-latex-avec-git-et-cicd-vers-nextcloud" title="Share by Email" target="_blank">Mail

Présentation du problème

L’idée générale est d’automatiser la publication de fichier LaTeX lors de la compilation vers un site web de dépot, typiquement Nextlcoud. On peut imaginer d’autres cas d’usages et faire évoluer le besoin vers d’autres finalités.

Le principe général est d’utiliser les concepts de CI/CD pour construire les fichiers, puis les publier. On peut utiliser le test pour vérifier l’orthographe et la grammaire (ce qui n’est pas fait pour l’instant)

L’idée générale de la CI/CD

CI signifie Intégration Continue en anglais et CD Déploiement Continu.

J’ai séparé les deux actions qui correspondent à deux besoins différents : le premier, c’est de vérifier que le dernier document produit compile correctement, alors que le deuxième correspond à un besoin de publication automatique des documents sur un espace (ou sur un autre)

Intégration continue

L’idée générale est de tester (au sens des tests unitaires) et de construire régulièrement le code. On utilise le mécanisme des hooks de git pour ça. Chaque événement de réception de code déclenche la lecture du fichier .gitlab-ci.yml qui permet de décider de ce qui doit être fait.

Le fichier est donné ici :

# On télécharge une image contenant la chaine de compilation.
image: vincentxavier/latex

# On entre dans la partie build.
# On met à jour l'image (souvent, il n'y a rien à faire)
# ON récupère la liste des derniers fichiers tex modifiés pour savoir quels
# sont les fichiers à construire
# On sauvegarde les fichiers construits
build:
  stage: build
  script:
    - apt update
    - apt dist-upgrade -y --without-install-recommends
    - for i in `git show --no-abbrev-commit --oneline --name-only $CI_COMMIT_SHA | tail -n +2 | grep 'tex$' | tr '\n' ',' | sed -e 's/,/\" \"/g' -e 's/^/\"/' -e 's/ "$/\n/'` ; do  latexmk -pdf $i ; done
  artifacts:
    paths:
      - "*.pdf"

# Dans l'étape de déploiement, on téléverse les fichier dans un nextcloud
# Il suffit ici de trouver la bon API pour envoyer des fichiers vers le
#  service  de votre choix.
# $USER et $PASS sont des variables de gitlab
deploy:
  stage: deploy
  script:
    - for i in *.pdf ; do curl -u $USER:$PASS -T "$i" "https://educloud.ac-creteil.fr/remote.php/dav/files/vjumel/2deGT/" ; done

En savoir plus sur les variables.

La construction du Docker

Ce projet a été l’occasion de découvrir Docker et de l’utiliser pour construire une image spécifique à mes besoins : LaTeX et quelques packages Python relatifs au calcul scientifique. On peut lire les paquets sur https://framagit.org/vincentxavier/latex-dockerfile/-/blob/master/Dockerfile.

Cette image est elle aussi publiée sur Docker en utilisant gitlab-ci et mise à jour toutes les semaines.