Quebrando pipelines Jenkins no Windows

igd753

Ivo Dias

Posted on March 22, 2023

Quebrando pipelines Jenkins no Windows

A ideia desse artigo é explicar como fazer um pipeline Jenkins, rodando num ambiente Windows, quebrar conforme o resultado da analise do Pipeline Scan caso por padrão isso não esteja acontecendo.

Considerando que vamos usar a opção Freestyle do Jenkins para chamar um CMD, vamos deixar configurado em uma pasta as ferramentas necessárias (para o Pipeline Scan precisamos do JAR dele) e criar um script Powershell para fazer a analise e gerar o código de erro.

Para configurar a pasta, vamos fazer a configuração tendo como alvo a pasta "C:/Veracode". No Terminal do Windows, pode utilizar os comandos:

# Configuração
$pastaferramenta  = "C:/Veracode/" # Define uma pasta onde vamos colocar a ferramenta

# Download e configuração: Pipeline Scan
$urlDownload = "https://downloads.veracode.com/securityscan/pipeline-scan-LATEST.zip" # Define a url de download
$caminhoDownload = "$env:LOCALAPPDATA/VeracodePipeline.zip" # Define um caminho para o arquivo de download
Invoke-WebRequest -Uri "$urlDownload" -OutFile "$caminhoDownload" # Faz o download
Expand-Archive -Path "$caminhoDownload" -DestinationPath "$pastaferramenta" # Descompacta o ZIP para uma pasta
Remove-Item "$caminhoDownload" # Remove o arquivo de download
Enter fullscreen mode Exit fullscreen mode

Assim que completar, adicione essa pasta ao PATH do sistema (ou apenas entre nela durante a execução do pipeline).

Agora vamos fazer a criação de um script para fazer nossa analise.
Basicamente nele:

  • Vamos passar como parâmetro o caminho do arquivo que vamos analisar
  • Fazemos a analise com o Pipeline Scan
  • Pegamos o total dos resultados do arquivo JSON
  • Passamos esse total como código de erro

Para o caso onde vamos quebrar com as opções padrões (qualquer nivel de falha):

param (
        [parameter(position=0,Mandatory=$True)]
        $caminhoArquivo
)

# Faz o Scan
java -jar "pipeline-scan.jar" -f $caminhoarquivo --issue_details true
# Pega o total de falhas encontradas
$retornoPS = Get-Content .\results.json | ConvertFrom-Json
$resultados = $retornoPS.findings
$totalResultados = $resultados.count
# Causa o erro com base nesse numero
exit $totalResultados
Enter fullscreen mode Exit fullscreen mode

Caso queira fazer uma personalização no nível de falhas, vamos fazer uma pequena alteração:

param (
        [parameter(position=0,Mandatory=$True)]
        $caminhoArquivo
)

# Configuracoes
$filtroSeveridade = "Very High, High"

# Faz o Scan
java -jar "pipeline-scan.jar" -f $caminhoarquivo --issue_details true --fail_on_severity= "$filtroSeveridade"
# Pega o total de falhas encontradas
$retornoPS = Get-Content .\filtered_results.json | ConvertFrom-Json
$resultados = $retornoPS.findings
$totalResultados = $resultados.count
# Causa o erro com base nesse numero
exit $totalResultados
Enter fullscreen mode Exit fullscreen mode

Salvamos ele com um nome qualquer, como PipescanM3.ps1 e na opção Executar no comando do Windows, utilizamos a sintaxe:

powershell "<caminho script>/PipescanM3.ps1" "<caminho pacote analise>"
Enter fullscreen mode Exit fullscreen mode

Com isso, caso seja encontrado alguma falha na analise, o fluxo vai ser interrompido com o código de erro.

Para saber mais sobre a Veracode e solicitar um ambiente de testes, entre em contato.

💖 💪 🙅 🚩
igd753
Ivo Dias

Posted on March 22, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related