Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

gestion des environnements


Sujet :

Exécution et industrialisation

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    juin 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2009
    Messages : 48
    Points : 29
    Points
    29
    Par défaut gestion des environnements
    Bonjour,

    Je dois faire un script d'extraction et de chargement dans le cadre de mon travail.
    J'aurai pu le faire en ksh mais j'ai préféré utilisé l'ETL Talend (pour la maintenabilité).

    Une fois (que j'aurai réussi, car ce n'est pas encore le cas ...) je voudrai déployer le package java dans des environnements différents : dev, preprod et prod. Savez vous comment je peux gérer ces différents environnements de manière simple ? J'ai crée un contexte mais je ne sais pas comment automatiser le changement de contexte en fonction de l'environnment...

    de plus j'ai fait 2 jobs unitaires et un job qui les pilotent.
    j'ai utilisé un contexte mais au moment de l'export j'ai trois fichiers de properties un par job, alors que je n'ai qu'un seul contexte et que l'information est la même...
    Ya t'il moyen d'avoir un seul fichier de paramètres Default.properties pour plusieurs jobs ?

    D'avance merci.

    Charles.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    février 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : février 2008
    Messages : 821
    Points : 1 201
    Points
    1 201
    Par défaut
    Alors dans l'ordre :

    Pour gérer mes variables d'environnement, j'utilise un fichier présent dans le home du user qui lance mes traitements.
    J'utilise ce fichier avec le tContextLoad implicite, ce qui permet d'alimenter toutes mes variables de contexte.

    Afin que mes jobs fonctionnent sous windows et linux, je passe en paramètre le chemin d'accès à ce fichier (via l'option --context_param).

    Lors de l'export des script, je ne demande donc plus d'exporter les contextes. (Chaque variable est soit passée en paramètre, soit alimentée via le load implicite).
    Sinon à mon avis, tu as un fichier contexte par job car tu n'as pas dû cocher l'option "Appliquer aux fils" lors de l'export ?

    Nicolas

  3. #3
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : août 2008
    Messages : 1 221
    Points : 6 500
    Points
    6 500
    Par défaut
    Citation Envoyé par oudin.charles Voir le message
    Bonjour,
    Savez vous comment je peux gérer ces différents environnements de manière simple ? J'ai crée un contexte mais je ne sais pas comment automatiser le changement de contexte en fonction de l'environnment...
    de plus j'ai fait 2 jobs unitaires et un job qui les pilotent.
    j'ai utilisé un contexte mais au moment de l'export j'ai trois fichiers de properties un par job, alors que je n'ai qu'un seul contexte et que l'information est la même...

    Ya t'il moyen d'avoir un seul fichier de paramètres Default.properties pour plusieurs jobs ?
    Pour cela tu peux créer des groupes de contextes différents :
    Un pour la DEV : default
    un pour la PREPROD : PREPROD
    un pour la PROD

    Pour cela quand tu crées un groupe de context, tu définis tes variables et ensuite tu vas dans l'onglet "values as table" et à droite de cette fenêtre tu as un petit bouton avec un angrenage. Clique dessus et défini tes 3 groupes de contextes. Du coup maintenant tu auras 3 colonnes pour remplir tes valeurs pour tes contextes : 1 colonne pour DEFAULT( DEV) 1 pour PREPROD et 1 pour PROD.

    Ensuite quand tu vas exporter tes scripts, tu auras 3 fichiers de paramètres DEFAULT, PREPROD ET PROD. Tu n'auras plus qu'à faire comme dis DevNico, ajouter le paramètre --context_param en indiquand le bon contexte.
    [/QUOTE]

    Par contre définit bien dans le job principal qui lance les autres job (via un tRunJob) "Transmit whole context" pour prendre le contexte de départ pour tous les jobs.
    Google est ton ami mais ton voisin aussi

    Modérateur BI - Responsable Talend
    Mes tutoriels - FAQ Talend - FAQ SQL*Plus

    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Suivez @Developpez sur twitter !

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    juin 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2009
    Messages : 48
    Points : 29
    Points
    29
    Par défaut
    merci pour l'explication

    j'ai mis 3 contextes
    un job pere et deux jobs fils
    j'ai coché dans le job pere l'option "transmettre tout le contexte"

    A l'export j'ai dans le repertoire du 1er job fils, le fichier de contexte par défaut
    Rien dans le repertoire du 2eme job fils
    et les 3 fichiers de contexte dans le master job.

    Si je modifie le fichier de contexte du 1er job fils en mettant des serveurs inconnus, il me met une erreur.

    je ne comprends pas pourquoi, il ne devait pas prendre en compte uniquement le contexte du père ?

    merci

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    juin 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2009
    Messages : 48
    Points : 29
    Points
    29
    Par défaut
    j'ai inversé dans mon dernier post


    dans le masterjob --> aucun fichier de contexte
    dans le 1er job fils --> les 3 fichiers de contexte
    dans le 2 eme job fils --> le fichier de contexte par defaut


    si je modifie ce dernier en mettant un nom de serveur inexistant, le traitement plante; ce qui n'est pas normal (si j'ai bien compris )

    merci

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    juin 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2009
    Messages : 48
    Points : 29
    Points
    29
    Par défaut
    J'ai refait tous mes jobs car je n'y suis pas arrivé

    2 jobs unitaires
    et un troisième composé de 2 trunjobs qui appellent ces 2 jobs unitaires.

    Au moment de l'export je ne sélectionne que le job père (qui contient les 2 trunjobs) et je coche "appliquer aux fils".

    J'ai bien crée 3 contextes : dev,pp et production

    quand j'exporte j'ai 3 fichiers properties par job unitaire et un fichier properties vide pour le job pere.

    Je ne sais plus ou chercher ... pouvez vous m'aider svp ?
    je souhaiterai a voir des fichiers properties à un et un seul endroit...

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    juin 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2009
    Messages : 48
    Points : 29
    Points
    29
    Par défaut
    Bonjour DevNico,

    Je vais essayer de me rabattre sur ta solution.

    quand tu utilises le load implicite, tu charges un fichier vers un tcontextload, mais dans le fichier comment appelles tu tes variables de contexte ? de la même manière que lorsque tu utilises un contexte exporté , càd
    context.KONTACT_ServiceName par exemple ?

    J'ai un contexte dans lequel les variables sont définis de la sorte :

    KONTACT_directoryLog
    KONTACT_filecsv
    KONTACT_Login
    KONTACT_Password
    KONTACT_Port
    KONTACT_Schema
    KONTACT_Server
    KONTACT_ServiceName


    et dans mon fichier j'ai :

    KONTACT_directoryLog;/opt/progs/kontact_ecim/extraction/
    KONTACT_filecsv;/opt/progs/kontact_ecim/extraction/extract_conso
    KONTACT_Login;KONTAKT_SEM_1
    KONTACT_Password;websphere2
    KONTACT_Port;1521
    KONTACT_Schema;KONTAKT_SEM_1
    KONTACT_Server;pfq-crm1.wanadoo.fr
    KONTACT_ServiceName;SE2K2

    et au moment du chargement du tloadimplicite j'ai l'erreur suivante :

    Error: Parameter "KONTACT_directoryLog" is a new parameter of tContextLoad_1
    Error: Parameter "KONTACT_filecsv" is a new parameter of tContextLoad_1
    Error: Parameter "KONTACT_Login" is a new parameter of tContextLoad_1
    Error: Parameter "KONTACT_Password" is a new parameter of tContextLoad_1
    Error: Parameter "KONTACT_Port" is a new parameter of tContextLoad_1
    Error: Parameter "KONTACT_Schema" is a new parameter of tContextLoad_1
    Error: Parameter "KONTACT_Server" is a new parameter of tContextLoad_1
    Error: Parameter "KONTACT_ServiceName" is a new parameter of tContex

    Aurez tu une idée ?

    merci

  8. #8
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    février 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : février 2008
    Messages : 821
    Points : 1 201
    Points
    1 201
    Par défaut
    Alors ce qu'on m'avait conseillé de faire, c'est d'utiliser un tContextDump afin de générer un fichier à partir des variables de contexte existantes.

    Ainsi, tu as directement un exemple de fichier au bon format.

    Bon après, j'ai toujours des alertes lors du chargement de mon fichier comme celles que tu montres (j'ai paramétré les 2 cas de paramètre non déclaré et de paramètre absent du fichier comme un warning).
    Mais bon, ça fonctionne. Je ne me suis jamais penché sur la raison de ces alertes qui, c'est vrai ne devraient pas apparaître.

    Nicolas

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    juin 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2009
    Messages : 48
    Points : 29
    Points
    29
    Par défaut
    merci devnico

    j'ai utilisé un tcontextdump pour générer mon fichier et ça fonctionne bien.

    par contre quand je lance mon job pere dans lequel il y a le tcontextload, celui-ci utilise les variables de contexte dans la rubrique context de TOS et non les variables chargées par loadcontext.

    Comment je le sais ? je me suis amusé à modifier le fichier csv dans lequel il y a les paramètres et cela fonctionen quand même.

    Y a til un paramètre à déclarer pour qu'il prenne les valeurs du contexte dynamiquement et non dans la rubrique contexte ?

    merci d'avance.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    juin 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2009
    Messages : 48
    Points : 29
    Points
    29
    Par défaut
    Est-ce que l'option LoadImplicite doit être cochée dans tous les jobs pere et jobs fils ? ou uniquement dans le job fils ?

  11. #11
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    février 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : février 2008
    Messages : 821
    Points : 1 201
    Points
    1 201
    Par défaut
    Citation Envoyé par oudin.charles Voir le message
    Est-ce que l'option LoadImplicite doit être cochée dans tous les jobs pere et jobs fils ? ou uniquement dans le job fils ?
    Bonne question... Sur laquelle je ne me suis pas encore penchée.

    Je dirais qu'il y a 2 possibilités :

    - Soit chaque job fait le load implicite, dans ce cas on ne passe du job père aux jobs fils que la variable contenant le chemin vers le fichier à charger.

    - Soit on choisit de ne faire le load que dans le job père. Dans ce cas il faut que toutes les variables de contexte soient déclarées dans le job père et chaque job fils doit récupérer les variables dont il a besoin du job père (voire cocher l'option "Transmettre tout le contexte" ).

    J'avoue que je ne me suis pas encore décidé là dessus...
    Qu'en penses-tu ?

    Nicolas

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    juin 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2009
    Messages : 48
    Points : 29
    Points
    29
    Par défaut
    je pense que les deux solutions sont bonnes même si je prefere celle avec héritage.

    Ce que j'ai fait c'est que j'ai paramétré le load implicite au niveau du projet comme ça je n'ai plus de souci.

    par contre, je ne sais pas comment utiliser le context-param dont tu parlais qui permet de spécifier le chemin où se trouve le fichieir de paramètre chargé par le contextLoad. pour le moment le chemin est en dur ...

    J'ai mis dans les paramètres du projet cette variable pour le fichier en question :

    context.DirParamScript+"ParamScriptExtract.csv"

    et j'ai rajouté DirParamScript dans le contexte du projet.

    Quand je lance le bat suivant
    cd %~dp0
    java -Xms256M -Xmx1024M -cp classpath.jar; kontact.extractkontact_0_1.ExtractKontact --context-param DirParamScript='E:\' %*


    j'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     
    Info: Parameter "DirParamScript" has not been set by tContextLoad_1
    Info: Parameter "DirParamScript" has not been set by tContextLoad_1
    Info: Parameter "DirParamScript" has not been set by tContextLoad_1
    Info: Parameter "DirParamScript" has not been set by tContextLoad_1
    Exception in thread "main" java.lang.Error: ProblÞme de compilation non rÚsolu :
     
            context.DirParamScript ne peut pas Ûtre rÚsolu ou n'est pas un champ
     
            at kontact.extract_table_kontact_0_1.extract_table_kontact.Implicit_Cont
    ext_DelimitedProcess(extract_table_kontact.java:444)
            at kontact.extract_table_kontact_0_1.extract_table_kontact.runJobInTOS(e
    xtract_table_kontact.java:4573)
            at kontact.extract_table_kontact_0_1.extract_table_kontact.runJob(extrac
    t_table_kontact.java:4469)
            at kontact.extractkontact_0_1.ExtractKontact.tRunJob_1Process(ExtractKon
    tact.java:853)
            at kontact.extractkontact_0_1.ExtractKontact.tRunJob_6Process(ExtractKon
    tact.java:793)
            at kontact.extractkontact_0_1.ExtractKontact.runJobInTOS(ExtractKontact.
    java:2019)
            at kontact.extractkontact_0_1.ExtractKontact.main(ExtractKontact.java:18
    97)
     
    E:\ExtractKontact_0.1\ExtractKontact>
    Aurais tu une idée ?

    comment doit on spécifier un variable projet de type context-param dans TOS ? est-ce dans la partie contexte? je n'ai pas trouvé cela dans la doc.

    merci d'avance.

  13. #13
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    février 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : février 2008
    Messages : 821
    Points : 1 201
    Points
    1 201
    Par défaut
    Effectivement, tes variables doivent être définies dans chaque job.
    Pour ma part, j'utilise effectivement les contextes du Référentiel (un par type de variable (Répertoires, Base de données, Variables internes).
    Mais ce n'est pas propre aux variables que tu passes en paramètre je pense.

    Pour le passage de paramètre, ca l'air de correspondre à ce que tu fais : --context-param DirParamScript='E:\'

    La différence, c'est que je passe le chemin et le nom du fichier. Du coup, au niveau du paramétrage du Implicit Context Load dans les propriétés du projet, j'ai juste : context.FicCfg.
    (Je passe donc un paramètre '--context_param FicCfg=$HOME/projet.properties' à ma commande java)

    Nicolas

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    juin 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2009
    Messages : 48
    Points : 29
    Points
    29
    Par défaut
    Bonjour Devnico

    j'ai utilisé le ligne de commande que tu m'as donné et cela fonctionne bien.

    merci beaucoup

    je cloture le sujet.

    Charles

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.0] php, javascript, MVC et gestion des environnements
    Par grinder59 dans le forum Langage
    Réponses: 2
    Dernier message: 19/06/2014, 14h20
  2. Réponses: 0
    Dernier message: 24/11/2010, 10h13
  3. [AC-2003] Gestion des environnements (prod/dev)
    Par Dapangma dans le forum VBA Access
    Réponses: 6
    Dernier message: 06/07/2010, 09h05
  4. [1.x] [1.0.12]Gestion des dates dans un environnement international
    Par pmithrandir dans le forum Symfony
    Réponses: 1
    Dernier message: 16/10/2009, 11h20
  5. Gestion des fenetres dans un environnement MDI
    Par jcb47 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 16/06/2008, 12h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo