0
votes

Analysez les données à l'aide du script de pipeline Jenkins Groovy

Je récupère l'objet JSON à partir d'une URL à l'aide de httpRequest dans un script groovy. xxx

Je suis intéressé par la chaîne Customfield String . Le format de la chaîne est: xxx

Je voudrais analyser la chaîne en 3 ensembles de données:

  1. Carte des applications [Application: Version] (il y aura toujours une composition)
  2. Liste des testsuites [TestSuite1, ..., TestSuite]
  3. Plan de Prodcts [Produit1: Version, ..., Productn: Version].

    Cependant, je ne sais pas comment faire cela. Y a-t-il des bibliothèques Jenkins Groovy que je peux utiliser pour le faire dans un pipeline déclaratif?

    EDIT Basé sur la réponse ci-dessous, je peux voir que je peux faire une carte de la manière suivante: xxx

    dans l'exemple que j'ai: xxx

    Comment puis-je obtenir: Application = [Application: 01.01.01]

    Edit2 Notez la sortie suivante: xxx


0 commentaires

3 Réponses :


1
votes

Il n'y a pas de bibliothèques que je connaisse que cela aura une fonctionnalité pour analyser les données, mais que vous connaissez le format des données, il est facile de les analyser manuellement .

Il y a 3 groupes dans l'entrée ( applications , suites , produits ) séparés par un caractère. Pour obtenir les groupes dont vous avez besoin: xxx

Pour traiter les applications Vous devez diviser le groupe 0 avec , caractère (juste au cas où il y a de nombreuses applications ). Vous avez une liste de paires au format: nom! Version . Chaque paire doit être divisée avec ! , vous obtenez donc une liste de listes de format: [[nom, version]] . De la dernière structure, il est facile de créer une carte. Toutes les étapes: xxx

obtenir la liste des suites est facile, il suffit de diviser le groupe 1 avec , caractère: xxx

Enfin, les produits sont analogiques à la liste des applications, mais ce groupe de temps 2 doit être utilisé: xxx


7 commentaires

Merci. Les suites sont correctement analysées. Mais les applications et les produits sont générés comme [d: e] et [t: e] .


@Ssf, c'est correct. Ils sont retournés comme des cartes, comme vous avez demandé votre question.


Désolé mon commentaire était faux. Ils sont retournés en tant que carte, mais seuls les premier et second caractères: je veux [Application: 01.01.01], [Produit: 01.01.01, produit2: 01.01.02]. Mais j'ai eu [A: P] et [p: r]


@Ssf ici Vous avez un gist: gist.github.com/opalo/45b6ae9DB723ad65c128E7B9B67C78EB - Comparez-le avec votre code.


Non malheureusement.


@Ssf, vous n'avez pas copié mon code littéralement - veuillez consulter ma réponse une fois de nouveau et utiliser la solution fournie correctement. Je viens de vérifier cela et ça marche correctement.


Je ne sais pas comment vous obtenez l'élément 0 et l'élément 1 de la liste. Utilisation de .CollectTries {[(IT [0]): IT [1]] me donne le caractère 0 et le caractère 1 des listes. Par conséquent, je me retrouve avec [A: P] et [P: R]. Comme s'opposer à [Application: 01.01.01] Pour l'application et [Produit: 01.01.01] Pour les produits.



1
votes

Vous pouvez simplifier votre problème en utilisant l'étape de l'utilitaire de pipeline: Readjson xxx


1 commentaires

Merci. Cela ne me donne pas ce que j'étais après.



0
votes

J'ai trouvé une méthode. Groovy peut convertir les valeurs d'un tableau d'objet et les convertir en carte avec le Tosproadmap () code>. Cependant, la matrice doit avoir un nombre pair d'éléments.

def appList = ['DevOpsApplication', '01.01.01']
def appMap = appList.toSpreadMap()


0 commentaires