6 Configuration avancée
6.1 Modification des variables SK8 par défaut
Les variables par défaut présentées ci-dessous sont utilisées pour générer le Dockerfile. Elles peuvent être modifiées dans le fichier .gitlab-ci-sk8.yml
.
MISE_A_JOUR_AUTOMATIQUE
: “true
” pour mettre à jour l’application automatiquement à chaque commit. Défaut “false
”R_DOCKER_IMAGE_REPOSITORY
: Image docker de base utilisée pour containeriser l’application. Défaut “r-base
”R_DOCKER_IMAGE_TAG
: “” : Permet d’utiliser un tag spécifique utilisé par défaut dans le dockerfile généré.R_VERSION
: Version de R utilisée par docker. Défaut la version stable actuelleDOCKERFILE_NAME
: Nom du fichier Dockerfile à utiliser, par défaut “Dockerfile”SK8_DEBUG
: “true
” pour lancer les pipelines CI/CD en mode debug : les logs seront plus verbeux. Defaut : “false
”DOCKER_FORCE_REGEN
: “true
” pour forçer la recréation de l’image de l’application sans utiliser les caches. Defaut : “false
”DOCKERFILE_TYPE
: “renv+rshiny
”, spécifie le type de Dockerfile à utiliser (suite de tag possible: “renv” + “rshiny” + “bioc” + “shinyserver”)
Ci-dessous un exemple permettant de changer la version de R utilisée :
variables:
R_VERSION: "4.1.3"
A noter que dans le cas où vous fournissez votre propre Dockerfile, seule la variable MISE_A_JOUR_AUTOMATIQUE
sera prise en compte.
6.2 Ajouter des jobs au pipeline : modification du fichier .gitlab-ci.yml
Le fichier .gitlab-ci.yml
permet de paramétrer le pipeline de votre projet. Par défaut il utilise des templates crées par SK8 qui ne peuvent être modifiés.
Vous pouvez ajouter vos propres tâches/jobs dans ce fichier en conservant bien ceux de SK8.
Les stages
.pre
et .post
peuvent être utilisés pour ajouter respectivement avant ou après des jobs.
Le premier job du pipeline SK8 Configuration
récupère ou génére des fichiers utilisés par les différents jobs suivants.
Vous pouvez télécharger ces fichiers en allant sur ce job et en cliquant sur la partie droite Job artifacts Download
.
Actuellement le zip contient:
- Le
Dockerfile
généré.
- Le fichier
renv.lock
existant ou un equivalent généré.
6.3 Modifier le DockerFile du template
Par défaut, le Dockerfile nécessaire à la génération de l’image docker de votre application est créé à la volée par SK8 dans le job Configuration
du pipeline, sauf si votre propre Dockerfile est déjà présent dans le repository (dans ce dernier cas le job Configuration
n’est pas activé).
Il est possible de télécharger (via l’artifact du job Configuration
) le Dockerfile généré par SK8 pour disposer d’une première base de Dockerfile, puis de le modifier et l’inclure dans le projet.
Pour le modifier, et intégrer votre propres commandes, il vous faudra à minima activer le package renv
en local sur votre machine et commiter le fichier renv.lock
généré.
6.4 Fournir son propre Dockerfile
Si vous fournissez votre propre Dockerfile vous devez à minima exposer l’application sur le port 3838, i.e. votre Dockerfile devrait contenir les lignes suivantes :
EXPOSE 3838
# Si l'application est installée dans /home/shiny/mon_projet
CMD ["sh", "-c", "Rscript -e \"shiny::runApp('/home/shiny/mon_projet', port = 3838, host = '0.0.0.0')\""]
6.5 Lancer localement l’image docker de mon 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’est-à-dire que le code de votre application et ses dépendances (autres packages R et librairies systèmes) vont être “empacté” dans un conteneur isolé (l’image docker).
Vous pouvez accéder à 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 :
Pour accéder au dépôt des images docker de votre projet :
Si votre projet est public, il n’y a rien à faire pour le moment
Si votre projet est à accès restreint (interne ou privé), il vous faut :
Créer un token d’accès dans les settings de votre projet (settings -> Access Tokens -> Add new token)
Sélectionner le rôle
Développeur
à minima et le scoperead_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 <nom_du_token> -p <le_token_gitlab> registry.forgemia.inra.fr
Ensuite :
- Instancier le container 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