8  Déploiement de pages

8.1 GITHUB

8.1.1 Déploiement d’une simple page html

  1. On génère un dépôt sur la plateforme en mode Public

  2. On ajoute un fichier nommé .nojekill

    • Ce fichier est vide.
    • On peut réaliser cette étape en local une fois le clonage du dépôt effectué, mais c’est très rapide à faire directement sur le dépôt distant.
  3. Dans Rstudio, on crée un projet en clônant le dépôt distant

  4. On Génère le notebook avec un fichier .qmd (ou .rmd si on souhaite rester sur rmarkdown):

    • Le fichier doit s’appeler index.html.
  5. On transfère les modifications sur le dépôt distant (git push)

Note

On est pas obligé d’envoyer les fichiers sources .qmd ou .rmd, c’est ici l’output html et les fichiers associés (.css, .js…) qui seront lu par le navigateur. On peut donc ajouter des exceptions dans le fichier .gitignore si on souhaite restreindre le les fichiers présents dans le répertoire distant.

Fichier .nojekill (1)

Fichier .nojekill (1)

Fichier .nojekill (2)

Fichier .nojekill (2)

Fichier .nojekill (3)

Fichier .nojekill (3)

Le notebook dans RStudio

Le notebook dans RStudio

Le notebook dans le dépôt distant

Le notebook dans le dépôt distant
  1. Retourner sur le dépôt distant et rafraîchir la page pour voir si les fichiers du notebook a bien été ajouté

  2. Aller dans les paramètres du dépôt (Settings) et cliquer dans le menu vertical à gauche sur Pages

  3. Dans Branch, sélectionner main et sauvegarder

  4. Attendre quelques dizaines de secondes et rafraichir la page. L’adresse est affichée, et on peut y accéder en cliquant sur le lien.

Déploiement (1)

Déploiement (1)

Déploiement (2)

Déploiement (2)

Déploiement (3)

Déploiement (3)

Déploiement (4)

Déploiement (4)

8.1.2 Déploiement avec un fichier de configuration _quarto.yml

  • Fonctionne également pour une simple page. Je recommande plutôt cette méthode pour son caractère plus général.

  • Le gros des étapes précédentes sont identiques. Ce qui change:

    • Création d’un fichier _quarto.yml où l’on va indiquer le répertoire de destination des fichiers html et fichiers associés (css, js).
    • Ce répertoire devra s’appeler doc.
    • Dans github, on devra modifier ce répertoire de destination.

Le fichier _quarto.yml

Cette question sera un plus approfondie dans le chapitre consacrée au contenu de type website, book dans la dernière partie du support.

  • Pour la seule question du déploiement de pages ou de site, ce fichier _quarto.yml de type texte doit contenir la destination du répertoire contenant le ou les fichiers .html .css, .scss, js….

  • Le répertoire de destination doit s’appeler docs.

Cet élément obligatoire du yaml est:

project:
  type: website
  output-dir: docs
  • Pour une simple page, on peut le générer directement dans le dépôt distant après sa création: new file => nom du fichier: _quarto.yml => puis coller les éléments ci-dessus.

  • Pour un contenu plus enrichi, comme un website, on ajoutera une barre de navigation horizontale et/ou une barre verticale, et on indiquera les fichiers .qmd (ou .rmd) qui alimenteront le contenu.

    • Si on prend le template d’exemple de Quarto2, on remarque que le répertoire de destination n’est pas indiqué. Par défaut, il s’appelle _site. Il faut changer son nom: output_dir: docs.

_quarto.yml généré automatiquement


project:
  type: website

website:
  title: "deploy_page2"
  navbar:
    left:
      - href: index.qmd
        text: Home
      - about.qmd

format:
  html:
    theme: cosmo      
    css: styles.css
    toc: true

_quarto.yml pour déploiement sur Github

project:
  type: website
  output-dir: docs  # Ajouter cette ligne d'option

website:
  title: "deploy_page2"
  navbar:
    left:
      - href: index.qmd
        text: Home
      - about.qmd

format:
  html:
    theme: cosmo      
    css: styles.css
    toc: true

Une fois le dépôt distant cloné et le site généré en local, on le push:

  • On va dans les paramètres du dépôt (Settings) et dans Pages

  • Dans branch on sélectionne la branche main et on change le répertoire de roots à docs

  • On sauvegarde, et on rafraichit la page jusqu’à ce que l’adresse du site apparaissent avec le lien. Compter quelques dizaines de secondes.

Fichier _quarto.yml

Fichier _quarto.yml

Répertoire docs dans dépôt distant

Répertoire docs dans dépôt distant

Déploiement (1)

Déploiement (1)

Déploiement (2)

Déploiement (2)

8.2 GITLAB

Atouts de Gitlab

Déploiement en mode private sans coût

L’atout principal de Gitlab par rapport à Github est la possibilité de déployer un contenu html en mode privé sans coût additionnel.

Choix du nom de domaine

Gitlab est nettement plus souple sur le choix des adresses http. Par défaut, au moment du déploiement une adresse unique est proposée. On peut la changer pour un nom de domaine classique : https://username.gitlab.io/repository_name/

Ne maîtrisant absolument pas la programmation des templates .gitlab-ci.yml, on procèdera par simple pas à pas.

8.2.1 Générer le déploiement d’une page test et d’une url associée

Eléments générés lors du déploiement:

  • Un fichier gitlab-ci.yml qui devra être conservé.
  • Un répertoire public qui contiendra le contenu html.

Pour générer ces éléments:

  • On crée un dépôt en mode public ou private:
  • Lorsqu’on clique sur New project on selectionne Create from template.
  • On sélectionne Pages/plain HTML dans la liste et on clique sur Use template.

Nouveau projet

Nouveau projet

Projet avec template

Projet avec template

Choix template html

Choix template html
  • Création du projet:
    • On reprend les éléments décrits dans le chapitre précédent (Section 7.1.1) avec le nom du projet, le nom de domaine du projet (différent du site déployé) et le choix de la visibilité.
    • On remarque qu’un template gitlab-ci.yml est ajouté. Il doit être conservé.
    • Pour déployer la page ou le site avec son nom de domaine, sur le menu vertical à gauche, on clique sur Build et sur Pipelines.

Projet avec template

Projet avec template

Pprojet généré

Pprojet généré

Execution du job de déploiement

  • Dans la page qui s’affiche, en haut à gauche cliquer sur Run Pipeline

  • Dans la nouvelle page qui s’affiche, cliquer de nouveau sur Run Pipeline

  • Dans la nouvelle page, cliquer sur Deploy. Après une dizaine de secondes, on vous indique que le job a été exécuté avec succès.

Build (1)

Build (1)

Build (2)

Build (2)

Build (3)

Build (3)

Build (4)

Build (4)

Création de l’url

  • Dans le menu vertical à gauche, aller dans Deploy Pages.

  • Une URL unique est générée, on peut cliquer sur le lien pour visualiser la page test.

  • On peut vouloir une url plus classique par exemple: https://mthevenin.gitlab.io/deploy-page/:

    • Pour générer cet url: décocher Use unique domaine et sauvegarder.
    • Cliquer sur le lien pour visualiser la page test.

URL (1)

URL (1)

URL (2)

URL (2)

URL (3)

URL (3)

La page test générée:

  • Lorsque la page test est déployée le message suivant va être affiché, même si le repertoire est public.

Visiblement pour rendre la page visible à “tout le monde”:

  • Aller dans Settings => General
  • Descendre jusqu’à pages
  • Sélectionner Everyone With Access
  • Sauvegarder en bas de la liste de gestion de la visibilité

8.2.2 Déployer son contenu html

Que ce soit une simple page de type notebook ou présentation revealjs, ou un contenu plus enrichi de type website, un fichier de configuration propre à Quarto (_quarto.yml) et indiquant clairement la destination des fichiers html doit être créé. Ce répertoire de destination est nommé public. Il a déjà été créé par gitlab lors de la phase de déploiement de la page test.

Pour cette seule opération, le contenu du fichier _quarto.yml est:

project:
  type: website
  output-dir: public

On peut également générer ce fichier directement dans Gitlab:

_quarto.ymlgitlab (1)

_quarto.ymlgitlab (1)

_quarto.yml gitlab (2)

_quarto.yml gitlab (2)

_quarto.yml gitlab (3)

_quarto.yml gitlab (3)

_quarto.yml gitlab (4)

_quarto.yml gitlab (4)

Dans RStudio

  • Créer un projet en clonant le dépôt distant.

    • Si le fichier _quarto.yml qui indique le répertoire de destination (public) n’a pas déjà été créé dans le dépôt gitlab, le générer à partir d’un simple fichier texte.
    • Créer à minima un fichier index.qmd et le compiler en html.
  • Mettre à jour le dépôt distant: git add . git commit --m "titre commit" git push.

  • Rafraichir la page html. Cela peut prendre quelques seconde à une minute.

_quarto.yml Rstudio

_quarto.yml Rstudio

index.qmd Rstudio

index.qmd Rstudio

  1. Je ne dis pas que ce n’est pas possible sur Gitlab mais il faudra reparamétrer le fichier de configuration gitlab-ci.yml, ce qui n’est pas dans mes cordes↩︎

  2. Dans RStudio: New project New directory Quarto Website↩︎