Como usar um pipeline declarativo ou com script no DevOps

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 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

    • 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 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.

    • snDevOpsPackage

      Cria um pacote para artefatos ao configurar Artefatos e pacotes.

    • 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.

    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

    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
    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

    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)

    Subfase

    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

    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
                  }
              }
          }
     }