Quarto
Quatro est une amélioration de rmarkdown. On peut facilement porter les rmd mais également des documents python. Voici comment mettre en place un website Quarto, déployé sur GitLab, avec freeze des calculs ou non.
Créer un blog quarto avec git, knitr et renv :
New project>Quarto Blog(ou website, blog, …).L’architecture est la suivante :
File Description _quarto.ymlQuarto project file. index.qmdBlog home page. about.qmdBlog about page. posts/Directory containing posts posts/_metadata.ymlShared options for postsrenv/renv directory renv.lockrenv lockfile styles.cssCustom CSS for website Le dépôt utilise renv pour installer et versionner les versions des packages.
- Call
renv::init()to initialize a new project-local environment with a private R library, - Work in the project as normal, installing and removing new R packages as they are needed in the project,
- Call
renv::snapshot()to save the state of the project library to the lockfile (calledrenv.lock), - Continue working on your project, installing and updating R packages as needed.
- Call
renv::snapshot()again to save the state of your project library if your attempts to update R packages were successful, or callrenv::restore()to revert to the previous state as encoded in the lockfile if your attempts to update packages introduced some new problems.
Pas de soucis pour installer un package BioConductor. Pour un package GitHub utiliser :
renv::install('mahendra-mariadassou/phyloseq-extended@dev')
- Call
Ajouter le dépôt distant
usethis::use_git() usethis::use_git_remote(name = "origin", url = "git@forgemia.inra.fr:cedric.midoux/quartoblog.git")git push --set-upstream origin mainDéfinir l’
output-dirdans_quarto.yml:project: type: website output-dir: publicExclure les fichiers temporaire et les pages html du dépôts
usethis::use_git_ignore(c("/.quarto/", "public/"))Générer le site avec l’onglet Build.
quarto::quarto_render()Les résultats des calculs sont stockés dans le dossier
_freeze/. Ce dossier peut être versionné ou non suivant les besoins (voir Doc).Les posts sont rédiger dans le dossier le dossier
posts/avec un sous-dossier par post et un fichierindex.qmddont l’entête est décrite dans la doc :--- title: "Post With Code" description: "Post description" author: "Fizz McPhee" date: "5/22/2021" categories: - news - code - analysis draft: false ---Les paramètres par défaut pour l’ensemble des posts sont spécifiés dans
posts/_metadata.yml.# options specified here will apply to all posts in this folder # freeze computational output # (see https://quarto.org/docs/projects/code-execution.html#freeze) freeze: auto # Enable banner style title blocks title-block-banner: trueJe recommande
freeze: auto.Configurer un pipeline CI/CD
.gitlab-ci.yml.# The Docker image that will be used to build your app image: rocker/verse:4.2 # Functions that should be executed before the build script is run before_script: - R -e "renv::restore()" pages: script: - quarto render artifacts: paths: # The folder that contains the files to be exposed at the Page URL - public rules: # This ensures that only pushes to the default branch will trigger # a pages deploy - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCHSi il n’y a aucun code a exécuter, inutile d’utiliser
renv.On peut suivre l’avancé des taches dans l’onglet jobs et le site est disponible
https://<user>.pages.mia.inra.fr/<repo>/.Le site est généré et déployé à chaque commit sur la branche
main. Si il y a des résultats disponibles dans le dossierfreezeils sont utilisés.Pour rendre un post privé, il suffi d’ajouter
draft: truedans le header.--- title: "Penguins" description: "Penguins description" author: "Midoux" date: "2022-12-09" categories: [penguins, code, analysis] image: "https://allisonhorst.github.io/palmerpenguins/logo.png" draft: true ---On peut également utiliser des listes.
Il existe de multiples paramètres pour les blocs de codes et autres. Parmi les intéressants identifié, le repliement du code. Pour le reste voir la doc complète.
```{r} #| label: penguins #| code-fold: true ```A tester :
- Pour utiliser une version spécifique d’un package, on s’appuie sur les profils de renv.
- Le template
inraeThemes