...
 
Commits (3)
......@@ -6,8 +6,8 @@ building-latex-master:
- apt-get update --yes
- apt-get install imagemagick --yes
- apt-get install wget --yes
- bash get_assets.sh
- bash make_build.sh
- bash build.sh get_assets
- bash build.sh make
artifacts:
paths:
- lettre-UTC-ex.pdf
......@@ -21,13 +21,22 @@ building-latex-master:
tags:
- docker
building-latex-other-branch:
stage: build
script:
- latexmk -pdf main.tex
- apt-get update --yes
- apt-get install imagemagick --yes
- apt-get install wget --yes
- bash build.sh get_assets
- bash build.sh make
artifacts:
paths:
- "*.pdf"
- lettre-UTC-ex.pdf
- latex-lettre-UTC.zip
- lettre-ex-0.png
- lettre-ex-1.png
expire_in: 2 week
except:
- master
......
Intégration Continue : **LaTeX** et **GitLab**.
=======
- [Démonstration](#d%C3%A9monstration)
- [Explications](#explications)
- [Prérequis : activer le _shared Runner_](#pr%C3%A9requis-activer-le-shared-runner)
- [C'est parti](#cest-parti)
- [Remarques](#remarques)
- [Commentaires sur l'intégration continue](#commentaires-sur-lint%C3%A9gration-continue)
- [Pour aller plus loin](#pour-aller-plus-loin)
# Démonstration
Ce _repo_ est en lui-même un démonstation de l'utilisation de l'intégration continue pour la compilation de LaTeX. Le fichier `main.tex` est compilé (voir [Explications](#explications)) et le `pdf` est disponible [ici](https://gitlab.utc.fr/LaTeX-UTC/LaTeX-CI/-/jobs/artifacts/master/raw/main.pdf?job=building-latex-master).
N'hésitez pas à cloner ce _repo_ pour vous en servir comme base.
# Explications
## Prérequis : activer le _shared Runner_
1. Rendez-vous das les `paramètres` du projet GitLab, section `CI/CD`.
1. Cliquez sur `Runners settings` (_expand_).
1. Dans la section _Shared Runners_, cliquez sur _« Activate shared Runners »_.
## C'est parti
Vous n'avez plus qu'à modifier le fichier `main.tex` et à _commit_ les changements, la compilation et la publication à l'adresse `https://gitlab.utc.fr/<login-ou-namespace>/<nom-du-projet>/-/jobs/artifacts/master/raw/main.pdf?job=building-latex-master` se fait automatiquement. Par exemple, pour ce projet, le pdf est disponible à l'adresse [https://gitlab.utc.fr/LaTeX-UTC/LaTeX-CI/-/jobs/artifacts/master/raw/main.pdf?job=building-latex-master](https://gitlab.utc.fr/LaTeX-UTC/LaTeX-CI/-/jobs/artifacts/master/raw/main.pdf?job=building-latex-master).
### Remarques
- Les `pdf` compilés sont rendus disponibles en public via les _artifacts_. Ces derniers peuvent être visualisés via :
- La page d'accueil du projet, cliquez sur l'icône _télécharger_ puis sur `Télécharger 'building-latex-master'`
- Dans le menu du projet, cliquez sur `CI/CD` -> `jobs`, puis sur le badge (espérons "réussi") du status associé au job souhaité, puis dans le menu de droite, dans la section `Job artifacts` cliquez sur `browse`.
- Url :
- Pour la branche master : `https://gitlab.utc.fr/<login-ou-namespace>/<nom-du-projet>/-/jobs/artifacts/master/raw/main.pdf?job=building-latex-master`
- Pour les autres branches : `https://gitlab.utc.fr/<login-ou-namespace>/<nom-du-projet>/-/jobs/artifacts/<nom-de-la-branche>/raw/main.pdf?job=building-latex-other-branch`
- Si la compilation échoue, le _job_ sera marqué comme tel et vous pouvez accéder aux logs pour savoir où elle a échouée.
- _Pensez à adapter la license à votre projet._
## Commentaires sur l'intégration continue
Avec GitLab, toute l'intégration continue est gérée via le fichier `.gitlab-ci.yml`. Voici celui utilisé par ce projet (avec quelques commentaires).
Il comporte 2 _jobs_ sensiblement similaires qui permettent une gestion optimale des ressources disques : à l'heure de la réalisation de ce projet il n'est pas [encore](https://gitlab.com/gitlab-org/gitlab-ce/issues/23777) possible de garder uniquement les derniers artifacts. Pour contourner le système :
- Les artifacts issus de la branche master sont conservés 2 ans.
- Les artifacts issus des autres branches sont conservés 2 semaines.
```yaml
# Téléchargement d'une image Docker avec tous les packets
# texlive pour éviter les ennuis lors de la compilation latex
image: blang/latex
# Premier job : compilation du latex
building-latex-master:
stage: build
script:
# Compilation avec latexmk du fichier main.tex
# qui est à la racine du repo
- latexmk -pdf main.tex
artifacts:
# Génération d'une archive téléchargeable avec le fichier
paths:
- "*.pdf"
expire_in: 2 year # Durée de validité de l'archive
tags:
# Tag pour que le shared runner du GitLab de l'UTC
# fasse sont travail.
- docker
# Deuxième job : similaire, mais pour les autres branches
building-latex-other-branch:
stage: build
script:
- latexmk -pdf main.tex
artifacts:
paths:
- "*.pdf"
expire_in: 2 week # durée plus courte
except: # toutes les branches sauf master
- master
tags:
- docker
```
### Pour aller plus loin
Dans la partie `script` d'un job décrit dans le fichier `.gitlab-ci.yml` vous pouvez installer des packets (`apt-get install --yes <nom-du-paquet>`) voire exécuter des scripts bash qui seraient disponibles dans le repo :
```yaml
# [...]
building-latex-master:
stage: build
script:
- bash build.sh
# [...]
```
Les possibilités sont donc infinies :)
- Un peu de lecture : https://gitlab.com/help/user/project/pipelines/job_artifacts.md
- Pour tester vos fichiers `.gitlab-ci.yml` : https://gitlab.utc.fr/ci/lint
**Amusez-vous bien.** :wink:
\ No newline at end of file
Template LaTeX : lettre au format UTC
=====
- [Utilisation](#utilisation)
- [Licence](#licence)
- [Prévisualisation](#pr%C3%A9visualisation)
- [Contribution](#contribution)
## Utilisation
:warning: **Pour une utilisation simple, ne téléchargez pas le _repo_ !** Télécharger l'archive prête à être utilisée : [ici](https://gitlab.utc.fr/LaTeX-UTC/Templates/Lettre-LaTeX-UTC/-/jobs/artifacts/master/raw/latex-lettre-UTC.zip?job=building-latex-master) ! :warning:
🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝
💡 Cette archive peut être directement utilisée sur [Overleaf](https://www.overleaf.com/). :seedling:
_Elle est systématiquement préparée en intégration continue à chaque commit ; si les liens venaient à périmer, n'hésitez pas à demander un renouvellement._
## Licence
Le contenu de ce _repo_ est distribué sous licence BSD-2. _Attention l'archive dont nous parlons au-dessus contient des éléments graphiques de [ce repo](https://gitlab.utc.fr/LaTeX-UTC/Graphismes-UTC) dont certains sont de la propriété de l'université de technologie de Compiègne. Plus d'informations sont disponibles sur le repo en question._
## Prévisualisation
![Première page](https://gitlab.utc.fr/LaTeX-UTC/Templates/Lettre-LaTeX-UTC/-/jobs/artifacts/master/raw/lettre-ex-0.png?job=building-latex-master)
![Deuxième page](https://gitlab.utc.fr/LaTeX-UTC/Templates/Lettre-LaTeX-UTC/-/jobs/artifacts/master/raw/lettre-ex-1.png?job=building-latex-master)
[Lien vers le `PDF` généré](https://gitlab.utc.fr/LaTeX-UTC/Templates/Lettre-LaTeX-UTC/-/jobs/artifacts/master/raw/lettre-UTC-ex.pdf?job=building-latex-master).
## Contribution
Toute contribution est la bienvenue.
Remarque : Ce projet fait un usage important de l'intégration continue. Des _assets_ d'autres projets sont récupérés lors de la compilation. Pour travailler en local, vous devez utilisez le script bash `build.sh` avec l'une des options suivantes :
- `bash build.sh get_assets` : pour récupérer les assets extérieurs au repo.
- `bash build.sh make` : pour compiler et générer l'archive.
- `bash build.sh clean` : pour nettoyer le contenu du dossier de travail de tous les fichiers temporaires.
\ No newline at end of file
#!/bin/bash
case "$1" in
get_assets) echo "récupérération des assets"
# Création du dossier des assets externes s'il le faut
rm -rf __EXTERNAL_ASSETS__
mkdir __EXTERNAL_ASSETS__
cd ./__EXTERNAL_ASSETS__
# Récupération des assets
a="https://gitlab.utc.fr/LaTeX-UTC/Graphismes-UTC/raw/master/logos/UTC/logo_UTC.pdf "
b="https://gitlab.utc.fr/LaTeX-UTC/Graphismes-UTC/raw/master/elements/fleche/fleche.pdf "
c="https://gitlab.utc.fr/LaTeX-UTC/Graphismes-UTC/raw/master/couleurs/couleurs_UTC.sty "
for url in $a$b$c
do
wget $url
if [[ $? -ne 0 ]]; then
echo "Erreure lors de la récupération des assets !"
echo "Problème de connexion ou les assets ont été déplassés !"
exit 1;
fi
done
cd ../
echo "Tous les assets extérieurs nécesssaires sont opérationnels."
;;
make) echo "Génération de l'archive"
rm -rf build;
mkdir build;
cp lettre-UTC.cls ./build
cp lettre-UTC-ex.tex ./build
cp LICENSE ./build
cp README.md ./build
cp -r __EXTERNAL_ASSETS__ ./build
cp .gitignore ./build
cp .latexmkrc ./build
# copy for building
cp -rf ./build ./build_tmp
# try to build
cd ./build_tmp
latexmk -pdf lettre-UTC-ex.tex
# if successfull
cd ../
cp build_tmp/lettre-UTC-ex.pdf ./
rm -rf ./build_tmp
zip -r latex-lettre-UTC.zip ./build
# generate preview
convert -density 150 lettre-UTC-ex.pdf -quality 90 lettre-ex.png
;;
clean) echo "Nettoyage"
latexmk -C
rm -rf build __EXTERNAL_ASSETS__ *.png *.zip
;;
*) echo "Option $1 non reconnu"; exit 1;;
esac
\ No newline at end of file
# Création du dossier des assets externes s'il le faut
if [ -d ./__EXTERNAL_ASSETS__ ];
then
echo 'Le dossier contenant les assets extérieurs a été trouvé.';
else
echo "Le dossier contenant les assets extérieurs n'a pas été trouvé.";
mkdir __EXTERNAL_ASSETS__
echo " Il vient d'être créé";
fi
cd ./__EXTERNAL_ASSETS__
# Récupération dse images et logo s'il le faut
if [ -f logo_UTC.pdf ];
then
echo "Le logo de l'UTC est déjà présent.";
else
wget https://gitlab.utc.fr/LaTeX-UTC/Graphismes-UTC/raw/master/logos/UTC/logo_UTC.pdf
fi
if [ -f fleche.pdf ];
then
echo "La flèche de l'UTC est déjà présente.";
else
wget https://gitlab.utc.fr/LaTeX-UTC/Graphismes-UTC/raw/master/elements/fleche/fleche.pdf
fi
# Récupération du packet LaTeX contenant les couleurs
if [ -f couleurs_UTC.sty ];
then
echo "Le packet LaTeX contenant les couleurs de l'UTC est présent.";
else
wget https://gitlab.utc.fr/LaTeX-UTC/Graphismes-UTC/raw/master/couleurs/couleurs_UTC.sty
fi
cd ../
echo "Tous les assets extérieurs nécesssaires sont opérationnels.";
\ No newline at end of file
......@@ -74,7 +74,7 @@ Merci d'utiliser la comande \texttt{\@backslashchar adresse} dans le préambule.
}
\newcommand\pint@Footer{%
\newcommand\print@Footer{%
\begin{tikzpicture}[overlay, remember picture]
% rectangle jaune
\node[anchor=north west, %anchor is upper left corner of the graphic
......@@ -200,7 +200,7 @@ Merci d'utiliser la comande \texttt{\@backslashchar adresse} dans le préambule.
\printLigne%
\blockInfosUTC%
\blockInfosPerso%
\pint@Footer}%
\print@Footer}%
}
......
if [ -d ./build ];
then
rm -rf build;
mkdir build;
else
mkdir build;
fi
cp lettre-UTC.cls ./build
cp lettre-UTC-ex.tex ./build
cp LICENSE ./build
cp README.md ./build
cp -r __EXTERNAL_ASSETS__ ./build
cp .gitignore ./build
cp .latexmkrc ./build
# copy for building
cp -rf ./build ./build_tmp
# try to build
cd ./build_tmp
latexmk -pdf lettre-UTC-ex.tex
# if successfull
cd ../
cp build_tmp/lettre-UTC-ex.pdf ./
rm -rf ./build_tmp
zip -r latex-lettre-UTC.zip ./build
# generate preview
convert -density 150 lettre-UTC-ex.pdf -quality 90 lettre-ex.png
\ No newline at end of file