Azure DevOps Tâches de pipeline
Utilisez ces tâches dans votre Azure DevOps pipeline pour interagir avec le modèle de DevOps Config données.
Ces tâches sont fournies pour créer une définition de pipeline spécifique pour atteindre votre objectif.
- ServiceNow-DevOps-Config-Agent-Upload-Config
Chargez les données de configuration vers un déployable dans le modèle de données via la tâche de l’agent.
- ServiceNow-DevOps-Config-Agent-Get-Snapshot
Obtenez les instantanés pour une application.
- ServiceNow-DevOps-Config-Agent-Get-Snapshot-Name
Extraire le nom d’un instantané.
- ServiceNow-DevOps-Config-Agent-Publish-Snapshot
Publiez un instantané de vos données de configuration.
- ServiceNow-DevOps-Config-Agent-Export-Snapshot
Exportez un sous-ensemble de vos données de configuration.
- ServiceNow-DevOps-Config-Agent-Register-Pipeline
Enregistrez un ensemble de changements et/ou un instantané dans une exécution de pipeline.
- ServiceNow-DevOps-Config-Agent-Validate-Snapshot
Validez les données de configuration par rapport aux politiques de l’organisation.
- ServiceNow-DevOps-Serveur-Changement-Accélération
Créez une demande de changement dans le cadre du pipeline.
ServiceNow-DevOps-Config-Agent-Upload-Config
Tâche de chargement d’un fichier de configuration à un emplacement donné dans un modèle de données d’application.
- Variables d'entrée
connectedServiceName Spécifie la connexion du point de terminaison du DevOps pipeline. applicationName Spécifie l’application dans laquelle les données de configuration sont téléchargées. deployableName Spécifie le déployable pour l’application (requis si la cible est déployable). uploadTarget Spécifie la cible du modèle de données vers laquelle les données de configuration sont téléchargées (par exemple, composant, collection, déployable). collectionName (Facultatif) Spécifie la collection vers laquelle les données de configuration seront téléchargées (obligatoire si la cible est collecte). namePath Spécifie le chemin d’accès du modèle de données vers lequel les données de configuration sont téléchargées.
Remarque :Lors du chargement dans un dossier vars, vous devez commencer le chemin du nom par « vars/ » pour spécifier le chemin du dossier variable.configFilePath Spécifie le dossier source à partir duquel les données de configuration sont chargées vers le composant ou le chemin d’accès déployable dans le modèle de données.
La racine du référentiel est vide. Utilisez des variables si les fichiers ne sont pas dans le référentiel (par exemple, $(agent.builddirectory)).
convertPath (Facultatif) Indique s’il faut conserver la structure de répertoire des fichiers de configuration (en ce qui concerne l’espace de travail) et convertir le répertoire en chemins d’accès au sein du modèle de données. La valeur par défaut est faux. Format de données Spécifie le format de données du config_file (par exemple, JSON, YAML,XML, entre autres). changesetNumber (Facultatif) Spécifie l’ensemble de changements (ouvert) auquel cette activité de chargement est associée. Si cette option n’est pas fournie, un nouvel ensemble de changements est créé.
Remarque :Utilisé uniquement pour plusieurs scénarios de chargement.Validation automatique Indique s’il faut valider ou non les données de configuration après le chargement (vrai/faux). La valeur par défaut est faux. Validation automatique Spécifie s’il faut valider les données de configuration pendant la validation (vrai/faux). La valeur par défaut est vrai. - Variable de sortie
changesetNumber Enregistrement de l’ensemble de changements créé/validé lors du chargement.
Attribuez un nom à la tâche afin qu’elle puisse être utilisée ultérieurement dans le pipeline (par exemple, componentUpload).
- Exemple : charger la configuration
-task: ServiceNow-DevOps-Config-Agent-Upload-Config name: componentUpload inputs: connectedServiceName: 'MyServiceNowInstance' applicationName: 'PaymentDemo' uploadTarget: 'component' namePath: 'wep-api-v1.0' configFilePath: 'k8s/helm/values.yml' dataFormat: 'yaml' autoCommit: true autoValidate: true- Exemple : chargements multiples (composant)
- Vous pouvez appeler la tâche de chargement plusieurs fois pour charger des données de configuration dans différents formats de fichier à partir de différents emplacements, tout en conservant la partie chargements d’un ensemble de modifications.
- Lors du premier chargement, nommez la tâche afin que la variable de sortie changesetNumber puisse être réutilisée lors des chargements suivants.Chargement du fichier YAML :
-task: ServiceNow-DevOps-Config-Agent-Upload-Config name: componentUpload inputs: connectedServiceName: 'MyServiceNowInstance' applicationName: 'PaymentDemo' uploadTarget: 'component' namePath: 'wep-api-v1.0' configFilePath: 'k8s/helm/values.yml' dataFormat: 'yaml' autoCommit: false autoValidate: false - Dans les chargements suivants, référencez la variable de sortie changesetNumber du premier chargement comme variable d’entrée.Chargement du fichier JSON :
-task: ServiceNow-DevOps-Config-Agent-Upload-Config inputs: connectedServiceName: 'MyServiceNowInstance' applicationName: 'PaymentDemo' uploadTarget: 'component' namePath: 'wep-api-v1.0' configFilePath: 'featureToggles/set1.json' dataFormat: 'json' autoCommit: true autoValidate: true changesetNumber: '$(componentUpload.changesetNumber)'
- Lors du premier chargement, nommez la tâche afin que la variable de sortie changesetNumber puisse être réutilisée lors des chargements suivants.
- Exemple : chargements multiples (collection et variables)
- Vous pouvez appeler la tâche de chargement plusieurs fois pour charger des données de configuration dans différents formats de fichier à partir de différents emplacements, tout en conservant la partie chargements d’un ensemble de modifications.
- Lors du premier chargement, assurez-vous de nommer la tâche afin que la variable de sortie changesetNumber puisse être réutilisée lors des chargements suivants.Chargement du fichier XML :
-task: ServiceNow-DevOps-Config-Agent-Upload-Config name: componentUpload inputs: connectedServiceName: 'MyServiceNowInstance' applicationName: 'PaymentDemo' uploadTarget: 'collection' collectionName: 'release-1.0' namePath: 'v1-common-configs' configFilePath: 'infra/v1/config.xml' dataFormat: 'xml' autoCommit: false autoValidate: false - Lors des chargements suivants, référencez la variable de sortie changesetNumber du premier chargement comme entrée.Chargement du fichier JSON :
-task: ServiceNow-DevOps-Config-Agent-Upload-Config inputs: connectedServiceName: 'MyServiceNowInstance' applicationName: 'PaymentDemo' uploadTarget: 'deployable' deployableName: 'Production-EMEA' namePath: 'vars/dbSettings' configFilePath: 'infra/prodc/dbSettings.json' dataFormat: 'json' autoCommit: true autoValidate: true changesetNumber: '$(componentUpload.changesetNumber)'
Remarque :Pour charger dans un dossier de variables, uploadTarget doit être défini sur deployable, et les valeurs correctes doivent être définies pour deployableName et changesetNumber. - Lors du premier chargement, assurez-vous de nommer la tâche afin que la variable de sortie changesetNumber puisse être réutilisée lors des chargements suivants.
ServiceNow-DevOps-Config-Agent-Get-Snapshot
- Récupérez un instantané spécifique.
Après le flux de CD, un instantané spécifique est récupéré afin qu’il puisse être publié, puis exporté pour être consommé en aval (par exemple, pour mettre en service une infrastructure ou une application).
- Récupérer le dernier instantané validé.
Le dernier instantané validé est récupéré pour la combinaison application-déployable donnée.
- Récupérez tous les instantanés pour tous les déployables impactés.
Lorsque des fichiers de configuration sont téléchargés dans un modèle de données d’application, le système crée des instantanés pour tous les éléments déployables considérés comme impactés par le chargement. En suivant le flux de CI, en supposant que la validation est activée pour le dernier appel Upload, l’étape suivante consiste à itérer dans la liste des instantanés et à vous assurer qu’ils ont tous passé la validation.
- Récupérez les derniers instantanés pour un déployable d’une application dans le cas où un chargement ne génère aucun instantané.
Un ensemble de données de configuration est disponible pour le déploiement dans un environnement pour une combinaison application-déployable-ensemble de changements lorsqu’aucun changement de configuration n’est apporté.
- Affichez les résultats de validation de politique dans une exécution de pipeline.
Affichez les résultats de validation de politique sous forme de résultats de test sur la page des résultats des tests de version ADO, y compris Conforme avec exception, lors de l’obtention d’un instantané.
- Variables d'entrée
connectedServiceName Spécifie la connexion du DevOps point de terminaison du pipeline (définie dans les paramètres de connexion de service du projet). applicationName Spécifie l’application vers laquelle charger ou exporter les données de configuration. deployableName (Facultatif) Spécifie le déployable (selon l’application spécifiée) sur lequel obtenir les dernières données d’instantané. changesetNumber (Facultatif) Spécifie l’ID de l’ensemble de changements pour l’ensemble de changements de configuration applicable. isValidated (Facultatif) Spécifie s’il faut renvoyer uniquement les instantanés qui ont été réussis ou transmis avec une exception (vrai/faux). La valeur par défaut est vrai. continueWithLatest (Facultatif) Spécifie s’il faut renvoyer le dernier instantané selon la combinaison applicationName-deployableName-changesetNumber si aucun instantané n’est généré (vrai/faux). La valeur par défaut est faux. - Variable de sortie
objet instantané Objet JSON contenant les instantanés demandés.
Attribuez un nom à la tâche afin qu’elle puisse être utilisée ultérieurement dans le pipeline (par exemple, getSnapshot).
- Exemple : instantané spécifique
-task: ServiceNow-DevOps-Config-Agent-Get-Snapshot name: getSnapshot inputs: connectedServiceName: 'MyServiceNowInstance' applicationName: 'PaymentDemo' deployableName: 'Production' changesetNumber: 'Chset-16' isValidated: true continueWithLatest: true- Exemple : derniers instantanés validés (pour une combinaison application-déployable donnée)
-task: ServiceNow-DevOps-Config-Agent-Get-Snapshot name: getSnapshot inputs: connectedServiceName: 'MyServiceNowInstance' applicationName: 'PaymentDemo' deployableName: 'Production' isValidated: true- Exemple : tous les instantanés d’ensembles de changements
-task: ServiceNow-DevOps-Config-Agent-Get-Snapshot name: getSnapshot inputs: connectedServiceName: 'MyServiceNowInstance' applicationName: 'PaymentDemo' changesetNumber: 'Chset-16'- Exemple : afficher les résultats de validation de politique
Affectez une variable au chemin d’accès du fichier qui contient les résultats de validation d’instantané générés pendant la tâche ServiceNow-DevOps-Config-Agent-Get-Snapshot .
Pour charger les résultats de validation de l’instantané dans l’exécution de votre pipeline, vous devez tirer parti de la tâche native ADO Publier les résultats des tests v2, en utilisant la variable comme entrée.
stages: - stage: Two jobs: - job: A variables: - name: validationResultsPath value: 1/TEST_DATA_$(Build.DefinitionName)_$(Build.BuildNumber)_*.xml steps: - task: PublishTestResults@2 inputs: testResultsFormat: 'JUnit' testResultsFiles: '$(validationResultsPath)' searchFolder: '$(System.WorkFolder)'
ServiceNow-DevOps-Config-Agent-Get-Snapshot-Name
Cette tâche est utilisée comme suivi de la tâche ServiceNow-DevOps-Config-Agent-Get-Snapshot-Name pour obtenir le nom de l’instantané à partir d’un instantané particulier. À partir d’ici, le nom de l’instantané peut être utilisé comme entrée d’une tâche en aval, telle que la publication de l’instantané.
- Variables d'entrée
deployableName Spécifie l’élément déployable permettant d’obtenir l’objet d’instantané qui a été renvoyé par la tâche ServiceNow-DevOps-Config-Agent-Get-Snapshot . script Spécifie le script permettant d’extraire le nom de l’instantané de l’objet d’instantané. - Variable de sortie
snapshotName Nom de l’instantané pour le déployable.
Attribuez un nom à la tâche afin qu’elle puisse être utilisée ultérieurement dans le pipeline (par exemple, getSnapshotName).
- Exemple : obtenir le nom de l’instantané
Utilisez ce script pour extraire le nom de l’instantané récupéré à partir de la tâche ServiceNow-DevOps-Config-Agent-Get-Snapshot .
-task: ServiceNow-DevOps-Config-Agent-Get-Snapshot-Name inputs: deployableName: 'PRD' script: | function run() { let name; let deployableName = process.argv[2]; let jsonObj = $(getSnapshot.snapshotObjects); let size = jsonObj.result.length; for(let i=0; i<size; i++) { obj = jsonObj.result[i]; if(obj[“deployable_id.name”].toLowerCase() == deployableName) { name = obj.name; console.log(name); } } } run();- Exemple : obtenir le nom d’instantané utilisé avec obtenir un instantané
Appelez la tâche ServiceNow-DevOps-Config-Agent-Get-Snapshot-Name juste après la tâche ServiceNow-DevOps-Config-Agent-Get-Snapshot pour renvoyer le nom de l’instantané.
Obtenir des instantanés (renvoie un objet JSON contenant les instantanés impactés) :-stage: Two jobs: -job: B steps: -task: ServiceNow-DevOps-Config-Agent-Get-Snapshot name: getSnapshot inputs: connectedServiceName: 'MyServiceNowInstance' applicationName: 'PaymentDemo' deployableName: 'Production-2' changesetNumber: 'Chset-16'Obtenir le nom de l’instantané (renvoie le nom de l’instantané pour un déployable spécifique) :-stage: Two jobs: - job: B steps: - task: ServiceNow-DevOps-Config-Agent-Get-Snapshot name: getSnapshotName inputs: deployableName: 'Production-2' script:| function run() { let name; let deployableName = process.argv[2]; let jsonObj = $(getSnapshot.snapshotObjects); let size = jsonObj.result.length; for(let i=0; i<size ;i++) { obj = jsonObj.result[i]; if(obj["deployable_id.name"].toLowerCase() == deployableName) { name = obj.name; console.log(name); // This standard output of inline script is given as the task output } } } run();Utilisez le nom de l’instantané renvoyé dans le pipeline (par exemple, publier) :-stage: Three jobs: -job: C variables: varSnapshotName: $[stageDependencies.Two.B.outputs['getSnapshotName.snapshotName']] steps: -task: ServiceNow-DevOps-Config-Agent-Publish-Snapshot inputs: connectedServiceName: 'MyServiceNowInstance' applicationName: 'PaymentDemo' deployableName: 'Production-2' snapshotName: '$(varSnapshotName)'
ServiceNow-DevOps-Config-Agent-Publish-Snapshot
Cette tâche publie un instantané pour l’application donnée et le déployable. À partir de là, l’instantané peut être consommé via le processus d’exportation.
- Variables d'entrée
connectedServiceName Spécifie la connexion du point de ServiceNow terminaison. applicationName Spécifie l’application à publier. deployableName Spécifie le déployable pour que l’application publie les données de configuration. snapshotName Spécifie le nom de l’instantané à publier. - Variable de sortie
- Non applicable (renvoie la valeur vrai en cas de réussite, sinon la valeur faux).
- Exemple
-task: ServiceNow-DevOps-Config-Agent-Publish-Snapshot inputs: connectedServiceName: 'MyServiceNowInstance' applicationName: 'PaymentDemo' deployableName: 'Production-2' snapshotName: 'Production-v23.dpl'
ServiceNow-DevOps-Config-Agent-Export-Snapshot
Cette tâche exporte un instantané pour l’application donnée et le déployable. Spécifiez l’exportateur, les arguments de l’exportateur pertinents, le format d’exportation (par exemple, YAML, JSON...) et l’emplacement de sortie des données de configuration exportées. À partir de là, les données de configuration peuvent être utilisées directement comme entrée pour un outil de déploiement ou de mise en service en aval du pipeline.
- Variables d'entrée
connectedServiceName Spécifie la connexion du point de ServiceNow terminaison. applicationName Spécifie l’application à partir de laquelle publier. deployableName Spécifie le déployable pour l’application à partir de laquelle exporter les données de configuration. snapshotName Spécifie le nom de l’instantané à partir duquel exporter des données de configuration. exporterName Spécifie l’exportateur à appliquer à l’instantané (par exemple, UniqueCDI). args (Facultatif) Spécifie les arguments à utiliser avec l’exportateur. Format d’exportation Spécifie le format d’exportation des données d’instantané (par exemple, INI, YAML,PROPS). saveFile Vérifie si le fichier doit être enregistré dans un référentiel Azure (vrai/faux). La valeur par défaut est faux.
Remarque :L’accès au script, par jeton OAuth ou par autorisation/jeton OAuth approprié, est requis.Sinon, le fichier d’exportation est créé dans le répertoire de l’espace de travail pipeline.
- Variable de sortie
- Non applicable (renvoie la valeur vrai en cas de réussite, sinon la valeur faux).
- Exemple
-task: ServiceNow-DevOps-Config-Agent-Export-Snapshot inputs: connectedServiceName: 'MyServiceNowInstance' applicationName: 'PaymentDemo' deployableName: 'Production-2' exporterName: 'returnAllData-nowPreview' dataFormat: 'yaml' args: '' snapshotName: 'Production-v23.dpl' saveFile: true fileName: 'ExporterOutput/ExportData_$(build.definitionName)_$(build.buildNumber).yaml'
ServiceNow-DevOps-Config-Agent-Register-Pipeline
Cette tâche associe un ensemble de changements et un instantané au pipeline afin qu’il puisse être suivi pendant l’exécution du pipeline. Dans Vélocité de changement DevOps, ceci est affiché dans l’interface utilisateur du pipeline.
- Variables d'entrée
connectedServiceName Spécifie la connexion du point de terminaison du DevOps pipeline. applicationName Spécifie le nom de l’application. changesetNumber (Facultatif) Spécifie l’ID de l’ensemble de changements à associer à l’exécution du pipeline. snapshotName (Facultatif) Spécifie le nom de l’instantané à associer à l’exécution du pipeline. - Variable de sortie
- Non applicable (renvoie la valeur vrai en cas de réussite, sinon la valeur faux).
- Exemple
-task: ServiceNow-DevOps-Config-Agent-Publish-Snapshot inputs: connectedServiceName: 'MyServiceNowInstance' changesetNumber: 'Changeset-143'
ServiceNow-DevOps-Config-Agent-Validate-Snapshot
- Variables d'entrée
connectedServiceName Spécifie la connexion du point de ServiceNow terminaison. applicationName Spécifie l’application à valider. deployableName Spécifie le déployable (selon l’application spécifiée) à valider. snapshotName (Facultatif) Spécifie le nom de l’instantané à valider. afficherles résultats (Facultatif) Spécifie d’afficher les résultats de validation dans le journal de la console. - Variable de sortie
- Non applicable (renvoie la valeur vrai en cas de réussite, sinon la valeur faux).
- Exemple
-task: ServiceNow-DevOps-Config-Agent-Validate-Snapshot inputs: connectedServiceName: 'MyServiceNowInstance' applicationName: 'PaymentDemo' deployableName: 'Production-2' snapshotName: '' showResults: false
ServiceNow-DevOps-Serveur-Changement-Accélération
Cette tâche est requise pour les tâches sans agent (serveur) afin de créer automatiquement une demande de changement dans ServiceNow Gestion des changements le Azure DevOps cadre du pipeline.
Dans DevOps Config, pour associer plusieurs instantanés du même ensemble de changements à une demande de changement, utilisez le nom de l’instantané et le nom de l’application pour suivre les données de configuration spécifiques d’un service d’application donné.
Pour plus d’informations sur la fonctionnalité Accélération du changement, reportez-vous Accélérer votre DevOps processus de changement à la DevOps section .
- Variables d’entrée (associées à DevOps Config)
connectedServiceName Spécifie la connexion du point de terminaison du DevOps pipeline. applicationName Application associée à l’instantané joint à la demande de changement. snapshotName Nom de l’instantané à joindre à la demande de changement. - Exemple
-stage: ChangeRequest jobs: -job: 'changerequestjob' pool: server steps: -task: ServiceNow-DevOps-Server-Change-Acceleration inputs: connectedServiceName: 'MyServiceNowInstance' applicationName: 'PaymentDemo' snapshotName: 'Production-v23.dpl'
Exemple de pipeline YAML
trigger:
branches:
include:
- none
stages:
- stage: One
displayName: Upload Configuration Data
pool:
vmImage: ubuntu-latest
jobs:
- job: A
displayName: Upload
steps:
- task: ServiceNow-DevOps-Config-Agent-Upload-Config@1
name: componentUpload
inputs:
connectedServiceName: 'MyServiceNowInstance'
applicationName: 'PaymentDemo'
uploadTarget: 'component'
configFile: 'k8s/helm/values.yml'
namePath: 'processor-api-v1.0'
dataFormat: 'yaml'
autoValidate: true
autoCommit: true
convertPath: true
- stage: Two
displayName: Get Latest Snapshot
pool:
vmImage: ubuntu-latest
jobs:
- job: B
displayName: Get Snapshot
variables:
- name: varChangesetNumber
value: $[stageDependencies.One.A.outputs['componentUpload.changesetNumber'] ]
- name: varConfigValidationResults
value: 1/TEST_DATA_$(Build.DefinitionName)_$(Build.BuildNumber)_*.xml
steps:
- task: ServiceNow-DevOps-Config-Agent-Get-Snapshot@1
name: getSnapshot
inputs:
connectedServiceName: 'MyServiceNowInstance'
applicationName: 'PaymentDemo'
deployableName: 'Production-EMEA'
changeSetNumber: '$(varChangesetNumber)'
continueWithLatest: true
- task: ServiceNow-DevOps-Config-Agent-Get-Snapshot-Name@1
name: getSnapshotName
inputs:
deployableName: 'Production-EMEA'
script: "function run() {\n let name;\n let deployableName = process.argv[2]; \n let jsonObj = $(getSnapshot.snapshotObjects);\n let size = jsonObj.result.length;\n for(let i=0; i<size ;i++) {\n obj = jsonObj.result[i];\n if(obj[\"deployable_id.name\"].toLowerCase() == deployableName) {\n name = obj.name;\n console.log(name); // This standard output of inline script is given as the task output\n }\n }\n}\nrun();\n"
- task: PublishTestResults@2
inputs:
testResultsFormat: ‘JUnit’
testResultsFiles: ‘$(varConfigValidationResults)’
searchFolder: ‘$(System.WorkFolder)’
- task: ServiceNow-DevOps-Config-Agent-Register-Pipeline@1
inputs:
connectedServiceName: 'MyServiceNowInstance'
snapshotName: '$(getSnapshotName.snapshotName)'
applicationName: 'PaymentDemo'
- stage: Three
displayName: Publish Snapshot
pool:
vmImage: ubuntu-latest
jobs:
- job: C
displayName: Publish
variables:
- name: varSnapshotName
value: $[stageDependencies.Two.B.outputs['getSnapshotName.snapshotName']]
steps:
- task: ServiceNow-DevOps-Config-Agent-Publish-Snapshot@1
inputs:
connectedServiceName: 'MyServiceNowInstance'
applicationName: 'PaymentDemo'
deployableName: 'Production-EMEA'
snapshotName: '$(varSnapshotName)'
- stage: ChangeRequest
dependsOn:
- Two
- Three
jobs:
- job: 'changerequestjob'
timeoutInMinutes: 2
pool:
name: server
variables:
- name: varSnapshotName
value: $[stageDependencies.Two.B.outputs['getSnapshotName.snapshotName']]
steps:
- task: ServiceNow-DevOps-Server-Change-Acceleration@1
inputs:
connectedServiceName: 'MyServiceNowInstance'
applicationName: 'PaymentDemo'
snapshotName: '$(varSnapshotName)'
- stage: Four
displayName: Export Snapshot
dependsOn:
- Two
- Three
- ChangeRequest
pool:
vmImage: ubuntu-latest
variables:
- name: varSnapshotName
value: $[stageDependencies.Two.B.outputs['getSnapshotName.snapshotName']]
jobs:
- job: D
displayName: Export
steps:
- task: ServiceNow-DevOps-Config-Agent-Export-Snapshot@1
inputs:
connectedServiceName: 'MyServiceNowInstance'
applicationName: 'PaymentDemo'
deployableName: 'Production-EMEA'
exporterName: 'returnAllData-now'
dataFormat: 'yaml'
snapshotName: '$(varSnapshotName)'
saveFile: true
fileName: 'ExportData_$(build.definitionName)_$(build.buildNumber).yaml'
- task: CmdLine@2
inputs:
script: |
echo Write your commands here
echo Hello world
tree $(Pipeline.Workspace)