Jenkins
Use esta canalización declarativa en un agente Linux que tenga Docker disponible:
pipeline {
agent any
options {
buildDiscarder(logRotator(daysToKeepStr: '30', artifactDaysToKeepStr: '30'))
}
stages {
stage('Scan for malware') {
steps {
sh '''
mkdir -p amwscan-output
docker run --rm \
--volume "$WORKSPACE:/scan:ro" \
--volume "$WORKSPACE/amwscan-output:/output" \
marcocesarato/php-antimalware-scanner:latest /scan \
--lite --report-only --report-format=sarif \
--path-report=/output/amwscan-report.sarif \
--disable-checksum --disable-definitions-update
'''
}
}
}
post {
always {
archiveArtifacts artifacts: 'amwscan-output/amwscan-report.sarif', allowEmptyArchive: true
}
}
}
El espacio de trabajo se monta en modo de solo lectura. El directorio de salida independiente sigue siendo grabable para que Jenkins archive el informe SARIF cuando un hallazgo haga fallar la etapa de análisis. La canalización conserva los informes durante 30 días.