Azure DevOps tarefas de pipeline
Use essas tarefas no pipeline Azure DevOps para interagir com o modelo de dados Configuração de DevOps.
Essas tarefas são fornecidas para criar uma definição de pipeline específica para atingir seu objetivo.
- ServiceNow-DevOps-Config-Agent-Upload-Config
Carregar dados de configuração para um implantável no modelo de dados por meio do 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 dos dados de configuração.
- ServiceNow-DevOps-Config-Agent-Export-Snapshot
Exporte um subconjunto dos dados de configuração.
- ServiceNow-DevOps-Config-Agente-Registro-Pipeline
Registre um changeset e/ou snapshot em 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-Servidor-Aceleração-Mudança
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
connectServiceName Especifica a DevOps conexão de endpoint do pipeline. applicationName Especifica a aplicação para a qual os dados de configuração são carregados. implantávelNome Especifica o implantável da 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 uma coleção). namePath Especifica o caminho do modelo de dados para onde os dados de configuração são carregados.
Nota:Ao carregar para uma pasta de variáveis, você deve iniciar o caminho do nome com "vars/" para especificar o caminho da pasta de variáveis.configFilePath Especifica a pasta de origem da qual os dados de configuração são carregados para o componente ou caminho implantável no modelo de dados.
Vazio é a raiz do repositório. 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 convertida o diretório em caminhos dentro do modelo de dados. O valor padrão é falso. dataFormat Especifica o formato de dados do config_file (por exemplo, JSON, YAML, XMLetc.). changesetNumber (Opcional) Especifica o changeset (aberto) ao qual esta atividade de upload está associada. Se não for fornecido, um novo changeset será criado.
Nota:Usado somente para vários cenários de upload.confirmação automática Especifica se os dados de configuração devem ser confirmados após o upload (verdadeiro/falso). O valor padrão é falso. autoValidate 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 de changeset criado/confirmado durante o carregamento.
Forneça um nome para a tarefa para que ela possa ser usada posteriormente no pipeline (por exemplo, componentsUpload).
- 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 uploads (componente)
- Você pode chamar a tarefa de carregamento mais de uma vez para carregar dados de configuração em diferentes formatos de arquivo de locais diferentes, mantendo os carregamentos 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 em 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 em carregamentos subsequentes.
- Exemplo - Vários uploads (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 locais diferentes, mantendo os carregamentos 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 em 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 em uma pasta de variáveis, uploadTarget deve ser definido como implantávele 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 em carregamentos subsequentes.
ServiceNow-DevOps-Config-Agent-Get-Snapshot
- Recupere um snapshot específico.
Seguindo o fluxo de CD, um snapshot específico é recuperado para que possa ser publicado e exportado para ser consumido no 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 de aplicação-implantável fornecida.
- Recupere todos os snapshots de todos os implantáveis afetados.
Quando os arquivos de configuração forem carregados em um modelo de dados da aplicação, o sistema criará snapshots para todos os implantáveis determinados a serem afetados pelo carregamento. Seguindo o fluxo de IC, supondo que a última chamada de upload 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 de um implantável de uma aplicação caso um carregamento não gere nenhum snapshot.
Um conjunto de dados de configuração está disponível para implantação em um ambiente para uma combinação aplicação-implantável-changeset quando nenhuma mudança de configuração é feita.
- Mostre os resultados da validação de política em uma execução de pipeline.
Exiba os resultados de validação de política como resultados de testes na página de resultados de testes de compilação do ADO, incluindo conformidade com exceção, ao obter um snapshot.
- Variáveis de entrada
connectServiceName Especifica a DevOps conexão de endpoint do pipeline (definida nas configurações de conexão de serviço do projeto). applicationName Especifica a aplicação para carregar dados de configuração ou de onde os dados serão exportados. implantávelNome (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 changeset para o conjunto aplicável de mudanças de configuração. estáValidado (Opcional) Especifica se devem ser retornados somente snapshots aprovados ou aprovados com exceção (verdadeiro/falso). O valor padrão é verdadeiro. continuarComMais Recente (Opcional) Especifica se deve retornar o snapshot mais recente pela combinação applicationName-deployableName-changesetNumber 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, getSnapshot).
- 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- Exemplo - Snapshots validados mais recentes (para uma determinada combinação de aplicação-implantável)
-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 a tarefa ServiceNow-DevOps-Config-Agent-Get-Snapshot.
Para carregar os resultados da validação de snapshot na execução do pipeline, você precisa aproveitar a tarefa Publicar resultados de testes v2nativa do ADO, usando a variável como uma 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 um acompanhamento da tarefa ServiceNow-DevOps-Config-Agent-Get-Snapshot-Name para obter o nome do snapshot de um snapshot específico. A partir daqui, o nome do snapshot pode ser usado como uma entrada para uma tarefa descendente, como a publicação do snapshot.
- Variáveis de entrada
implantávelNome Especifica o implantável para obter o objeto de snapshot que foi retornado da tarefa ServiceNow-DevOps-Config-Agent-Get-Snapshot. 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 da tarefa 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();- Exemplo - Obter nome do snapshot usado com obter snapshot
Chame a tarefa ServiceNow-DevOps-Config-Agent-Get-Snapshot-Name logo após a tarefa ServiceNow-DevOps-Config-Agent-Get-Snapshot 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 de 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 e o implantável fornecidos. A partir daqui, o snapshot pode ser consumido por meio do processo de exportação.
- Variáveis de entrada
connectServiceName Especifica a conexão do endpoint ServiceNow. applicationName Especifica a aplicação a ser publicada. implantávelNome Especifica o implantável da aplicação para 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 for 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 da aplicação e do implantável fornecidos. Especifique o exportador, os argumentos relevantes do exportador, o formato de exportação (por exemplo, YAML, JSON etc.) e o local de saída para os dados de configuração exportados. A partir daqui, os dados de configuração podem ser usados diretamente como uma entrada para uma ferramenta de implantação ou provisionamento descendente no pipeline.
- Variáveis de entrada
connectServiceName Especifica a conexão do endpoint ServiceNow. applicationName Especifica a aplicação da qual publicar. implantávelNome Especifica o implantável da aplicação da qual os dados de configuração serão exportados. nomeSnapshot Especifica o nome do snapshot do qual os dados de configuração serão exportados. exportName Especifica o exportador a ser aplicado ao snapshot (por exemplo, UniqueCDIs). args (Opcional) Especifica os argumentos a serem usados junto com o exportador. exportarFormato Especifica o formato para exportar os dados do snapshot (por exemplo, INI, YAML, PROPS). salvar arquivo Verifica se o arquivo deve ser salvo em um repositório do Azure (verdadeiro/falso). O valor padrão é falso.
Nota:A permissão apropriada/token OAuth de acesso ao script é necessária.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 for 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-Agente-Registro-Pipeline
Esta tarefa vincula um changeset 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
connectServiceName Especifica a DevOps conexão de endpoint do pipeline. applicationName Especifica o nome da aplicação. changesetNumber (Opcional) Especifica o ID do changeset 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 for 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
connectServiceName Especifica a conexão do endpoint ServiceNow. applicationName Especifica a aplicação a ser validada. implantávelNome 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 for 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-Servidor-Aceleração-Mudança
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 pipeline Azure DevOps.
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 para um determinado serviço de aplicativos.
Consulte Acelerando seu DevOps processo de mudança para obter mais informações sobre o DevOps recurso de aceleração de mudança.
- Variáveis de entrada (relacionadas a Configuração de DevOps)
connectServiceName Especifica a DevOps conexão de endpoint do 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)