Azure DevOps tarefas de pipeline
Use essas tarefas em seu Azure DevOps pipeline para interagir com Configuração de DevOps modelo de dados.
Essas tarefas são fornecidas para criar uma definição de pipeline específica para atingir seu objetivo.
- ServiceNow-DevOps-Config-Agent-Upload-Config
Carregue dados de configuração para um implantável no modelo de dados por meio de Trabalho do agente.
- ServiceNow-DevOps-Config-Agent-Get-Snapshot
Obtenha os snapshots de uma aplicação.
- ServiceNow-DevOps-Config-Agent-Get-Snapshot-Name
Extraia o nome de um snapshot.
- ServiceNow-DevOps-Config-Agent-Publish-Snapshot
Publique um snapshot de seus dados de configuração.
- ServiceNow-DevOps-Config-Agent-Export-Snapshot
Exporte um subconjunto de seus dados de configuração.
- ServiceNow-DevOps-Config-Agent-Registrar-Pipeline
Registre um conjunto de mudanças e/ou snapshot para uma execução de pipeline.
- ServiceNow-DevOps-Config-Agent-Validate-Snapshot
Valide os dados de configuração em relação às políticas da organização.
- ServiceNow-DevOps-Server-Change-Acceleration
Crie uma solicitação de mudança como parte do pipeline.
ServiceNow-DevOps-Config-Agent-Upload-Config
Tarefa para carregar um arquivo de configuração para um determinado local em um modelo de dados da aplicação.
- Variáveis de entrada
ConnectedServiceName Especifica o. DevOps conexão de endpoint de pipeline. applicationName Especifica a aplicação para onde os dados de configuração são carregados. DeployableName Especifica o implantável para a aplicação (necessário se o destino for implantável). UploadTarget Especifica o destino do modelo de dados para onde os dados de configuração são carregados (por exemplo, componente , coleção , implantável ). collectionName (Opcional) Especifica a coleção para onde os dados de configuração serão carregados (obrigatório se o destino for coleta). namePath Especifica o caminho do modelo de dados para onde os dados de configuração são carregados.
Nota:Ao carregar para uma pasta vars, você deve iniciar o caminho do nome com "vars/" para especificar o caminho da pasta variável.ConfigFilePath Especifica a pasta de origem da qual os dados de configuração são carregados para o componente ou para o caminho implantável no modelo de dados.
A raiz do repositório está vazia. Use variáveis se os arquivos não estiverem no repositório (por exemplo, (agent.builddirectory) ).
ConvertPath (Opcional) Especifica se a estrutura de diretórios dos arquivos de configuração deve ser preservada (em relação ao espaço) e se o diretório deve ser convertido em caminhos no modelo de dados. O valor padrão é falso. DataFormat Especifica o formato de dados do config_file (por exemplo, JSON , YAML , XML etc.). changesetNumber (Opcional) Especifica o conjunto de mudanças (aberto) ao qual esta atividade de carregamento está associada. Se não for fornecido, um novo conjunto de mudanças será criado.
Nota:Usado somente para vários cenários de carregamento.autocommit Especifica se os dados de configuração devem ser confirmados após o carregamento (verdadeiro/falso). O valor padrão é falso. Validar automaticamente Especifica se os dados de configuração devem ser validados durante a confirmação (verdadeiro/falso). O valor padrão é verdadeiro. - Variável de saída
changesetNumber Registro do conjunto de mudanças criado/confirmado durante o carregamento.
Forneça um nome para a tarefa para que ela possa ser usada posteriormente no pipeline (por exemplo, ComponentUpload ).
- Exemplo - Carregar configuração
-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- Exemplo - Vários carregamentos (componente)
- Você pode chamar a tarefa de carregamento mais de uma vez para carregar dados de configuração em diferentes formatos de arquivo de diferentes locais, mantendo os carregamentos como parte de um conjunto de mudanças.
- No primeiro carregamento, nomeie a tarefa para que a variável de saída changesetNumber possa ser reutilizada nos carregamentos subsequentes.Carregamento de arquivo 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 - Em carregamentos subsequentes, faça referência à variável de saída changesetNumber do primeiro carregamento como uma variável de entrada.Carregamento de arquivo 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)'
- No primeiro carregamento, nomeie a tarefa para que a variável de saída changesetNumber possa ser reutilizada nos carregamentos subsequentes.
- Exemplo - Vários carregamentos (coleção e variáveis)
- Você pode chamar a tarefa de carregamento mais de uma vez para carregar dados de configuração em diferentes formatos de arquivo de diferentes locais, mantendo os carregamentos como parte de um conjunto de mudanças.
- No primeiro carregamento, certifique-se de nomear a tarefa para que a variável de saída changesetNumber possa ser reutilizada nos carregamentos subsequentes.Carregamento de arquivo 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 - Em carregamentos subsequentes, faça referência à variável de saída changesetNumber do primeiro carregamento como uma entrada.Carregamento de arquivo 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)'
Nota:Para carregar para uma pasta de variáveis, uploadTarget deve ser definido como implantável E os valores corretos devem ser definidos para deployableName e changesetNumber. - No primeiro carregamento, certifique-se de nomear a tarefa para que a variável de saída changesetNumber possa ser reutilizada nos carregamentos subsequentes.
ServiceNow-DevOps-Config-Agent-Get-Snapshot
- Recupere um snapshot específico.
Após o fluxo do CD, um snapshot específico é recuperado para que possa ser publicado e exportado para ser consumido downstream (por exemplo, para provisionar infraestrutura ou aplicação).
- Recupere o snapshot validado mais recente.
O snapshot validado mais recente é recuperado para a combinação implantável pela aplicação fornecida.
- Recupere todos os snapshots de todos os implantáveis afetados.
Quando os arquivos de configuração são carregados em um modelo de dados da aplicação, o sistema cria snapshots para todos os implantáveis determinados como afetados pelo carregamento. Acompanhando o fluxo de IC, supondo que a última chamada de carregamento tenha a validação habilitada, a próxima etapa seria iterar a lista de snapshots e garantir que todos tenham sido aprovados na validação.
- Recupere os snapshots mais recentes para uma implantação de uma aplicação caso um carregamento não gere snapshots.
Um conjunto de dados de configuração está disponível para implantação em um ambiente para uma combinação aplicação-implantável-conjunto de mudanças quando nenhuma mudança de configuração é feita.
- Mostre resultados de validação de política em uma execução de pipeline.
Exiba os resultados de validação de política como resultados de teste na página Resultados de testes de compilação do ADO, incluindo Conformidade com exceção, ao obter um snapshot.
- Variáveis de entrada
ConnectedServiceName Especifica o. DevOps conexão de endpoint de pipeline (definida nas configurações de conexão de serviço do projeto). applicationName Especifica a aplicação para a qual carregar dados de configuração ou exportar dados. DeployableName (Opcional) Especifica o implantável (de acordo com a aplicação especificada) no qual os dados de snapshot mais recentes serão obtidos. changesetNumber (Opcional) Especifica o ID do conjunto de mudanças para o conjunto aplicável de mudanças de configuração. IsValidado (Opcional) Especifica se devem retornar somente snapshots aprovados ou passados com exceção (verdadeiro/falso). O valor padrão é verdadeiro. ContinuoWithLatest (Opcional) Especifica se o snapshot mais recente deve ser retornado por ApplicationName - DeployableName - ChangesetNumber combinação se nenhum snapshot for gerado (verdadeiro/falso). O valor padrão é falso. - Variável de saída
SnapshotObject Um objeto JSON que contém os snapshots solicitados.
Forneça um nome para a tarefa para que ela possa ser usada posteriormente no pipeline (por exemplo, Obter Snapshot ).
- Exemplo - snapshot específico
-task: ServiceNow-DevOps-Config-Agent-Get-Snapshot name: getSnapshot inputs: connectedServiceName: 'MyServiceNowInstance' applicationName: 'PaymentDemo' deployableName: 'Production' changesetNumber: 'Chset-16' isValidated: true continueWithLatest: true- Snapshots validados mais recentes (para uma determinada combinação implantável pela aplicação)
-task: ServiceNow-DevOps-Config-Agent-Get-Snapshot name: getSnapshot inputs: connectedServiceName: 'MyServiceNowInstance' applicationName: 'PaymentDemo' deployableName: 'Production' isValidated: true- Exemplo - Todos os snapshots do conjunto de mudanças
-task: ServiceNow-DevOps-Config-Agent-Get-Snapshot name: getSnapshot inputs: connectedServiceName: 'MyServiceNowInstance' applicationName: 'PaymentDemo' changesetNumber: 'Chset-16'- Exemplo - Mostrar resultados de validação de política
Atribua uma variável ao caminho do arquivo que contém os resultados de validação de snapshot gerados durante ServiceNow-DevOps-Config-Agent-Get-Snapshot tarefa.
Para carregar os resultados de validação de snapshot na execução do pipeline, você precisa aproveitar o ADO nativo Tarefa Publicar resultados de teste v2 usando a variável como entrada.
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
Esta tarefa é usada como acompanhamento do ServiceNow-DevOps-Config-Agent-Get-Snapshot-Name tarefa para obter o nome do snapshot de um snapshot específico. Aqui, o nome do snapshot pode ser usado como entrada para uma tarefa descendente, como publicar o snapshot.
- Variáveis de entrada
DeployableName Especifica o implantável para obter o objeto de snapshot que foi retornado do ServiceNow-DevOps-Config-Agent-Get-Snapshot tarefa. script Especifica o script para extrair o nome do snapshot do objeto de snapshot. - Variável de saída
nomeSnapshot O nome do snapshot do implantável.
Forneça um nome para a tarefa para que ela possa ser usada posteriormente no pipeline (por exemplo, GetSnapshotName ).
- Exemplo - Obter nome do snapshot
Use este script para extrair o nome do snapshot recuperado do ServiceNow-DevOps-Config-Agent-Get-Snapshot tarefa.
-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();- Exemplo - Obter nome do snapshot usado com Obter snapshot
Ligue para ServiceNow-DevOps-Config-Agent-Get-Snapshot-Name tarefa logo após ServiceNow-DevOps-Config-Agent-Get-Snapshot tarefa para retornar o nome do snapshot.
Obter snapshots (retorna um objeto JSON que contém snapshots afetados):-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'Obter nome do snapshot (retorna o nome do snapshot para um implantável específico):-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();Use o nome do snapshot retornado no pipeline (por exemplo, publicar):-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
Esta tarefa publica um snapshot para a aplicação fornecida e implantável. A partir daqui, o snapshot pode ser consumido por meio do processo de exportação.
- Variáveis de entrada
ConnectedServiceName Especifica o. ServiceNow conexão de endpoint. applicationName Especifica a aplicação a ser publicada. DeployableName Especifica o implantável para a aplicação publicar dados de configuração. nomeSnapshot Especifica o nome do snapshot a ser publicado. - Variável de saída
- Não aplicável (retorna verdadeiro se bem-sucedido, caso contrário, falso).
- Exemplo
-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
Esta tarefa exporta um snapshot para a aplicação fornecida e implantável. Especifique o exportador, os argumentos relevantes do exportador, o formato de exportação (por exemplo, YAML, JSON etc.) e o local de saída dos dados de configuração exportados. A partir daqui, os dados de configuração podem ser usados diretamente como uma entrada para uma implantação ou ferramenta de provisionamento downstream no pipeline.
- Variáveis de entrada
ConnectedServiceName Especifica o. ServiceNow conexão de endpoint. applicationName Especifica a aplicação da qual publicar. DeployableName Especifica o implantável para a aplicação da qual exportar dados de configuração. nomeSnapshot Especifica o nome do snapshot do qual exportar os dados de configuração. Nome da exportação Especifica o exportador a ser aplicado ao snapshot (por exemplo, UniqueCDIs ). args (Opcional) Especifica argumentos a serem usados junto com o exportador. ExportFormat Especifica o formato para exportar os dados do snapshot (por exemplo, INI , YAML , PROPRIEDADES ). SalvaArquivo Verifica se o arquivo deve ser salvo em um repositório do Azure (verdadeiro/falso). O valor padrão é falso.
Nota:Permissão apropriada/acesso ao token OAuth ao script é necessário.Caso contrário, o arquivo de exportação será criado no diretório do espaço de pipeline.
- Variável de saída
- Não aplicável (retorna verdadeiro se bem-sucedido, caso contrário, falso).
- Exemplo
-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-Registrar-Pipeline
Esta tarefa vincula um conjunto de mudanças e um snapshot ao pipeline para que ele possa ser rastreado durante a execução do pipeline. Em Velocidade de mudança para DevOps, Isso é mostrado na IU do Pipeline.
- Variáveis de entrada
ConnectedServiceName Especifica o. DevOps conexão de endpoint de pipeline. applicationName Especifica o nome da aplicação. changesetNumber (Opcional) Especifica o ID do conjunto de mudanças a ser associado à execução do pipeline. nomeSnapshot (Opcional) Especifica o nome do snapshot a ser associado à execução do pipeline. - Variável de saída
- Não aplicável (retorna verdadeiro se bem-sucedido, caso contrário, falso).
- Exemplo
-task: ServiceNow-DevOps-Config-Agent-Publish-Snapshot inputs: connectedServiceName: 'MyServiceNowInstance' changesetNumber: 'Changeset-143'
ServiceNow-DevOps-Config-Agent-Validate-Snapshot
- Variáveis de entrada
ConnectedServiceName Especifica o. ServiceNow conexão de endpoint. applicationName Especifica a aplicação a ser validada. DeployableName Especifica o implantável (de acordo com a aplicação especificada) a ser validado. nomeSnapshot (Opcional) Especifica o nome do snapshot a ser validado. MostrarResultados (Opcional) Especifica para mostrar os resultados de validação no log do console. - Variável de saída
- Não aplicável (retorna verdadeiro se bem-sucedido, caso contrário, falso).
- Exemplo
-task: ServiceNow-DevOps-Config-Agent-Validate-Snapshot inputs: connectedServiceName: 'MyServiceNowInstance' applicationName: 'PaymentDemo' deployableName: 'Production-2' snapshotName: '' showResults: false
ServiceNow-DevOps-Server-Change-Acceleration
Esta tarefa é necessária para que trabalhos sem agente (servidor) criem automaticamente uma solicitação de mudança em ServiceNow Gestão de mudanças como parte do Azure DevOps pipeline.
Em Configuração de DevOps, para associar vários snapshots do mesmo conjunto de mudanças a uma solicitação de mudança, use o nome do snapshot e o nome da aplicação para rastrear dados de configuração específicos de um determinado serviço de aplicações.
Consulte Acelerar seu DevOps processo de mudança para obter mais informações sobre DevOps Recurso de aceleração de mudança.
- Variáveis de entrada (relacionadas a Configuração de DevOps)
ConnectedServiceName Especifica o. DevOps conexão de endpoint de pipeline. applicationName Aplicação associada ao snapshot que está sendo anexado à solicitação de mudança. nomeSnapshot Nome do snapshot a ser anexado à solicitação de mudança. - Exemplo
-stage: ChangeRequest jobs: -job: 'changerequestjob' pool: server steps: -task: ServiceNow-DevOps-Server-Change-Acceleration inputs: connectedServiceName: 'MyServiceNowInstance' applicationName: 'PaymentDemo' snapshotName: 'Production-v23.dpl'
Exemplo 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)