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 :
- build_auto : Génération du livrable (lancé automatiquement à l'exécution du pipeline).
- 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 :
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 :
- build_auto : Génération du livrable (lancé automatiquement à l'exécution du pipeline).
- 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
).
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 :
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.
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
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
conf hsqldb
conf serveur imagine hsqldb
conf programme paramètres bio hsqldb
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';