4 Fonctionnement du dépôt de mon application

Après votre demande d’hébergement d’une application Shiny, l’équipe SK8 va créer un dépôt qui contiendra un template d’application suivant vos pré-requis.

Cette section détaille les différentes étapes pour :

  • récupérer votre dépôt en local,
  • modifier les fichiers du template pour le remplacer par votre application shiny,
  • mettre en ligne des modifications,
  • visualiser l’application Shiny déployée via SK8.

Vous pourrez visualiser votre dépôt sur l’instance gitlab de la forgemia, il portera le nom de votre projet.

Exemple d’adresse du dépôt d’une application déployée par SK8 sur GitLab : https://forgemia.inra.fr/sk8/sk8-apps/monunite/monprojet.

4.1 Contenu du dépôt

Le dépôt créé par l’équipe SK8 pour votre application contiendra les éléments suivants:

  • ui.R : fichier contenant la partie interface de votre application R Shiny
  • server.R : fichier contenant la partie serveur de votre application R Shiny
  • global.R : fichier contenant les définitions globales de votre application R Shiny
  • www/ : répertoire visant à contenir les “fichiers statiques” de l’application (CSS, images, …) qui contient un sous dossier images dans lequel se trouve le logo SK8 (SK8.png), à conserver.
  • footer.html : fichier qui permet d’ajouter le footer SK8 à votre application. Vous pouvez l’intégrer comme vous voulez.
  • .gitlab-ci.yml : fichier qui gère l’intégration continue pour l’application, voir section Fichiers de configuration
  • .dockerignore : fichier qui liste les fichiers et répertoires a ne pas inclures dans l’image docker.

4.2 Récupération locale et intégration de vos fichiers

  1. Commencez par récupérer (cloner) ce dépôt sur votre ordinateur en local.
  2. Vous pouvez alors remplacer les fichiers du template, ui.R, server.R et global.R par ceux de votre application Shiny.
  3. Vous pouvez également ajouter des fichiers statiques (css, images, js, …) dans le dossier www.

Si vous avez utilisé le package renv pour gérer et figer les versions des packages R utilisés dans l’application, vous devez executer les commandes suivantes dans R avant d’envoyer vos modifications en ligne :

## La première fois
renv::init()
## choix : 2
## à faire à chaque ajout de nouvelles libraries
## ou montée de version
renv::snapshot()

4.3 Mise à jour de votre application

Vous pouvez modifier en local les fichiers relatifs à votre application puis les envoyer sur l’instance GitLab afin de mettre en ligne et visualiser la dernière version de votre application.

Toujours faire dans l’ordre:

  1. un pull (avant toute modification en local pour être sûr d’avoir la dernière version)
  2. modifier votre application
  3. faire un ou plusieurs commits (add + commit) des fichiers modifiés avec un message explicite pour vous y retrouver plus tard
  4. faire un push du ou des commits afin d’envoyer les modifications sur l’instance gitlab.

4.4 Mise en ligne et pipeline CI/CD

L’action “push” déclenche automatiquement l’exécution du pipeline d’intégration et de déploiement continue (CI/CD).

Fonctionnement du pipeline d’intégration:

  • L’accès au pipeline s’effectue via le menu de gauche “CI/CD.”
  • Le dernier pipeline activé (au dernier push) est le premier de la liste.
  • En cliquant sur le pipeline, on a accès à différentes actions.
  • L’auto configuration, la mise à jour de l’image de l’application, et la mise a jour de l’application en ligne, etc.

A la fin de la procédure du CI/CD, vous devez voir apparaître un des symboles suivants dans votre dépôt qui indiquent respectivement:

Symboles pipelines

  1. que le pipeline s’est effectué correctement. Vous pouvez alors accéder à votre application à l’adresse suivante : https://monprojet.sk8.inrae.fr.

  2. que le pipeline ne s’est pas effectué correctement. Vous pouvez vérifier la log du pipeline et corriger l’erreur ou prévenir l’équipe SK8 qui vous aidera dans votre démarche,

  3. que le pipeline s’est effectué correctement jusqu’à une étape à actionner manuellement. Vous pouvez aller dans le pipeline vous décider si vous souhaitez actionner la suite du pipeline ou pas.

Exemple d’un pipeline :

Si besoin vous pouvez accéder au détail des pipelines :

  • cliquer sur “CI/CD -> pipelines” pour accéder à la page des pipelines,
  • cliquer sur le bouton du dernier pipeline exécuté dans la colonne “Status” (ici “Blocked”), vous verrez la chaîne des différentes actions menées par le pipeline,
  • cliquer sur “Jobs” pour accéder au tableau détaillé des actions du pipeline à inspecter,
  • cliquer sur le bouton de l’action à inspecter du pipeline, sur la zone écrite ou l’icone du status, vous accèderez ainsi au log, i.e. aux lignes de codes éxecuté par cette action.

4.4.1 Les différentes étapes de publication

Les différentes étapes d’un pipeline :

Les tâches/jobs Configuration et Construire-l-application sont effectuées automatiquement.
Par la suite, vous avez plusieurs actions possibles (manuelle):
* mise-en-ligne-1-ere-fois: à déclencher la première fois que vous déposé votre application
* arret-mise-en-ligne: pour enlever l’accès à votre application en ligne
* envoie-logs-de-mon-app: permet de recevoir par courriel les logs de production de votre app (pour le debug)
* annuler-mise-a-jour-application: permet d’annuler la dernière mise à jour
* mise-a-jour-application: met à jour votre application en ligne (peut être automatisé)

(1) La première fois (votre premier dépôt de votre application) déclencher le job mise-en-ligne-1-ere-fois par la suite vous n’aurez qu’a utiliser mise-a-jour-application.

(2) Vous recevrez un email vous informant du status de l’action effectuée. Si ce n’est pas le cas c’est que l’action n’a pas fonctionné même si l’icône de votre action est verte.

(3) Il est inutile et dangereux d’activer plusieurs actions de la même colonne. Cela risque d’entraîner un comportement aléatoire et bloquer votre application!

4.5 Récupération de l’image docker de l’application

Lors de l’action “push” un job “Construire-l-application” est déclenché. Ce dernier va créer une image docker de votre application, c-à-d que le code de votre application et ses dépendences (autres packages R et librairies systèmes) vont être “empacté”/“containerisé” dans un conteneur isolé (l’image docker).

Vous avez accès à l’image Docker créée par le pipeline CI/CD soit par l’interface GitLab dans votre dépôt (consultation) soit en ligne de commande (utilisation).

Sur l’interface Gitlab :

  • L’accès à l’image se fait via le menu à gauche “Packages and Registries -> Container registry.”
  • Cliquer sur le lien de l’image la plus récente (suffixé latest) pour récupérer l’URL d’identification.

En ligne de commande :

Docker doit être installé sur votre ordinateur.

Pour accèder au dépôt des images docker de votre projet :

  • si votre projet est public il n’y a rien a faire pour le moment
  • si votre projet est à accès restreint :
    • il faut créer un token d’accès dans le setting de votre projet (settings -> Access Tokens)
    • sélectionner read_registry et créer le token (attention le token/clé généré est à conserver soigneusement car il ne sera plus disponible après)
    • Vous connecter au registry docker de la forgemia
      docker login -u <ǹom_du_token> -t <le_token_gitlab> registry.forgemia.inra.fr
  • Ensuite :
    • Récupérer l’image et l’instancier en local : docker run -it -p 3838:3838 registry.forgemia.inra.fr/<Chemin du projet>:latest
    • Accéder à l’application en local via votre navigateur web : http://localhost:3838