in src/main/java/com/amazon/inspector/jenkins/amazoninspectorbuildstep/sbomgen/SbomgenRunner.java [48:103]
private String runSbomgen(String sbomgenPath, String archivePath) throws Exception {
FilePath sbomgenFilePath = new FilePath(new File(sbomgenPath));
if (!isValidPath(sbomgenFilePath.getRemote())) {
throw new IllegalArgumentException("Invalid sbomgen path: " + sbomgenPath);
}
Map<String, String> environment = new HashMap<>();
if (dockerPassword != null && !dockerPassword.isEmpty()) {
environment.put("INSPECTOR_SBOMGEN_USERNAME", dockerUsername);
environment.put("INSPECTOR_SBOMGEN_PASSWORD", dockerPassword);
}
AmazonInspectorBuilder.logger.println("Making downloaded SBOMGen executable...");
SbomgenUtils.runCommand(new String[]{"chmod", "+x", sbomgenFilePath.getRemote()},
launcher, environment);
AmazonInspectorBuilder.logger.println("Running command...");
String option = "--image";
if (!archiveType.equals("container")) {
option = "--path";
}
String[] baseCommandList = new String[] {
sbomgenFilePath.getRemote(),
archiveType,
option,
archivePath
};
AmazonInspectorBuilder.logger.println(Arrays.toString(baseCommandList));
if (sbomgenSkipFiles != null && !sbomgenSkipFiles.trim().isEmpty()) {
String[] patterns = sbomgenSkipFiles.split("\\r?\\n");
List<String> validPatterns = Arrays.stream(patterns)
.map(String::trim)
.filter(p -> !p.isEmpty())
.collect(Collectors.toList());
if (!validPatterns.isEmpty()) {
String skipFilesJoined = String.join(",", validPatterns);
String[] extendedCommandList = Arrays.copyOf(baseCommandList,
baseCommandList.length + 2);
extendedCommandList[extendedCommandList.length - 2] = "--skip-files";
extendedCommandList[extendedCommandList.length - 1] = skipFilesJoined;
baseCommandList = extendedCommandList;
AmazonInspectorBuilder.logger.println("DEBUG: --skip-files argument: " +
skipFilesJoined);
AmazonInspectorBuilder.logger.println(Arrays.toString(baseCommandList));
}
}
String output = SbomgenUtils.runCommand(baseCommandList, launcher, environment);
return SbomgenUtils.processSbomgenOutput(output);
}