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.
Top comments (0)