Jenkins: Criando campos dinâmicos a partir de chamadas à APIs

대부분의 기술은 Jenkins가 아닌 빌드 매개변수 API를 기반으로 하는 가장 기본적인 기술입니다. cURL, Groovy, JsonSlurper, JSON 또는 JSON을 사용할 수 없습니다plugin Active Choices.

실용성을 예로 들자면 브라질 국가에서 IBGE 레토난도 API를 사용하는 것이 좋습니다. Segue abaixo um exemplo do JSON que ela retorna:

[
    {
        "id": 11,
        "sigla": "RO",
        "nome": "Rondônia",
        "regiao": {
            "id": 1,
            "sigla": "N",
            "nome": "Norte"
        }
    },
    {
        "id": 12,
        "sigla": "AC",
        "nome": "Acre",
        "regiao": {
            "id": 1,
            "sigla": "N",
            "nome": "Norte"
        }
    },
    ...
]


Aqui nós iremos pegar apenas as UFs dos Estados armazenadas no campo sigla e popular um single select do Active Choices (que já deve estar instalado):

Postman API를 사용하는 테스트 테스트 도구는 GET 도구https://servicodados.ibge.gov.br/api/v1/localidades/estados를 요청하는 데 사용할 수 있습니다.

Vamos ao código da pipeline:

import groovy.json.JsonSlurperClassic
node {
    properties([
        parameters([
            [$class: 'ChoiceParameter',
                choiceType: 'PT_SINGLE_SELECT',
                description: 'Selecione o Estado',
                name: 'estado',
                script: [$class: 'GroovyScript',
                    script: [
                        sandbox: false,
                        classpath: [],
                        script: 
                            """
                            import groovy.json.JsonSlurperClassic
                            def proc = "curl -s -H 'Accept:application/json;charset=UTF-8' https://servicodados.ibge.gov.br/api/v1/localidades/estados".execute()
                            proc.waitFor()

                            def output = proc.in.text
                            def exit_code = proc.exitValue()
                            def error = proc.err.text

                            if (error) {
                                print("Std err: \${error}")
                                print("Process exit code \${exitcode}")
                                return exitcode
                            }

                            def json = new JsonSlurperClassic().parseText(output)

                            def siglas = []

                            json.each { v ->
                                siglas.push(v.sigla)
                            }

                            return siglas.sort()
                            """
                    ]
                ]
            ]
        ])
    ])

    stage('Estágio único') {         
            print("O Estado escolhido foi ${estado}.")         
    }
}


Por meio da função parameters(), estamos definindo uma lista com todos os paraâmetros que nosso job irá possuir. Neste caso, estamos definindo apenas um campo do tipoChoiceParameter . Precisamos especificar o tipo da escolha, setando-a como PT_SINGLE_SELECT , damos um nome através da propriedade name e escrevemos então o script em Groovy que será executado para gerar as opções do campo.

Importante: Todo script colocado aqui deve retornar uma lista para popular o campo.



JsonSlurper는 JsonSlurper 라이브러리를 JSON으로 역직렬화하거나 Groovy로 역직렬화하고 배열을 Groovy로 변환하여 UF로 다시 변환할 수 있습니다.

예를 들어, temos um único stage no pipeline, printando na tela a UF do Estado selecionado.

Alguns pontos 중요 사항:
  • Você pode utilizar tanto scripted pipelines quando declarative pipelines para chegar ao objetivo final. 포함, caso não queira colocar os paraâmetros dentro do código da pipeline, você pode fazer isso(embora eu não recomende);
  • Jenkins의 Gerenciamento 지역에 있는 스크립트 및 비블리오 테카의 실행에 필요한 자동 생성;
  • O 플러그인 Active Choices possui outros tipos de campos, inclusive reativos(imagine uma situação em que você possui dois campos, A e B, e os valores de B dependsem do que foi selecionado em A);
  • Pod ser necessária uma execução do job que falhará (isso é normal) para que a opção Build with parameters esteja disponível.

  • 문제 해결



    Para que você consiga fazer um melhor Troubleshooting do script Groovy executado para o Active Choices, você pode criar um logger especialmente para ele. Quando queremos separar o debug desse 스크립트는 파이프라인 원칙을 수행합니다. 다음은 Jenkins 관리 > 시스템 로그 > 클릭에서 새 로그 레코더 추가 > "ActiveChoices"로 이름 지정 > 클릭에서 추가 > No campo Logger digiteorg.biouno.unochoice , 선택에서 nível desejado 및 depois clique에서 저장합니다.

    참조


  • Documentação oficial do plugin
  • Troubleshooting do plugin
  • Post sobre Active Choices e suas funcionalidades
  • 좋은 웹페이지 즐겨찾기