---
sourceDocument: Xanadu IT Service Management
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/xanadu/it-service-management

 Release :

    - xanadu

ft:locale :

    - pt-BR

ft:publication_title :

    - Xanadu IT Service Management

ft:clusterId :

    - itsm

bundleId :

    - itsm

workflow :

    - Technology


---

# Como usar um pipeline declarativo ou com script no DevOps

# Como usar um pipeline declarativo ou com script no DevOps {#ariaid-title1}

* Versão de lançamento: Xanadu
* 
* Atualizado 1 de ago. de 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 4 min. de leitura

Quando você usa um arquivo Jenkins, as etapas são criadas, mapeadas e associadas a tarefas de orquestração automaticamente, em vez de manualmente.

Jenkinsfile é um arquivo de texto que contém a definição de um pipeline Jenkins e é verificado no controle de código-fonte.

Cada fase de nível raiz configurada no Jenkinsfile é descoberta como uma tarefa de orquestração separada em DevOps que é mapeada para uma etapa individual.  
Nota:  
O campo Rastrear do pipeline deve ser definido como Verdadeiro em DevOps para receber notificações de trabalho de Jenkins. Todas as configurações ativas do Jenkins receberão notificações de trabalho quando este campo estiver definido como Verdadeiro.

## DevOps Comandos de arquivo do Jenkins {#dev-ops-scripted-pipeline__section_ccb_2yn_r3b}

* snDevOpsChange(ignoreErrors:{true/false},changeRequestDetails:{setCloseCode:{true/false},attributes:})

  Em que ignoreErrors especifica a configuração para evitar falha no trabalho se houver um erro (verdadeiro/falso)

  Em que changeRequestDetails especifica [o código de fechamento e os campos de solicitação de mudança](https://servicenow-prod.fluidtopics.net/FOHkGJCsddLYGIN5A_pB~g "Configure como as informações de fechamento, o estado de mudança e os campos de solicitação de mudança são atualizados de dentro de um pipeline na etapa de mudança do pipeline.") de dentro do pipeline

  Habilita o controle de mudanças para cada fase de nível raiz que está mapeada para uma etapa DevOps.
* snDevOpsArtifact

  Registra artefatos ao configurar [Artefatos e pacotes](https://servicenow-prod.fluidtopics.net/1VTKa9M2X2Ei0IdCSYG2WA "Artefatos e pacotes permitem que Velocidade de mudança para DevOps rastreie as atividades de desenvolvimento e teste em uma ampla variedade de modelos de implantação e versão. Este recurso garante que a atividade de pipeline armazenada no modelo de dados DevOps possa ser recuperada e aplicada quando artefatos são criados e liberados em momentos diferentes ou em pipelines diferentes.").
* snDevOpsPackage

  Cria um pacote para artefatos ao configurar [Artefatos e pacotes](https://servicenow-prod.fluidtopics.net/1VTKa9M2X2Ei0IdCSYG2WA "Artefatos e pacotes permitem que Velocidade de mudança para DevOps rastreie as atividades de desenvolvimento e teste em uma ampla variedade de modelos de implantação e versão. Este recurso garante que a atividade de pipeline armazenada no modelo de dados DevOps possa ser recuperada e aplicada quando artefatos são criados e liberados em momentos diferentes ou em pipelines diferentes.").
* snDevOpsGetChangeNumber

  Recupera o número da solicitação de mudança em um pipeline do Jenkins com base em detalhes de mudança específicos.
* snDevOpsUpdateChangeInfo

  Atualiza os detalhes da solicitação de mudança associados a um pipeline do Jenkins.
* snDevOpsSecurityResult

  Configura verificações de segurança em qualquer fase do pipeline e os detalhes da verificação são recuperados da fase correspondente à Velocidade de mudança do DevOps.
{#dev-ops-scripted-pipeline__ul_kbx_py3_r3b}

Você pode especificar a configuração do servidor Jenkins em qualquer uma dessas etapas, passando o atributo configurationName em seu pipeline. Se o nome da configuração não for especificado em nenhuma etapa, a configuração padrão será usada nessa etapa. Passar um nome de configuração incorreto resultará na falha da etapa, a menos que a opção Ignorar erros do ServiceNow DevOps seja selecionada ao configurar o plug-in Jenkins.  
Nota:  
O mapeamento de fases só é compatível com fases no nível raiz, não com fases aninhadas ou paralelas.

## Jenkins gerador de snippet para DevOps {#dev-ops-scripted-pipeline__section_vcx_kgw_f5b}

Você pode usar o utilitário Jenkins Snippet Generator para gerar um código de modelo para as tarefas de orquestração de pipelines com script. Você pode usar o utilitário gerador de snippet para criar um modelo para as seguintes tarefas de orquestração.

* SnDevOpsArtifact
* Mudança de SnDevOps
* SnDevOpsPackage
* snDevOpsGetChangeNumber
* snDevOpsUpdateChangeInfo
* snDevOpsSecurityResult

{#dev-ops-scripted-pipeline__ul_i1g_fjw_f5b}Para gerar um snippet de etapa, navegue até a Sintaxe do Pipeline a partir de um pipeline configurado, selecione a etapa na lista Etapa de Amostra e atualize os valores das diferentes variáveis na etapa. Selecione a opção ignorar erro para evitar falha no trabalho se houver um erro. Selecione Gerar script de pipeline para criar um snippet. Você pode copiar e colar o snippet em um pipeline.  
Exemplo de um script de pipeline para a tarefa SnDevOpsChange:

    snDevOpsChange changeCreationTimeOut: 3600, changeRequestDetails: '{ "attributes": { "short_description": "Test description", "priority": "1", "start_date": "2021-02-05 08:00:00", "end_date": "2022-04-05 08:00:00", "justification": "test justification", "description": "test description", "cab_required": true, "comments": "This update for work notes is from jenkins file", "work_notes": "test work notes", "assignment_group": "a715cd759f2002002920bde8132e7018" }, "setCloseCode": false, "autoCloseChange": true }', changeStepTimeOut: 18000, configurationName: 'Jenkins1', pollingInterval: 60

## Suporte paralelo e de subfase {#dev-ops-scripted-pipeline__section_yyr_gvy_jjb}

Quando uma fase (ou conjunto de fases paralelas) é aninhada em uma fase de pipeline, estas regras se aplicam:  
* Qualquer ação da fase aninhada é processada como parte da fase primária de nível raiz
* Somente uma solicitação de mudança é criada (no nível raiz primário), mesmo se várias fases aninhadas na fase primária de nível raiz acionarem uma mudança
* As tarefas de orquestração criadas são sempre associadas à fase primária de nível raiz (não à fase aninhada)
{#dev-ops-scripted-pipeline__ul_yb1_5xy_jjb}  

## Subfase {#dev-ops-scripted-pipeline__example_vxg_yty_2bc}

Neste exemplo de subfase, se uma solicitação de mudança for criada a partir da subfase (implantar PROD), os detalhes da fase primária de nível raiz (implantação) serão usados na solicitação de mudança e as tarefas de orquestração também serão associadas à fase primária fase de nível raiz (implantação).  


    stage("deploy") {
             stages{
                 stage('deploy UAT') {
                    when{
                       branch 'dev'
                    }
                stage('deploy PROD') {
                   when {
                      branch 'master'
                   }
                    steps{
                      
                      snDevOpsChange()              
                    }
                }
            }

## Fase paralela {#dev-ops-scripted-pipeline__example_wxg_yty_2bc}

Neste exemplo de fase paralela, se uma solicitação de mudança for criada a partir de uma subfase (UAT test-1 e/ou teste de código estático UAT), somente a primeira solicitação de mudança será criada (usando os detalhes da fase primária de nível raiz, UAT teste) independentemente de ambas as subfases (UAT test-1 e teste de código estático UAT) serem acionadas.

Não há indicação de qual fase paralela gerou a mudança e as tarefas de orquestração estão associadas à fase primária de nível raiz (teste UAT).  


    stage('UAT test') {
          parallel {
              stage('UAT test-1') {
                  steps {
                      snDevOpsChange()
                      // 'UAT test-1' tasks
                  }
                    post {
                      success {
                        // post success tasks. E.g.: junit '**/target/surefire-reports/*.xml'
                      }
                  }
              }
              stage('UAT static code test') {
                  steps {
                      snDevOpsChange()
                      // 'UAT static code test' tasks
                  }
              }
          }
     }


