ItsMyConsole.Tools.AzureDevOps
0.7.0
See the version list below for details.
dotnet add package ItsMyConsole.Tools.AzureDevOps --version 0.7.0
NuGet\Install-Package ItsMyConsole.Tools.AzureDevOps -Version 0.7.0
<PackageReference Include="ItsMyConsole.Tools.AzureDevOps" Version="0.7.0" />
paket add ItsMyConsole.Tools.AzureDevOps --version 0.7.0
#r "nuget: ItsMyConsole.Tools.AzureDevOps, 0.7.0"
// Install ItsMyConsole.Tools.AzureDevOps as a Cake Addin #addin nuget:?package=ItsMyConsole.Tools.AzureDevOps&version=0.7.0 // Install ItsMyConsole.Tools.AzureDevOps as a Cake Tool #tool nuget:?package=ItsMyConsole.Tools.AzureDevOps&version=0.7.0
ItsMyConsole.Tools.AzureDevOps
Outil Azure DevOps (Création/Modification WorkItem) pour le Framework ItsMyConsole
Sommaire
- Pourquoi faire ?
- Getting Started
- Comment se servir de l'outil ?
- Ajout d'une configuration serveur Azure DevOps
- Création d'un WorkItem
- Modification d'un WorkItem
- Récupération des informations d'un WorkItem
- Suppression d'un WorkItem
- Ajout d'une relation entre WorkItems
- Récupération de l'itération courante d'un projet
- Récupération du nom de la configuration Azure DevOps
Pourquoi faire ?
Vous allez pouvoir étendre le Framework pour application Console .Net ItsMyConsole
avec un outil de manipulation des WorkItems d'Azure DevOps.
L'outil ItsMyConsole.Tools.AzureDevOps
met à disposition :
- La création de WorkItem
- La modification de WorkItem
- La récupération des informations d'un WorkItem
- La suppression d'un WorkItem
- L'ajout de relations entre les WorkItems
- L'itération courante pour un projet
Getting Started
- Créer un projet "Application Console .Net" avec le nom "MyExampleConsole"
- Ajouter
ItsMyConsole
au projet depuis le gestionnaire de package NuGet - Ajouter
ItsMyConsole.Tools.AzureDevOps
au projet depuis le gestionnaire de package NuGet - Aller sur le site web de votre serveur Azure DevOps
- Cliquer sur l'icône de votre profil, puis "Sécurité"
- Créer un nouveau jeton d'accès personnel, exemple de procédure ici, et faite une sauvegarde de la valeur
- Dans le projet, modifier la méthode "Main" dans le fichier "Program.cs" par le code suivant :
using ItsMyConsole;
using ItsMyConsole.Tools.AzureDevOps;
using System;
using System.Threading.Tasks;
namespace MyExampleConsole
{
class Program
{
static async Task Main()
{
ConsoleCommandLineInterpreter ccli = new ConsoleCommandLineInterpreter();
// Console configuration
ccli.Configure(options => {
options.Prompt = ">> ";
options.LineBreakBetweenCommands = true;
options.HeaderText = "##################\n# Azure DevOps #\n##################\n";
options.TrimCommand = true;
});
// Azure DevOps configuration
ccli.AddAzureDevOpsServer(new AzureDevOpsServer {
Name = "TEST",
Url = "https://<SERVEUR>",
PersonalAccessToken = "<TOKEN>"
});
// Display the title of the workitem
// Example : wi 1234
ccli.AddCommand("^wi [0-9]*$", async tools => {
int workItemId = Convert.ToInt32(tools.CommandArgs[1]);
WorkItem workItem = await tools.AzureDevOps("TEST").GetWorkItemAsync(workItemId);
Console.WriteLine($"WI {workItemId} - {workItem.Title}");
});
await ccli.RunAsync();
}
}
}
Voici le résultat attendu lors de l'utilisation de la Console :
Dans cet exemple de code on a configuré avec Configure
, le prompt d’attente des commandes options.Prompt
, la présence d'un saut de ligne entre les saisies options.LineBreakBetweenCommands
et l’en-tête affichée au lancement options.HeaderText
.
On ajoute la configuration du serveur Azure DevOps avec AddAzureDevOpsServer
et on lui renseigne un nom Name
qui permet de différentier si on configure plusieurs serveurs, l'url d'Azure DevOps Url
et le jeton d'accès personnel PersonalAccessToken
.
Puis avec AddCommand
, on a ajouté un pattern d’interprétation des lignes de commande ^wi [0-9]*$
(commence par "wi" et suivi d'un nombre).
Lors de l'exécution de la Console, si on saisit une commande qui commence par "wi" avec un nombre à la suite, il lancera l'implémentation de l'action associée. Dans cet exemple, il récupère l'identifiant du WorkItem en utilisant tools.CommandArgs
depuis les outils disponibles (tableau des arguments de la ligne de commande) pour lui permet de récupérer les informations du WorkItem associé avec tools.AzureDevOps("TEST").GetWorkItemAsync
(ici "TEST" c'est le nom donné à la configuration du serveur). Avec les informations récupérées, il affiche son titre dans la Console.
Maintenant que l'on a configuré la Console et l'implémentation de l'action associée au pattern ^wi [0-9]*$
, l'utilisation de RunAsync
lance la mise en attente d'une saisie de commande par l'utilisateur.
Comment se servir de l'outil ?
Tout d'abord, vous devez ajouter une configuration serveur Azure DevOps avec AddAzureDevOpsServer
et définir un nom Name
.
Vous pouvez ensuite accéder à l'outil Azure DevOps lorsque vous ajoutez une interprétation de commande avec AddCommand
.
Le nom défini lors de la configuration permet de cibler le serveur lors de l'utilisation de l'outil.
ConsoleCommandLineInterpreter ccli = new ConsoleCommandLineInterpreter();
// Azure DevOps configuration
ccli.AddAzureDevOpsServer(new AzureDevOpsServer {/* */});
// Add command
ccli.AddCommand("<PATTERN>", async tools =>
{
WorkItem example = await tools.AzureDevOps("<NAME>").GetWorkItemAsync(1234);
});
Vous devez ajouter using ItsMyConsole.Tools.AzureDevOps;
pour avoir accès a l'outil Azure DevOps depuis tools
de AddCommand
.
Ajout d'une configuration serveur Azure DevOps
Vous pouvez ajouter une configuration d'un serveur Azure DevOps en utilisant AddAzureDevOpsServer
.
Propriété | Description |
---|---|
Name | Nom unique du serveur Azure DevOps qui sert de désignation lors de son utilisation |
Url | L'URL du serveur Azure DevOps |
PersonalAccessToken | Le token d'accès personnel au serveur Azure DevOps. Vous devez le créer depuis votre site web d'Azure DevOps. Exemple de procédure ici |
ConsoleCommandLineInterpreter ccli = new ConsoleCommandLineInterpreter();
// Azure DevOps configuration
ccli.AddAzureDevOpsServer(new AzureDevOpsServer {
Name = "TEST",
Url = "https://<SERVEUR>",
PersonalAccessToken = "<TOKEN>"
});
Si vous avez plusieurs serveurs Azure DevOps, le nom Name
permet de cibler celui que vous voulez lors de la manipulation des WorkItems.
Création d'un WorkItem
Vous pouvez créer des WorkItems en utilisant CreateWorkItemAsync
.
Propriété | Description |
---|---|
workItemFields | La liste des champs à renseigner lors de la création du WorkItem |
ccli.AddCommand("<PATTERN>", async tools =>
{
WorkItem newWorkItem = await tools.AzureDevOps("<NAME>")
.CreateWorkItemAsync(new WorkItemCreateFields {
// Insert yours fields here
});
});
Vous pouvez modifier les champs suivants :
Nom du champ | Description |
---|---|
AreaPath | La zone du WorkItem |
Project | (obligatoire) Le projet du WorkItem |
IterationPath | L'itération du WorkItem |
Title | Le titre du WorkItem |
State | L'état du WorkItem |
WorkItemType | (obligatoire) Le type du WorkItem |
AssignedToDisplayName | Le nom de la personne à assigner au WorkItem |
Activity | Activité du WorkItem |
Description | La description du WorkItem |
ReproSteps | Les étapes de reproduction du WorkItem |
SystemInfo | Les informations systèmes du WorkItem |
AcceptanceCriteria | Les critères d'acceptation du WorkItem |
Tags | Les balises du WorkItem |
Effort | L'effort du WorkItem |
OriginalEstimate | L'estimation d'origine |
RemainingWork | Le travail restant |
CompletedWork | Le travail accompli |
Vous avez en retour un objet de type WorkItem
.
Modification d'un WorkItem
Vous pouvez modifier un WorkItem en utilisant UpdateWorkItemAsync
.
Propriété | Description |
---|---|
workItemId | L'identifiant du WorkItem à mettre à jour |
workItemFields | La liste des champs à mettre à jour sur le WorkItem. Tous les champs sont facultatifs, vous pouvez mettre à jour seulement ceux que vous voulez. |
Vous avez aussi la possibilité de modifier un WorkItem en lui passant directement l'objet WorkItem. De cette façon, il permettra d'effectuer la mise à jour seulement si le Workitem n'a pas été modifié depuis la lecture de l'objet passé en paramètre. Par exemple, on récupére les informations du Workitem, on vérifie que les données soient correctes et puis on le modifie avec de nouvelles valeurs. Si entre la lecture et la modification, le WorkItem a été changé, alors notre mise à jour échouera. Si vous ne voulez aucune vérification de contrôle, vous devez passer l'identifiant du WorkItem au lieu de l'objet.
ccli.AddCommand("<PATTERN>", async tools =>
{
await tools.AzureDevOps("<NAME>").UpdateWorkItemAsync(1234, new WorkItemUpdateFields
{
// Insert yours fields here
});
});
Vous pouvez modifier les champs suivants :
Nom du champ | Description |
---|---|
AreaPath | (facultatif) La zone du WorkItem |
Project | (facultatif) Le projet du WorkItem |
IterationPath | (facultatif) L'itération du WorkItem |
Title | (facultatif) Le titre du WorkItem |
State | (facultatif) L'état du WorkItem |
WorkItemType | (facultatif) Le type du WorkItem |
AssignedToDisplayName | (facultatif) Le nom de la personne à assigner au WorkItem |
Activity | (facultatif) L'activité du WorkItem |
Description | (facultatif) La description du WorkItem |
ReproSteps | (facultatif) Les étapes de reproduction du WorkItem |
SystemInfo | (facultatif) Les informations systèmes du WorkItem |
AcceptanceCriteria | (facultatif) Les critères d'acceptation du WorkItem |
Effort | (facultatif) L'effort du WorkItem |
OriginalEstimate | (facultatif) L'estimation d'origine |
RemainingWork | (facultatif) Le travail restant |
CompletedWork | (facultatif) Le travail accompli |
Vous avez en retour un objet de type WorkItem
.
Récupération des informations d'un WorkItem
Vous pouvez récupérer les informations d'un WorkItem en utilisant GetWorkItemAsync
.
Propriété | Description |
---|---|
workItemId | L'identifiant du WorkItem |
ccli.AddCommand("<PATTERN>", async tools =>
{
WorkItem workItem = await tools.AzureDevOps("<NAME>").GetWorkItemAsync(1234);
});
Vous avez en retour un objet de type WorkItem
.
Nom de la propriété | Description |
---|---|
Id | L'identifiant du WorkItem |
AreaPath | La zone du WorkItem |
Project | Le projet du WorkItem |
IterationPath | L'itération du WorkItem |
Title | Le titre du WorkItem |
State | L'état du WorkItem |
WorkItemType | Le type du WorkItem |
AssignedToDisplayName | Le nom de la personne assignée au WorkItem |
Activity | L'activité du WorkItem |
Description | La description du WorkItem |
ReproSteps | Les étapes de reproduction du WorkItem |
SystemInfo | Les informations systèmes du WorkItem |
AcceptanceCriteria | Les critères d'acceptation du WorkItem |
Children | La liste des identifiants des WorkItems enfants |
Parent | L'identifiant du WorkItem parent |
Related | La liste des identifiants des WorkItems associés |
Predecessors | La liste des identifiants des WorkItems prédécesseurs |
Successors | La liste des identifiants des WorkItems successeurs |
IsFixedInChangeset | Indicateur si des ensembles de modifications sont liés au Workitem |
Tags | La liste des balises du WorkItem |
Effort | L'effort du WorkItem |
OriginalEstimate | L'estimation d'origine |
RemainingWork | Le travail restant |
CompletedWork | Le travail accompli |
Suppression d'un WorkItem
Vous pouvez supprimer un WorkItem en utilisant DeleteWorkItemAsync
.
Propriété | Description |
---|---|
workItemId | L'identifiant du WorkItem |
ccli.AddCommand("<PATTERN>", async tools =>
{
await tools.AzureDevOps("<NAME>").DeleteWorkItemAsync(1234);
});
Ajout d'une relation entre WorkItems
Vous pouvez ajouter des relations entre WorkItems en utilisant AddWorkItemRelationAsync
pour une seule relation et AddWorkItemRelationsAsync
pour en ajouter plusieurs.
Propriété | Description |
---|---|
workItemId | L'identifiant du WorkItem qui va recevoir la relation |
workItemToAdd | Le ou les WorkItems à ajouter |
linkType | Le type de lien entre le WorkItem est celui que l'on veut ajouter |
ccli.AddCommand("<PATTERN>", async tools =>
{
WorkItem workItemToAdd = await tools.AzureDevOps("<NAME>").GetWorkItemAsync(5678);
await tools.AzureDevOps("<NAME>").AddWorkItemRelationAsync(1234, workItemToAdd, LinkType.Child);
});
Vous avez en retour un objet de type WorkItem
.
Récupération de l'itération courante d'un projet
Vous pouvez récupérer l'itération courante d'un projet en utilisant GetCurrentIterationAsync
.
Propriété | Description |
---|---|
project | Le nom du projet |
team | (facultatif) Le nom de l'équipe |
ccli.AddCommand("<PATTERN>", async tools =>
{
Iteration iteration = await tools.AzureDevOps("<NAME>").GetCurrentIterationAsync("<PROJECT>");
});
Vous avez en retour un objet de type Iteration
.
Nom de la propriété | Description |
---|---|
Name | Le nom de l'itération |
Path | Le chemin relatif de l'itération |
StartDate | Date de début de l'itération |
FinishDate | Date de fin de l'itération |
Récupération du nom de la configuration Azure DevOps
Vous pouvez récupérer le nom de la configuration Azure DevOps en utilisant GetAzureDevOpsServerName
.
ccli.AddCommand("<PATTERN>", async tools =>
{
string serverName = tools.AzureDevOps("<NAME>").GetAzureDevOpsServerName();
});
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- ItsMyConsole (>= 0.2.0)
- Newtonsoft.Json (>= 13.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.