Deploy site [CI SKIP]

This commit is contained in:
Woodpecker CI 2025-12-15 17:05:32 +00:00
parent 328728a430
commit e300609d2e
18 changed files with 115 additions and 83 deletions

View file

@ -38,7 +38,7 @@ ul.task-list li input[type="checkbox"] {
<link href="site_libs/quarto-html/quarto-syntax-highlighting-e26003cea8cd680ca0c55a263523d882.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="site_libs/bootstrap/bootstrap-83d240b7c0fe9db23ebe4161e81bc91c.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<link href="site_libs/bootstrap/bootstrap-86ddb94b6c65cfb424b1f9464cc27ff8.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,

View file

@ -38,7 +38,7 @@ ul.task-list li input[type="checkbox"] {
<link href="site_libs/quarto-html/quarto-syntax-highlighting-e26003cea8cd680ca0c55a263523d882.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="site_libs/bootstrap/bootstrap-83d240b7c0fe9db23ebe4161e81bc91c.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<link href="site_libs/bootstrap/bootstrap-86ddb94b6c65cfb424b1f9464cc27ff8.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,

View file

@ -37,7 +37,7 @@ ul.task-list li input[type="checkbox"] {
<link href="site_libs/quarto-html/quarto-syntax-highlighting-e26003cea8cd680ca0c55a263523d882.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="site_libs/bootstrap/bootstrap-83d240b7c0fe9db23ebe4161e81bc91c.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<link href="site_libs/bootstrap/bootstrap-86ddb94b6c65cfb424b1f9464cc27ff8.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<link href="site_libs/quarto-contrib/academicons-1.9.2/all.css" rel="stylesheet">
<link href="site_libs/quarto-contrib/academicons-1.9.2/size.css" rel="stylesheet">
<link href="site_libs/quarto-contrib/fontawesome6-0.1.0/all.css" rel="stylesheet">
@ -74,7 +74,7 @@ ul.task-list li input[type="checkbox"] {
<link rel="stylesheet" href="styles.css">
</head>
<body class="nav-fixed fullcontent">
<body class="nav-fixed">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top">
@ -116,7 +116,14 @@ ul.task-list li input[type="checkbox"] {
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#citations" id="toc-citations" class="nav-link active" data-scroll-target="#citations">Citations</a></li>
</ul>
</nav>
</div>
<!-- main -->
<div class="quarto-about-trestles">
<div class="about-entity">
@ -146,10 +153,17 @@ ul.task-list li input[type="checkbox"] {
</div>
</div>
<div class="about-contents"><main class="content" id="quarto-document-content">
<p><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"><button onclick="window.location = window.location.href.replace('/fr', '');" class="btn"><i class="fa fa-language"></i> English </button></p><p>Je suis doctorant en statistiques appliquées au laboratoire MIA Paris-Saclay sous la direction de Pierre Barbillon et Sophie Donnet.</p>
<p><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"><button onclick="window.location = window.location.href.replace('/fr', '');" class="btn"><i class="fa fa-language"></i> English </button></p>
<p>Je suis doctorant en statistiques appliquées au laboratoire MIA Paris-Saclay sous la direction de Pierre Barbillon et Sophie Donnet.</p>
<p>Je mettrai à jour plus tard</p>
<section id="citations" class="level2">
<h2 data-anchor-id="citations">Citations</h2>
<blockquote class="blockquote">
<p>“Il faut être mou du critère”, PB 2025</p>
</blockquote>
</section>
</main></div>
</div>
<!-- /main -->

View file

@ -38,7 +38,7 @@ ul.task-list li input[type="checkbox"] {
<link href="site_libs/quarto-html/quarto-syntax-highlighting-e26003cea8cd680ca0c55a263523d882.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="site_libs/bootstrap/bootstrap-83d240b7c0fe9db23ebe4161e81bc91c.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<link href="site_libs/bootstrap/bootstrap-86ddb94b6c65cfb424b1f9464cc27ff8.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,

View file

@ -40,7 +40,7 @@ ul.task-list li input[type="checkbox"] {
<link href="site_libs/quarto-html/quarto-syntax-highlighting-e26003cea8cd680ca0c55a263523d882.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="site_libs/bootstrap/bootstrap-83d240b7c0fe9db23ebe4161e81bc91c.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<link href="site_libs/bootstrap/bootstrap-86ddb94b6c65cfb424b1f9464cc27ff8.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
@ -218,7 +218,7 @@ window.Quarto = {
<div class="quarto-listing quarto-listing-container-grid" id="listing-listing">
<div class="list grid quarto-listing-cols-3">
<div class="g-col-1" data-index="0" data-categories="Y2klMkNpbnQlQzMlQTlncmF0aW9uJTIwY29udGludWUlMkNnaXQlMkNHaXRMYWIlMkNMYVRlWCUyQ2ZyZW5jaCUyQ2ZyYW4lQzMlQTdhaXM=" data-listing-date-sort="1758578400000" data-listing-file-modified-sort="1759750623584" data-listing-date-modified-sort="1759750623000" data-listing-reading-time-sort="5" data-listing-word-count-sort="954">
<div class="g-col-1" data-index="0" data-categories="Y2klMkNpbnQlQzMlQTlncmF0aW9uJTIwY29udGludWUlMkNnaXQlMkNHaXRMYWIlMkNMYVRlWCUyQ2ZyZW5jaCUyQ2ZyYW4lQzMlQTdhaXM=" data-listing-date-sort="1758578400000" data-listing-file-modified-sort="1765818242355" data-listing-date-modified-sort="1765818242000" data-listing-reading-time-sort="5" data-listing-word-count-sort="954">
<a href="./posts/ci-gitlab-latex.html" class="quarto-grid-link">
<div class="quarto-grid-item card h-100 card-left">
<p class="card-img-top"><img src="posts/resources/ci-gitlab-latex/access-token-settings.png" style="height: 150px;" class="thumbnail-image card-img"/></p>

View file

@ -73,7 +73,7 @@ pre > code.sourceCode > span > a:first-child::before { text-decoration: underlin
<link href="../site_libs/quarto-html/quarto-syntax-highlighting-e26003cea8cd680ca0c55a263523d882.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../site_libs/bootstrap/bootstrap-83d240b7c0fe9db23ebe4161e81bc91c.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<link href="../site_libs/bootstrap/bootstrap-86ddb94b6c65cfb424b1f9464cc27ff8.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
@ -188,7 +188,7 @@ pre > code.sourceCode > span > a:first-child::before { text-decoration: underlin
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">6 octobre 2025</p>
<p class="date-modified">15 décembre 2025</p>
</div>
</div>
@ -248,7 +248,7 @@ Important
<span id="cb1-9"><a href="#cb1-9"></a></span>
<span id="cb1-10"><a href="#cb1-10"></a><span class="fu">build_tex</span><span class="kw">:</span></span>
<span id="cb1-11"><a href="#cb1-11"></a><span class="at"> </span><span class="fu">stage</span><span class="kw">:</span><span class="at"> build</span></span>
<span id="cb1-12"><a href="#cb1-12"></a><span class="at"> </span><span class="fu">image</span><span class="kw">:</span><span class="at"> registry.gitlab.com/islandoftex/images/texlive:latest</span></span>
<span id="cb1-12"><a href="#cb1-12"></a><span class="at"> </span><span class="fu">image</span><span class="kw">:</span><span class="at"> danteev/texlive:latest</span><span class="co"> # texlive plus inkscape and others</span></span>
<span id="cb1-13"><a href="#cb1-13"></a><span class="at"> </span><span class="fu">script</span><span class="kw">:</span></span>
<span id="cb1-14"><a href="#cb1-14"></a><span class="kw"> - </span><span class="ch">|</span></span>
<span id="cb1-15"><a href="#cb1-15"></a> for FILE_NAME in $FILE_NAMES</span>
@ -338,7 +338,7 @@ Important
<div class="cell">
<div class="sourceCode cell-code" id="cb3"><pre class="sourceCode numberSource yaml number-lines code-with-copy"><code class="sourceCode yaml"><span id="cb3-1"><a href="#cb3-1"></a><span class="fu">build_tex</span><span class="kw">:</span></span>
<span id="cb3-2"><a href="#cb3-2"></a><span class="at"> </span><span class="fu">stage</span><span class="kw">:</span><span class="at"> build</span></span>
<span id="cb3-3"><a href="#cb3-3"></a><span class="at"> </span><span class="fu">image</span><span class="kw">:</span><span class="at"> registry.gitlab.com/islandoftex/images/texlive:latest</span></span>
<span id="cb3-3"><a href="#cb3-3"></a><span class="at"> </span><span class="fu">image</span><span class="kw">:</span><span class="at"> danteev/texlive:latest</span><span class="co"> # texlive plus inkscape and others</span></span>
<span id="cb3-4"><a href="#cb3-4"></a><span class="at"> </span><span class="fu">script</span><span class="kw">:</span></span>
<span id="cb3-5"><a href="#cb3-5"></a><span class="kw"> - </span><span class="ch">|</span></span>
<span id="cb3-6"><a href="#cb3-6"></a> for FILE_NAME in $FILE_NAMES</span>

View file

@ -1,4 +1,25 @@
[
{
"objectID": "index.html",
"href": "index.html",
"title": "Louis Lacoste",
"section": "",
"text": "English\nJe suis doctorant en statistiques appliquées au laboratoire MIA Paris-Saclay sous la direction de Pierre Barbillon et Sophie Donnet.\nJe mettrai à jour plus tard"
},
{
"objectID": "index.html#citations",
"href": "index.html#citations",
"title": "Louis Lacoste",
"section": "Citations",
"text": "Citations\n\n“Il faut être mou du critère”, PB 2025"
},
{
"objectID": "biblio.html",
"href": "biblio.html",
"title": "Bibliography",
"section": "",
"text": "English"
},
{
"objectID": "interests.html",
"href": "interests.html",
@ -32,7 +53,7 @@
"href": "posts/ci-gitlab-latex.html#la-phase-de-compilation-build_tex",
"title": "Faire une CI LaTeX avec GitLab",
"section": "La phase de compilation build_tex",
"text": "La phase de compilation build_tex\nNous allons détailler létape build_tex :\n\nbuild_tex:\n stage: build\n image: registry.gitlab.com/islandoftex/images/texlive:latest\n script:\n - |\n for FILE_NAME in $FILE_NAMES\n do\n echo \"Compiling ${FILE_NAME}\"\n pdflatex --shell-escape ${FILE_NAME}.tex\n if test -f ${FILE_NAME}.bcf; then\n echo \"Found ${FILE_NAME}.bcf, running biber\"\n biber ${FILE_NAME}\n fi\n pdflatex --shell-escape ${FILE_NAME}.tex\n done\n after_script:\n - |\n for FILE_NAME in $FILE_NAMES\n do\n echo \"============================================\"\n cat ${FILE_NAME}.log\n echo \"============================================\"\n done\n\n artifacts:\n paths:\n - \"*.pdf\"\n\nOn déclare tout dabord le stage: build pour qualifier létape que lon réalise ici. Il y en a 3 possibles : build, test, deploy (documentation GitLab). Ici nous choisissons build puisquil sagit de la compilation de notre projet.\nÀ la suite nous chargeons une image docker qui contient les outils texlive.\nEt enfin la directive script définit en bash lenchaînement détapes que nous réalisons pour compiler le projet.\n\n\n\n\n\n\nExécution conditionnelle de biber\n\n\n\nNoter que nous navons pas mis dextensions dans FILE_NAMES afin de pouvoir détecter ici les fichiers bcf caractéristiques de la bibliographie.\n\n\nFinalement, nous utilisons la directive after_script pour afficher dans les journaux de la CI les fichiers de logs des compilations.\nEnfin artifacts spécifie que les artéfacts que lon veut conserver de la CI sont tous les PDF à la racine du dépôt"
"text": "La phase de compilation build_tex\nNous allons détailler létape build_tex :\n\nbuild_tex:\n stage: build\n image: danteev/texlive:latest # texlive plus inkscape and others\n script:\n - |\n for FILE_NAME in $FILE_NAMES\n do\n echo \"Compiling ${FILE_NAME}\"\n pdflatex --shell-escape ${FILE_NAME}.tex\n if test -f ${FILE_NAME}.bcf; then\n echo \"Found ${FILE_NAME}.bcf, running biber\"\n biber ${FILE_NAME}\n fi\n pdflatex --shell-escape ${FILE_NAME}.tex\n done\n after_script:\n - |\n for FILE_NAME in $FILE_NAMES\n do\n echo \"============================================\"\n cat ${FILE_NAME}.log\n echo \"============================================\"\n done\n\n artifacts:\n paths:\n - \"*.pdf\"\n\nOn déclare tout dabord le stage: build pour qualifier létape que lon réalise ici. Il y en a 3 possibles : build, test, deploy (documentation GitLab). Ici nous choisissons build puisquil sagit de la compilation de notre projet.\nÀ la suite nous chargeons une image docker qui contient les outils texlive.\nEt enfin la directive script définit en bash lenchaînement détapes que nous réalisons pour compiler le projet.\n\n\n\n\n\n\nExécution conditionnelle de biber\n\n\n\nNoter que nous navons pas mis dextensions dans FILE_NAMES afin de pouvoir détecter ici les fichiers bcf caractéristiques de la bibliographie.\n\n\nFinalement, nous utilisons la directive after_script pour afficher dans les journaux de la CI les fichiers de logs des compilations.\nEnfin artifacts spécifie que les artéfacts que lon veut conserver de la CI sont tous les PDF à la racine du dépôt"
},
{
"objectID": "posts/ci-gitlab-latex.html#la-phase-de-déploiement-deploy",
@ -41,20 +62,6 @@
"section": "La phase de déploiement deploy",
"text": "La phase de déploiement deploy\n\ndeploy:\n stage: deploy\n image:\n name: alpine/git:${GIT_VERSION}\n entrypoint: [\"\"]\n\n before_script:\n # Clone le repo dans un dossier temporaire\n - git clone \"https://${GITLAB_USERNAME}:${GITLAB_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git\" \"${CI_COMMIT_SHA}\"\n\n # Configure lidentité git\n - git config --global user.email \"${GIT_USER_EMAIL:-$GITLAB_USER_EMAIL}\"\n - git config --global user.name \"${GIT_USER_NAME:-$GITLAB_USER_NAME}\"\n\n script:\n # Déplace les PDFs compilés dans le repo cloné\n - mv *.pdf \"${CI_COMMIT_SHA}/\"\n - cd \"${CI_COMMIT_SHA}\"\n\n # Crée une branche orpheline (vierge, sans historique ni fichiers)\n - git checkout --orphan \"${PDF_BRANCH}\"\n - git reset --hard\n\n # Ajoute uniquement les PDF\n - git add -f *.pdf\n\n # Vérifie sil y a des changements et push\n - |\n CHANGES=$(git status --porcelain | wc -l)\n if [ \"$CHANGES\" -gt \"0\" ]; then\n git commit -m \"${COMMIT_MESSAGE:-Updating PDF files}\"\n git push --force origin \"${PDF_BRANCH}\" -o ci.skip\n else\n echo \"No PDF changes to commit\"\n fi\n\nFinalement nous déployons nos PDF. Pour cela on charge une image légère Alpine Linux avec la version Git sélectionnée dans les variables.\nAvec la directive before_script on clone le dépôt.\n\n\n\n\n\n\nPour créer le token GitLab\n\n\n\nNotez dans le git clone que nous employons une variable GITLAB_TOKEN, celle-ci est a créer au préalable et à déclarer dans le dépôt.\nPour cela :\n\nRendez-vous dans les paramètre de votre dépôt.\n\n\n\n\nDans les menus de gauche, déplier “Settings” et rendez-vous dans “Access tokens”\n\n\n\nIci ajoutez un nouveau token.\n\n\n\n\nCliquer sur “Add new token”\n\n\n\nEn configurant les permissions read_repository et write_repository afin de pouvoir cloner et pousser nos fichiers. Puis cliquer sur “Create project access token”.\n\n\n\nVotre token est maintenant affiché, copiez le car il ne sera pas raffiché après.\nRendez-vous maintenant dans CI/CD settings.\n\n\n\nCréer maintenant la variable en cliquant sur “Add variable”, nommez la GITLAB_TOKEN, dans “value” ajoutez le token copié.\n\n\n\nLa suite du script déplace les PDF dans le dépôt cloné, crée la branche de publication et ajoute les pdf.\nVous avez normalement maintenant une CI de compilation et publication de PDF ! Maintenant vous pouvez faire référence dans votre README.md à vos PDF en saisissant un lien du type :\nhttps://mongitlab.com/monnomutilisateur/mondepot/-/raw/monpdf.pdf\nqui permet dafficher directement dans le navigateur le produit de la compilation. 😄"
},
{
"objectID": "index.html",
"href": "index.html",
"title": "Louis Lacoste",
"section": "",
"text": "English Je suis doctorant en statistiques appliquées au laboratoire MIA Paris-Saclay sous la direction de Pierre Barbillon et Sophie Donnet.\nJe mettrai à jour plus tard"
},
{
"objectID": "teaching.html",
"href": "teaching.html",
"title": "Teaching",
"section": "",
"text": "English \n\n2025-2026\n\nTeaching assistant in Statistics (33 hours) for first-year students at AgroParisTech.\n\n\n\n2024-2025\n\nTeaching assistant in Statistics (33 hours) for first-year students at AgroParisTech.\nTeaching assistant in “Data Science: Statistical Learning” (16.5 hours) for second-year students at AgroParisTech\nTeaching assistant in “Computer science: programming and database” (6 hours) for first-year students at AgroParisTech"
},
{
"objectID": "posts.html",
"href": "posts.html",
@ -63,10 +70,10 @@
"text": "English \n\n\n\n\n\n\n\n\n\nFaire une CI LaTeX avec GitLab\n\n\n\nci\n\n\nintégration continue\n\n\ngit\n\n\nGitLab\n\n\nLaTeX\n\n\nfrench\n\n\nfrançais\n\n\n\n\n\n\n\nLouis Lacoste\n\n\n23 sept. 2025\n\n\n\n\n\n\n\n\nAucun article correspondant"
},
{
"objectID": "biblio.html",
"href": "biblio.html",
"title": "Bibliography",
"objectID": "teaching.html",
"href": "teaching.html",
"title": "Teaching",
"section": "",
"text": "English"
"text": "English \n\n2025-2026\n\nTeaching assistant in Statistics (33 hours) for first-year students at AgroParisTech.\n\n\n\n2024-2025\n\nTeaching assistant in Statistics (33 hours) for first-year students at AgroParisTech.\nTeaching assistant in “Data Science: Statistical Learning” (16.5 hours) for second-year students at AgroParisTech\nTeaching assistant in “Computer science: programming and database” (6 hours) for first-year students at AgroParisTech"
}
]

View file

@ -38,7 +38,7 @@ ul.task-list li input[type="checkbox"] {
<link href="site_libs/quarto-html/quarto-syntax-highlighting-e26003cea8cd680ca0c55a263523d882.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="site_libs/bootstrap/bootstrap-83d240b7c0fe9db23ebe4161e81bc91c.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<link href="site_libs/bootstrap/bootstrap-86ddb94b6c65cfb424b1f9464cc27ff8.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,

View file

@ -37,7 +37,7 @@ ul.task-list li input[type="checkbox"] {
<link href="site_libs/quarto-html/quarto-syntax-highlighting-e26003cea8cd680ca0c55a263523d882.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="site_libs/bootstrap/bootstrap-83d240b7c0fe9db23ebe4161e81bc91c.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<link href="site_libs/bootstrap/bootstrap-86ddb94b6c65cfb424b1f9464cc27ff8.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<link href="site_libs/quarto-contrib/academicons-1.9.2/all.css" rel="stylesheet">
<link href="site_libs/quarto-contrib/academicons-1.9.2/size.css" rel="stylesheet">
<link href="site_libs/quarto-contrib/fontawesome6-0.1.0/all.css" rel="stylesheet">
@ -74,7 +74,7 @@ ul.task-list li input[type="checkbox"] {
<link rel="stylesheet" href="styles.css">
</head>
<body class="nav-fixed fullcontent">
<body class="nav-fixed">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top">
@ -110,7 +110,14 @@ ul.task-list li input[type="checkbox"] {
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">On this page</h2>
<ul>
<li><a href="#quotes" id="toc-quotes" class="nav-link active" data-scroll-target="#quotes">Quotes</a></li>
</ul>
</nav>
</div>
<!-- main -->
<div class="quarto-about-trestles">
<div class="about-entity">
@ -140,10 +147,17 @@ ul.task-list li input[type="checkbox"] {
</div>
</div>
<div class="about-contents"><main class="content" id="quarto-document-content">
<p><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"><button onclick="window.location = '/fr' + location.pathname;" class="btn"><i class="fa fa-language"></i> Français </button></p><p>Im a PhD student in Applied Mathematics at MIA Paris-Saclay under supervision of Pierre Barbillon and Sophie Donnet.</p>
<p><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"><button onclick="window.location = '/fr' + location.pathname;" class="btn"><i class="fa fa-language"></i> Français </button></p>
<p>Im a PhD student in Applied Mathematics at MIA Paris-Saclay under supervision of Pierre Barbillon and Sophie Donnet.</p>
<p>Will update later</p>
<section id="quotes" class="level2">
<h2 data-anchor-id="quotes">Quotes</h2>
<blockquote class="blockquote">
<p>“Il faut être mou du critère”, PB 2025</p>
</blockquote>
</section>
</main></div>
</div>
<!-- /main -->

View file

@ -38,7 +38,7 @@ ul.task-list li input[type="checkbox"] {
<link href="site_libs/quarto-html/quarto-syntax-highlighting-e26003cea8cd680ca0c55a263523d882.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="site_libs/bootstrap/bootstrap-83d240b7c0fe9db23ebe4161e81bc91c.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<link href="site_libs/bootstrap/bootstrap-86ddb94b6c65cfb424b1f9464cc27ff8.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,

View file

@ -40,7 +40,7 @@ ul.task-list li input[type="checkbox"] {
<link href="site_libs/quarto-html/quarto-syntax-highlighting-e26003cea8cd680ca0c55a263523d882.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="site_libs/bootstrap/bootstrap-83d240b7c0fe9db23ebe4161e81bc91c.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<link href="site_libs/bootstrap/bootstrap-86ddb94b6c65cfb424b1f9464cc27ff8.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
@ -212,7 +212,7 @@ window.Quarto = {
<div class="quarto-listing quarto-listing-container-grid" id="listing-listing">
<div class="list grid quarto-listing-cols-3">
<div class="g-col-1" data-index="0" data-categories="Y2klMkNpbnQlQzMlQTlncmF0aW9uJTIwY29udGludWUlMkNnaXQlMkNHaXRMYWIlMkNMYVRlWCUyQ2ZyZW5jaCUyQ2ZyYW4lQzMlQTdhaXM=" data-listing-date-sort="1758578400000" data-listing-file-modified-sort="1759750623584" data-listing-date-modified-sort="1759750623000" data-listing-reading-time-sort="5" data-listing-word-count-sort="954">
<div class="g-col-1" data-index="0" data-categories="Y2klMkNpbnQlQzMlQTlncmF0aW9uJTIwY29udGludWUlMkNnaXQlMkNHaXRMYWIlMkNMYVRlWCUyQ2ZyZW5jaCUyQ2ZyYW4lQzMlQTdhaXM=" data-listing-date-sort="1758578400000" data-listing-file-modified-sort="1765818242355" data-listing-date-modified-sort="1765818242000" data-listing-reading-time-sort="5" data-listing-word-count-sort="954">
<a href="./posts/ci-gitlab-latex.html" class="quarto-grid-link">
<div class="quarto-grid-item card h-100 card-left">
<p class="card-img-top"><img src="posts/resources/ci-gitlab-latex/access-token-settings.png" style="height: 150px;" class="thumbnail-image card-img"/></p>

View file

@ -74,7 +74,7 @@ pre > code.sourceCode > span > a:first-child::before { text-decoration: underlin
<link href="../site_libs/quarto-html/quarto-syntax-highlighting-e26003cea8cd680ca0c55a263523d882.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../site_libs/bootstrap/bootstrap-83d240b7c0fe9db23ebe4161e81bc91c.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<link href="../site_libs/bootstrap/bootstrap-86ddb94b6c65cfb424b1f9464cc27ff8.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
@ -183,7 +183,7 @@ pre > code.sourceCode > span > a:first-child::before { text-decoration: underlin
<div>
<div class="quarto-title-meta-heading">Modified</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">October 6, 2025</p>
<p class="date-modified">December 15, 2025</p>
</div>
</div>
@ -243,7 +243,7 @@ Important
<span id="cb1-9"><a href="#cb1-9"></a></span>
<span id="cb1-10"><a href="#cb1-10"></a><span class="fu">build_tex</span><span class="kw">:</span></span>
<span id="cb1-11"><a href="#cb1-11"></a><span class="at"> </span><span class="fu">stage</span><span class="kw">:</span><span class="at"> build</span></span>
<span id="cb1-12"><a href="#cb1-12"></a><span class="at"> </span><span class="fu">image</span><span class="kw">:</span><span class="at"> registry.gitlab.com/islandoftex/images/texlive:latest</span></span>
<span id="cb1-12"><a href="#cb1-12"></a><span class="at"> </span><span class="fu">image</span><span class="kw">:</span><span class="at"> danteev/texlive:latest</span><span class="co"> # texlive plus inkscape and others</span></span>
<span id="cb1-13"><a href="#cb1-13"></a><span class="at"> </span><span class="fu">script</span><span class="kw">:</span></span>
<span id="cb1-14"><a href="#cb1-14"></a><span class="kw"> - </span><span class="ch">|</span></span>
<span id="cb1-15"><a href="#cb1-15"></a> for FILE_NAME in $FILE_NAMES</span>
@ -333,7 +333,7 @@ Important
<div class="cell">
<div class="sourceCode cell-code" id="cb3"><pre class="sourceCode numberSource yaml number-lines code-with-copy"><code class="sourceCode yaml"><span id="cb3-1"><a href="#cb3-1"></a><span class="fu">build_tex</span><span class="kw">:</span></span>
<span id="cb3-2"><a href="#cb3-2"></a><span class="at"> </span><span class="fu">stage</span><span class="kw">:</span><span class="at"> build</span></span>
<span id="cb3-3"><a href="#cb3-3"></a><span class="at"> </span><span class="fu">image</span><span class="kw">:</span><span class="at"> registry.gitlab.com/islandoftex/images/texlive:latest</span></span>
<span id="cb3-3"><a href="#cb3-3"></a><span class="at"> </span><span class="fu">image</span><span class="kw">:</span><span class="at"> danteev/texlive:latest</span><span class="co"> # texlive plus inkscape and others</span></span>
<span id="cb3-4"><a href="#cb3-4"></a><span class="at"> </span><span class="fu">script</span><span class="kw">:</span></span>
<span id="cb3-5"><a href="#cb3-5"></a><span class="kw"> - </span><span class="ch">|</span></span>
<span id="cb3-6"><a href="#cb3-6"></a> for FILE_NAME in $FILE_NAMES</span>

View file

@ -1,4 +1,25 @@
[
{
"objectID": "index.html",
"href": "index.html",
"title": "Louis Lacoste",
"section": "",
"text": "Français\nIm a PhD student in Applied Mathematics at MIA Paris-Saclay under supervision of Pierre Barbillon and Sophie Donnet.\nWill update later"
},
{
"objectID": "index.html#quotes",
"href": "index.html#quotes",
"title": "Louis Lacoste",
"section": "Quotes",
"text": "Quotes\n\n“Il faut être mou du critère”, PB 2025"
},
{
"objectID": "biblio.html",
"href": "biblio.html",
"title": "Bibliography",
"section": "",
"text": "Français"
},
{
"objectID": "interests.html",
"href": "interests.html",
@ -32,7 +53,7 @@
"href": "posts/ci-gitlab-latex.html#the-compilation-phase-build_tex",
"title": "Faire une CI LaTeX avec GitLab",
"section": "The compilation phase build_tex",
"text": "The compilation phase build_tex\nLets detail the build_tex step:\n\nbuild_tex:\n stage: build\n image: registry.gitlab.com/islandoftex/images/texlive:latest\n script:\n - |\n for FILE_NAME in $FILE_NAMES\n do\n echo \"Compiling ${FILE_NAME}\"\n pdflatex --shell-escape ${FILE_NAME}.tex\n if test -f ${FILE_NAME}.bcf; then\n echo \"Found ${FILE_NAME}.bcf, running biber\"\n biber ${FILE_NAME}\n fi\n pdflatex --shell-escape ${FILE_NAME}.tex\n done\n after_script:\n - |\n for FILE_NAME in $FILE_NAMES\n do\n echo \"============================================\"\n cat ${FILE_NAME}.log\n echo \"============================================\"\n done\n\n artifacts:\n paths:\n - \"*.pdf\"\n\nFirst, we declare stage: build to qualify the step were performing here. There are 3 possible stages: build, test, deploy (GitLab documentation). Here we choose build since this is the compilation of our project.\nNext, we load a docker image that contains the texlive tools.\nFinally, the script directive defines in bash the sequence of steps we perform to compile the project.\n\n\n\n\n\n\nConditional execution of biber\n\n\n\nNote that we havent included extensions in FILE_NAMES so that we can detect here the bcf files characteristic of the bibliography.\n\n\nFinally, we use the after_script directive to display the compilation log files in the CI logs.\nLastly, artifacts specifies that the artifacts we want to keep from the CI are all PDFs at the root of the repository"
"text": "The compilation phase build_tex\nLets detail the build_tex step:\n\nbuild_tex:\n stage: build\n image: danteev/texlive:latest # texlive plus inkscape and others\n script:\n - |\n for FILE_NAME in $FILE_NAMES\n do\n echo \"Compiling ${FILE_NAME}\"\n pdflatex --shell-escape ${FILE_NAME}.tex\n if test -f ${FILE_NAME}.bcf; then\n echo \"Found ${FILE_NAME}.bcf, running biber\"\n biber ${FILE_NAME}\n fi\n pdflatex --shell-escape ${FILE_NAME}.tex\n done\n after_script:\n - |\n for FILE_NAME in $FILE_NAMES\n do\n echo \"============================================\"\n cat ${FILE_NAME}.log\n echo \"============================================\"\n done\n\n artifacts:\n paths:\n - \"*.pdf\"\n\nFirst, we declare stage: build to qualify the step were performing here. There are 3 possible stages: build, test, deploy (GitLab documentation). Here we choose build since this is the compilation of our project.\nNext, we load a docker image that contains the texlive tools.\nFinally, the script directive defines in bash the sequence of steps we perform to compile the project.\n\n\n\n\n\n\nConditional execution of biber\n\n\n\nNote that we havent included extensions in FILE_NAMES so that we can detect here the bcf files characteristic of the bibliography.\n\n\nFinally, we use the after_script directive to display the compilation log files in the CI logs.\nLastly, artifacts specifies that the artifacts we want to keep from the CI are all PDFs at the root of the repository"
},
{
"objectID": "posts/ci-gitlab-latex.html#the-deployment-phase-deploy",
@ -41,20 +62,6 @@
"section": "The deployment phase deploy",
"text": "The deployment phase deploy\n\ndeploy:\n stage: deploy\n image:\n name: alpine/git:${GIT_VERSION}\n entrypoint: [\"\"]\n\n before_script:\n # Clone le repo dans un dossier temporaire\n - git clone \"https://${GITLAB_USERNAME}:${GITLAB_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git\" \"${CI_COMMIT_SHA}\"\n\n # Configure lidentité git\n - git config --global user.email \"${GIT_USER_EMAIL:-$GITLAB_USER_EMAIL}\"\n - git config --global user.name \"${GIT_USER_NAME:-$GITLAB_USER_NAME}\"\n\n script:\n # Déplace les PDFs compilés dans le repo cloné\n - mv *.pdf \"${CI_COMMIT_SHA}/\"\n - cd \"${CI_COMMIT_SHA}\"\n\n # Crée une branche orpheline (vierge, sans historique ni fichiers)\n - git checkout --orphan \"${PDF_BRANCH}\"\n - git reset --hard\n\n # Ajoute uniquement les PDF\n - git add -f *.pdf\n\n # Vérifie sil y a des changements et push\n - |\n CHANGES=$(git status --porcelain | wc -l)\n if [ \"$CHANGES\" -gt \"0\" ]; then\n git commit -m \"${COMMIT_MESSAGE:-Updating PDF files}\"\n git push --force origin \"${PDF_BRANCH}\" -o ci.skip\n else\n echo \"No PDF changes to commit\"\n fi\n\nFinally, we deploy our PDFs. For this, we load a lightweight Alpine Linux image with the Git version selected in the variables.\nWith the before_script directive, we clone the repository.\n\n\n\n\n\n\nTo create the GitLab token\n\n\n\nNote in the git clone that we use a GITLAB_TOKEN variable, which must be created beforehand and declared in the repository.\nTo do this:\n\nGo to your repository settings.\n\n\n\n\nIn the left menus, expand “Settings” and go to “Access tokens”\n\n\n\nHere add a new token.\n\n\n\n\nClick on “Add new token”\n\n\n\nConfigure the read_repository and write_repository permissions to be able to clone and push our files. Then click on “Create project access token”.\n\n\n\nYour token is now displayed, copy it as it will not be displayed again.\nNow go to CI/CD settings.\n\n\n\nNow create the variable by clicking on “Add variable”, name it GITLAB_TOKEN, in “value” add the copied token.\n\n\n\nThe rest of the script moves the PDFs to the cloned repository, creates the publication branch and adds the pdfs.\nYou should now have a CI for compiling and publishing PDFs! Now you can reference your PDFs in your README.md by entering a link like:\nhttps://mygitlab.com/myusername/myrepo/-/raw/mypdf.pdf\nwhich allows you to display the compilation output directly in the browser. 😄"
},
{
"objectID": "index.html",
"href": "index.html",
"title": "Louis Lacoste",
"section": "",
"text": "Français Im a PhD student in Applied Mathematics at MIA Paris-Saclay under supervision of Pierre Barbillon and Sophie Donnet.\nWill update later"
},
{
"objectID": "teaching.html",
"href": "teaching.html",
"title": "Teaching",
"section": "",
"text": "Français \n\n2025-2026\n\nTeaching assistant in Statistics (33 hours) for first-year students at AgroParisTech.\n\n\n\n2024-2025\n\nTeaching assistant in Statistics (33 hours) for first-year students at AgroParisTech.\nTeaching assistant in “Data Science: Statistical Learning” (16.5 hours) for second-year students at AgroParisTech\nTeaching assistant in “Computer science: programming and database” (6 hours) for first-year students at AgroParisTech"
},
{
"objectID": "posts.html",
"href": "posts.html",
@ -63,10 +70,10 @@
"text": "Français \n\n\n\n\n\n\n\n\n\nFaire une CI LaTeX avec GitLab\n\n\n\nci\n\n\nintégration continue\n\n\ngit\n\n\nGitLab\n\n\nLaTeX\n\n\nfrench\n\n\nfrançais\n\n\n\n\n\n\n\nLouis Lacoste\n\n\nSep 23, 2025\n\n\n\n\n\n\n\n\nNo matching items"
},
{
"objectID": "biblio.html",
"href": "biblio.html",
"title": "Bibliography",
"objectID": "teaching.html",
"href": "teaching.html",
"title": "Teaching",
"section": "",
"text": "Français"
"text": "Français \n\n2025-2026\n\nTeaching assistant in Statistics (33 hours) for first-year students at AgroParisTech.\n\n\n\n2024-2025\n\nTeaching assistant in Statistics (33 hours) for first-year students at AgroParisTech.\nTeaching assistant in “Data Science: Statistical Learning” (16.5 hours) for second-year students at AgroParisTech\nTeaching assistant in “Computer science: programming and database” (6 hours) for first-year students at AgroParisTech"
}
]

File diff suppressed because one or more lines are too long

View file

@ -2,7 +2,6 @@ const kProgressiveAttr = "data-src";
let categoriesLoaded = false;
window.quartoListingCategory = (category) => {
category = atob(category);
if (categoriesLoaded) {
activateCategory(category);
setCategoryHash(category);
@ -16,9 +15,7 @@ window["quarto-listing-loaded"] = () => {
if (hash) {
// If there is a category, switch to that
if (hash.category) {
// category hash are URI encoded so we need to decode it before processing
// so that we can match it with the category element processed in JS
activateCategory(decodeURIComponent(hash.category));
activateCategory(hash.category);
}
// Paginate a specific listing
const listingIds = Object.keys(window["quarto-listings"]);
@ -61,10 +58,7 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
);
for (const categoryEl of categoryEls) {
// category needs to support non ASCII characters
const category = decodeURIComponent(
atob(categoryEl.getAttribute("data-category"))
);
const category = categoryEl.getAttribute("data-category");
categoryEl.onclick = () => {
activateCategory(category);
setCategoryHash(category);
@ -214,9 +208,7 @@ function activateCategory(category) {
// Activate this category
const categoryEl = window.document.querySelector(
`.quarto-listing-category .category[data-category='${btoa(
encodeURIComponent(category)
)}']`
`.quarto-listing-category .category[data-category='${category}'`
);
if (categoryEl) {
categoryEl.classList.add("active");
@ -239,9 +231,7 @@ function filterListingCategory(category) {
list.filter(function (item) {
const itemValues = item.values();
if (itemValues.categories !== null) {
const categories = decodeURIComponent(
atob(itemValues.categories)
).split(",");
const categories = itemValues.categories.split(",");
return categories.includes(category);
} else {
return false;

View file

@ -38,7 +38,7 @@ ul.task-list li input[type="checkbox"] {
<link href="site_libs/quarto-html/quarto-syntax-highlighting-e26003cea8cd680ca0c55a263523d882.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="site_libs/bootstrap/bootstrap-83d240b7c0fe9db23ebe4161e81bc91c.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<link href="site_libs/bootstrap/bootstrap-86ddb94b6c65cfb424b1f9464cc27ff8.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,