Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in
S
sumaris-doc
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Operations
    • Operations
    • Metrics
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • sih-public
  • sumaris
  • sumaris-doc
  • Wiki
  • Home

Last edited by BRUVRY-LAGADEC Mar 09, 2021
Page history

Home

DevOps

POD - Intégration continue

Un processus d'intégration continue utilisant Gitlab-CI a été mis en place. Il se décompose en plusieurs tâches :

  1. build_auto : Génération du livrable (lancé automatiquement à l'exécution du pipeline).
  2. build_registry : Génération du livrable et déploiement sur le package registry maven du projet gitlab.

POD - Génération du livrable

Sachant que la configuration de sumaris-pod pour une base Oracle adagio est pour l'instant définie sur une branche spécifique du projet il faut commencer par exécuter le pipeline d'intégration continue sur cette cette branche : feature-oracle-adagio.

Dans le menu Intégration et livraison continue cliquer sur le bouton Exécuter un pipeline et configurer son exécution sur la branche feature-oracle-adagio.

Exécuter le tâche build_registry qui build l'application et déploie l'artefact (un WAR) dans le package registry du projet gitlab :

deploy_pipeline

APP - Intégration continue

Un processus d'intégration continue utilisant Gitlab-CI a été mis en place. Il se décompose en plusieurs tâches :

  1. build_auto : Génération du livrable (lancé automatiquement à l'exécution du pipeline).
  2. build_registry : Génération du livrable et déploiement sur le package registry générique du projet gitlab.

APP - Génération du livrable

Dans le menu Intégration et livraison continue cliquer sur le bouton Exécuter un pipeline et configurer son exécution sur la branche souhaitée, pour imagine pour l'instant selectionner la branche *develop-imagine (configurable dans le fichier .gitlab-ci.yml).

exec_pipeline

Lancer ensuite la tâche build_registry qui build l'application et déploie l'artefact (une archive au format ZIP) dans le package registry du projet gitlab :

deploy_pipeline_app

Génération de l'environnement docker

Le projet Devops isi-sih-sumaris permet de builder l'environnement docker nécessaire à l'exécution de l'application imagine par le biais d'un pipeline d'intégration continue. (Demander les droits d'accès au projet si nécessaire).

L'exécution de ce pipeline à pour effet d'aller chercher les livrables générés en amont (pour le POD et l'APP), de les packager automatiquement dans une image docker et de les rendre accessibles via la bibliothèque d’images docker Ifremer (docker registry).

Dans le fichier de configuration gitlab-ci.yml éditer les versions à déployer pour l'APP et le POD (APP_VERSION). L'enregistrement de ce fichier aura pour effet de lancer automatiquement les builds des environnements de développement.

NB : Si vous ne souhaitez pas changer les numéros de versions à générer alors depuis le menu Intégration et livraison continue cliquer sur le bouton Exécuter un pipeline en haut à droite.

exec_pipeline

Exécution de l'environnement docker

Générale

Il reste maintenant à récupérer le.s environnement.s docker souhaité.s sur une machine sur laquelle docker est installé.

Documentation concernant l'exécution du pod

Documentation concernant l'exécution de l'app

Spécifique imagine

Dans le cadre d'imagine des scripts ont été mis en place sur la machine visi-common-docker1 afin de faciliter l'exécution de l'application dans un environnement docker.

Environnement de recette

POD

# connexion à une machine docker
ssh isi_exp@visi-common-docker1
# build de l'image docker
cd /export/home/docker/duifremer/sih/imagine/sumaris-pod
./deploy-recette.sh 1.7.2-SNAPSHOT

APP

# connexion à une machine docker
ssh isi_exp@visi-common-docker1
# build de l'image docker
cd /export/home/docker/duifremer/sih/imagine/sumaris-app
./deploy-recette.sh 1.6.6

Environnement de test

POD

# connexion à une machine docker
ssh isi_exp@visi-common-docker1
# build de l'image docker
cd /export/home/docker/duifremer/sih/imagine/sumaris-pod
./deploy-test.sh 1.7.2-SNAPSHOT

APP

# connexion à une machine docker
ssh isi_exp@visi-common-docker1
# build de l'image docker
cd /export/home/docker/duifremer/sih/imagine/sumaris-app
./deploy-test.sh 1.6.6

Monitoring

Commandes utiles pour le monitoring

# liste les images docker disponible sur le machine
docker images

# liste les conteneur qui tournent sur la machine
docker ps -a

# consulter les logs des conteneurs
docker logs -f sumaris-app-recette-container
docker logs -f sumaris-server-recette-container

# rentrer dans les conteneurs en bash
docker exec --it sumaris-app-recette-container bash
docker exec --it sumaris-server-recette-container bash

Accessibilité

URL POD recette : http://visi-common-docker1.ifremer.fr:8080/
URL APP recette : http://visi-common-docker1.ifremer.fr:8081/

URL POD test : http://visi-common-docker1.ifremer.fr:8082/
URL APP test: http://visi-common-docker1.ifremer.fr:8083/

Déploiement manuel de l'application

Dans le cas ou le process d'intégration continue n'est pas opérationnel, il est possible de générer manuellement les livrables (faire la demande à l'équipe de développement en précisent bien l'environnement souhaité).

Il faut ensuite copier manuellement les livrables dans l'arborescence de fichier de la machine visi-common-docker1 et générer puis exécuter l'environnement docker souhaité, par exemple pour la recette :

POD

# copie du livrable du pod
scp -p sumaris-server.war isi_exp@visi-common-docker1:/export/home/docker/duifremer/sih/imagine/sumaris-pod/image/files/application/sumaris-server.war

# connexion à la machine docker
ssh isi_exp@visi-common-docker1
# build de l'image docker
cd /export/home/docker/duifremer/sih/imagine/sumaris-pod/image
./build.sh
# exécution du conteneur avec l'environnement de recette
cd /export/home/docker/duifremer/sih/imagine/sumaris-pod/run
./run.sh recette 8080

APP

# copie du war 
scp -p sumaris-app.zip isi_exp@visi-common-docker1:/export/home/docker/duifremer/sih/imagine/sumaris-app/image/files/application/sumaris-app.zip

# connexion à la machine docker
ssh isi_exp@visi-common-docker1
# build de l'image docker
cd /export/home/docker/duifremer/sih/imagine/sumaris-app/image
./build.sh
# exécution du conteneur
cd /export/home/docker/duifremer/sih/imagine/sumaris-app/run
./run.sh

Configuration Imagine APP

conf serveur imagine

conf_serveur_1 conf_serveur_2

ajouter ces 3 options spécifques pour pointer sur une base 'oracle':

  • Libellé du profil Administrateur : ALLEGRO_ADMINISTRATEUR
  • Libellé du profil Utilisateur : ALLEGRO_UTILISATEUR
  • Libellé du profil Superviseur : ALLEGRO_SUPER_UTILISATEUR

conf programme paramètres bio

Capture

conf hsqldb

conf serveur imagine hsqldb

conf_serveur

conf programme paramètres bio hsqldb

conf_programme

Release note Imagine POD

Demande au guichet d'exploitation

Avant de déployer Imagine, les entités suivantes doivent être créées dans Harmonie. Pour les PMFM faire une demande au guichet d'exploitation.

<PROGRAM CODE="SIH-PARAM-BIO" NAME="Programme d'observation des paramètres biologiques" DESCRIPTION="Programme d'observation des paramètres biologiques" STATUS_FK="1" GEAR_CLASSIFICATION_FK="1" TAXON_GROUP_TYPE_FK="2"/>
<PROGRAM2LOCATION_CLASSIF PROGRAM_FK="SIH-PARAM-BIO" LOCATION_CLASSIFICATION_FK="2"/>

<PARAMETER LABEL="MORSE_CODE" NAME="Code Morse" IS_QUALITATIVE="0" IS_ALPHANUMERIC="1" STATUS_FK="1"/>
<PARAMETER LABEL="STRATEGY_LABEL" NAME="Stratégie" IS_QUALITATIVE="0" IS_ALPHANUMERIC="1" STATUS_FK="1"/>

<PMFM PARAMETER_FK="MORSE_CODE" LABEL="MORSE_CODE" MATRIX_FK="21" FRACTION_FK="1" METHOD_FK="3" UNIT_FK="4" STATUS_FK="1"/>
<PMFM PARAMETER_FK="STRATEGY_LABEL" LABEL="STRATEGY_LABEL" MATRIX_FK="21" FRACTION_FK="1" METHOD_FK="3" UNIT_FK="4" STATUS_FK="1"/>

Traduction des requête au format Oracle :

insert into PROGRAM (CODE,NAME,DESCRIPTION,STATUS_FK,GEAR_CLASSIFICATION_FK,TAXON_GROUP_TYPE_FK) values ('SIH-PARAM-BIO','Programme d observation des paramètres biologiques','Programme d observation des paramètres biologiques',1,2);
insert into PROGRAM2LOCATION_CLASSIF (PROGRAM_FK,LOCATION_CLASSIFICATION_FK) values ('SIH-PARAM-BIO',2);

insert into PARAMETER (CODE,NAME,IS_QUALITATIVE,IS_TAXINOMIC,IS_CALCULATED,IS_ALPHANUMERIC,PARAMETER_GROUP_FK,STATUS_FK,CREATION_DATE) values ('MORSE_CODE','Code Morse',0,0,0,1,1,1,sysdate);
insert into PARAMETER (CODE,NAME,IS_QUALITATIVE,IS_TAXINOMIC,IS_CALCULATED,IS_ALPHANUMERIC,PARAMETER_GROUP_FK,STATUS_FK,CREATION_DATE) values ('STRATEGY_LABEL','Stratégie',0,0,0,1,1,1,sysdate);

insert into PMFM (PARAMETER_FK,LABEL,MATRIX_FK,FRACTION_FK,METHOD_FK,UNIT_FK,AGGREGATION_LEVEL_FK,STATUS_FK,CREATION_DATE) values ('MORSE_CODE','MORSE_CODE',21,1,3,4,1,1,sysdate);
insert into PMFM (PARAMETER_FK,LABEL,MATRIX_FK,FRACTION_FK,METHOD_FK,UNIT_FK,AGGREGATION_LEVEL_FK,STATUS_FK,CREATION_DATE) values ('STRATEGY_LABEL','STRATEGY_LABEL',21,1,3,4,1,1,sysdate);

Configuration du serveur

Il faut ensuite surcharger les identifiants des PMFM utilisés par Imagine, le mieux est de le faire depuis l'IHM de l'application en étant connecté en tant qu'administrateur, menu Configuration du serveur.

Sinon il est également possible de faire directement les insertions en base en prenant bien garde à renseigner l'ID correspondant dans la base de données pour le champ NAME.

INSERT INTO SOFTWARE_PROPERTY(ID, LABEL, NAME, CREATION_DATE, UPDATE_DATE, SOFTWARE_FK, STATUS_FK)
SELECT SOFTWARE_PROPERTY_SEQ.nextval, 'sumaris.enumeration.pmfm.AGE.id', '2269', sysdate, systimestamp, S.ID, '1'
FROM SOFTWARE S WHERE S.LABEL = 'IMAGiNE';
      
INSERT INTO SOFTWARE_PROPERTY(ID, LABEL, NAME, CREATION_DATE, UPDATE_DATE, SOFTWARE_FK, STATUS_FK)
SELECT SOFTWARE_PROPERTY_SEQ.nextval, 'sumaris.enumeration.pmfm.SEX.id', '196', sysdate, systimestamp, S.ID, '1'
FROM SOFTWARE S WHERE S.LABEL = 'IMAGiNE';
      
INSERT INTO SOFTWARE_PROPERTY(ID, LABEL, NAME, CREATION_DATE, UPDATE_DATE, SOFTWARE_FK, STATUS_FK)
SELECT SOFTWARE_PROPERTY_SEQ.nextval, 'sumaris.enumeration.pmfm.MORSE_CODE.id', '358', sysdate, systimestamp, S.ID, '1'
FROM SOFTWARE S WHERE S.LABEL = 'IMAGiNE';
      
INSERT INTO SOFTWARE_PROPERTY(ID, LABEL, NAME, CREATION_DATE, UPDATE_DATE, SOFTWARE_FK, STATUS_FK)
SELECT SOFTWARE_PROPERTY_SEQ.nextval, 'sumaris.enumeration.pmfm.STRATEGY_LABEL.id', '359', sysdate, systimestamp, S.ID, '1'
FROM SOFTWARE S WHERE S.LABEL = 'IMAGiNE';
Clone repository
  • Home