Ivo Dias
Posted on March 22, 2023
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
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
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
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>"
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.
Posted on March 22, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.