Comment get tous les environnements de triggersment à partir de la database SQL Server

J'essaie d'interroger la database de bambou pour get l'information suivante. Je veux find l' information de triggersment , qui est quel environnement est déclenché par quelle twig sur quel plan de construction. Le problème est que certains environnements peuvent être déclenchés par d'autres environnements .

Jusqu'à présent, j'ai consulté la database Bamboo et il me semble avoir la plupart, sinon toutes les informations dont j'ai besoin. Ce que j'ai fait est qu'il y a une table dans la database Bamboo appelée dbo.Deployment_Environment qui a les champs, EnvironmentID et Triggers_XML_Data qui est exactement ce dont j'ai besoin. Ensuite, il y a une autre table appelée le dbo. Deployment_Result qui a le EnvironmentID , Deployment_State et le Trigger_Reason .

De ces deux tables ce que je pense que je dois faire est ceci. select toutes ces colonnes mais si le sortinggger_reason contient l' environnement et aussi si le sortingggers_xml_data contient l' environnement , alors récupérez cet environnement à partir de the sortingggers_xml_Data (ceci est sous le noeud xml / item / value ). Une fois que vous avez obtenu cet ID, select toutes les mêmes colonnes et répétez le process si l'environnement est la raison du deployment à nouveau jusqu'à ce que ce ne soit pas le cas. Le type de données sortingggers_xml_data est ntext et le sortinggger_reason est nvarchar .

Je ne sais pas exactement comment je peux le faire en SQL c'est ce que j'essaie jusqu'ici mais je ne peux pas get la bonne information:

alter proc dbo.myStoredProc3 as Declare @EnvironmentID int select @EnvironmentID as ENVIRONMENT_ID, de.ENVIRONMENT_ID, dr.DEPLOYMENT_STATE, de.TRIGGERS_XML_DATA, dr.TRIGGER_REASON, de.NAME from dbo.BUILDRESULTSUMMARY as br, dbo.DEPLOYMENT_ENVIRONMENT as de, dbo.DEPLOYMENT_RESULT as dr where dr.TRIGGER_REASON like '%environment%' ( select de2.ENVIRONMENT_ID as 'test' from dbo.DEPLOYMENT_ENVIRONMENT as de2 ) 

Je sais que cela n'obtiendra pas la bonne information mais chaque fois que j'essayais de faire des requêtes ou des instructions dans le SQL cela créerait aussi une erreur: Comment faire cette requête correctement? Je pense que j'ai toutes les informations dont j'ai besoin mais sinon je peux en append d'autres.

J'ai aussi essayé de faire ce qui suit:

 While (@Counter <= 5) Begin Select de.NAME As 'Deployment Name', dr.TRIGGER_REASON as 'Trigger Reason', dr.DEPLOYMENT_STATE as 'Status' from dbo.DEPLOYMENT_ENVIRONMENT as de, dbo.DEPLOYMENT_RESULT as dr Where de.TRIGGERS_XML_DATA like '%environment%' and dr.TRIGGER_REASON like '%environment%' SET @Counter = @Counter + 1 END 

Mais cela ne va pas lier les colonnes que je reçois. Si le Trigger_Reason concerne l' environnement, alors dans le ntext il aura un noeud qui a l' environmentID , je veux l'get et le définir comme une variable , que je peux utiliser pour get d'autres colonnes qui se lient set, par exemple Select name from dbo.Environment where @NewEnvironmentID = de.EnvironmentID.

modifier

En utilisant la requête SQL suivante:

 alter proc getEnvironmentTriggers @EnvironmentID int as Select a.NAME, a.TRIGGERS_XML_DATA, a.TRIGGER_REASON, a.ENVIRONMENT_ID From (Select de.NAME, de.TRIGGERS_XML_DATA, de.ENVIRONMENT_ID, dr.TRIGGER_REASON From dbo.DEPLOYMENT_ENVIRONMENT as de Inner join dbo.DEPLOYMENT_RESULT as dr on dr.ENVIRONMENT_ID = de.ENVIRONMENT_ID Where @EnvironmentID = de.ENVIRONMENT_ID and de.TRIGGERS_XML_DATA like '%Environment%' and dr.TRIGGER_REASON like '%Environment%' ) a 

Je me rapproche de ce dont j'ai besoin. Pour ce faire et l'exécution de la procédure stockée comme ceci: exec dbo.getEnvironmentTriggers 15892483 , cela returnnera dans la requête à l'intérieur du ntext l de la TRIGGERS_XML_DATA , aura une valeur de 18317322, puis en utilisant cet ID, je peux get la valeur de 19234819 , c'est alors le dernier environnement qui triggers tous mes environnements de cette identification.

Donc, ce que j'essaie de faire est la suivante:

  1. De manière automatisée, obtenez tous ces identifiants en faisant ce qui suit.
  2. Exec la procédure stockée en utilisant tous les ID (peut-être en utilisant une sorte de pour chaque façon).
  3. Recherchez la colonne ntext dans le SQL pour get l'ID de l'environnement (ceci est dans le noeud / élément / valeur suivant .
  4. Stocker cela comme une variable, puis l'utiliser pour get toutes les colonnes de l'autre procédure stockée.
  5. Si des colonnes sont renvoyées à l'aide de la procédure stockée, réexécutez la procédure, sinon exportez toutes les colonnes TRIGGER_XML_DATA obtenues à partir des procédures stockées.

Y a-t-il un moyen de le faire?

Voir ma réponse ici – https://answers.atlassian.com/questions/44908050/how-to-get-the-sortinggger-information-fr-the-bamboo-database

Pas sûr qu'il soit possible de faire avec SQL simple

Qu'en est-il de l'utilisation de l' API REST de Bamboo

 http://bamboo_host/rest/api/latest/plan.json?expand=plans.plan.actions