From 25bb9ae5dd0814cf0c9de78a87fe1817827f17df Mon Sep 17 00:00:00 2001 From: Douglas Lagemann <douglagemann@seed-innovations.com> Date: Fri, 18 Oct 2024 17:35:22 +0000 Subject: [PATCH] BULL-3226: Add trufflehog job --- docker/pipeline-jobs/docker-compose-test.yml | 15 ++++++++ .../docker-compose-trufflehog.yml | 15 ++++++++ formulas/express.yml | 13 +++++++ root/.env | 2 ++ scripts/trufflehog/docker-compose.yml | 34 ------------------- scripts/trufflehog/entrypoint.sh | 15 ++++---- 6 files changed, 51 insertions(+), 43 deletions(-) create mode 100644 docker/pipeline-jobs/docker-compose-test.yml create mode 100644 docker/pipeline-jobs/docker-compose-trufflehog.yml create mode 100644 formulas/express.yml delete mode 100644 scripts/trufflehog/docker-compose.yml diff --git a/docker/pipeline-jobs/docker-compose-test.yml b/docker/pipeline-jobs/docker-compose-test.yml new file mode 100644 index 0000000..8d182cf --- /dev/null +++ b/docker/pipeline-jobs/docker-compose-test.yml @@ -0,0 +1,15 @@ +services: + + <<pipelineJobName>>: + image: registry1.dso.mil/ironbank/opensource/trufflehog/trufflehog3:3.0.10 + container_name: <<pipelineJobName>> + entrypoint: ["${BASE_SCRIPTS_DIR}/trufflehog/entrypoint.sh"] + working_dir: /root + environment: + - REPORTS_DIR=${BASE_REPORTS_DIR}/<<pipelineJobName>> + - SCRIPTS_DIR=${BASE_SCRIPTS_DIR}/trufflehog + - SCAN_DIR=/app + - TRUFFLEHOG_EXCLUDE_PATHS=<<exclusions>> + volumes: + - ./:/root + - ./<<projectName>>-<<subProjectName>>:/app \ No newline at end of file diff --git a/docker/pipeline-jobs/docker-compose-trufflehog.yml b/docker/pipeline-jobs/docker-compose-trufflehog.yml new file mode 100644 index 0000000..b483471 --- /dev/null +++ b/docker/pipeline-jobs/docker-compose-trufflehog.yml @@ -0,0 +1,15 @@ +services: + + <<pipelineJobName>>: + image: registry1.dso.mil/ironbank/opensource/trufflehog/trufflehog3:3.0.10 + container_name: <<pipelineJobName>> + entrypoint: ["${BASE_SCRIPTS_DIR}/trufflehog/entrypoint.sh"] + working_dir: /root + environment: + - REPORTS_DIR=${BASE_REPORTS_DIR}/<<pipelineJobName>> + - SCRIPTS_DIR=${BASE_SCRIPTS_DIR}/trufflehog + - SCAN_DIR=/app + - TRUFFLEHOG_EXCLUDE_PATHS=<<exclusions>> + volumes: + - ./:/root + - ./<<projectName>>-<<subProjectName>>:/app diff --git a/formulas/express.yml b/formulas/express.yml new file mode 100644 index 0000000..1d136fb --- /dev/null +++ b/formulas/express.yml @@ -0,0 +1,13 @@ +pipelineJobs: + - name: trufflehog + composeFile: docker/pipeline-jobs/docker-compose-trufflehog.yml + substitutions: + pipelineJobName: trufflehog-api + subProjectName: api + exclusions: package-lock.json + - name: fakeTestJob + composeFile: docker/pipeline-jobs/docker-compose-test.yml + substitutions: + pipelineJobName: trufflehog-test + subProjectName: test + exclusions: testfile.yml diff --git a/root/.env b/root/.env index c39988a..aac1565 100644 --- a/root/.env +++ b/root/.env @@ -1 +1,3 @@ DEBUGGER_ARGS=--continue +BASE_REPORTS_DIR=reports +BASE_SCRIPTS_DIR=scripts diff --git a/scripts/trufflehog/docker-compose.yml b/scripts/trufflehog/docker-compose.yml deleted file mode 100644 index 572193b..0000000 --- a/scripts/trufflehog/docker-compose.yml +++ /dev/null @@ -1,34 +0,0 @@ -version: "0.1" -services: - - trufflehog-api: - image: registry1.dso.mil/ironbank/opensource/trufflehog/trufflehog3:3.0.10 - container_name: trufflehog3-api - entrypoint: ["/root/scripts/trufflehog/entrypoint.sh"] - working_dir: /root - # env_file: - # - .env # TODO: Setting env vars in here allows use of env vars inside this file itself, i.e. the entrypoint directory. Probably good to define a BASE_SCRIPTS_DIR for all jobs. - environment: - - REPORT_DIR=/root/reports/trufflehog-api - - SCRIPTS_DIR=/root/scripts/trufflehog - - SCAN_DIR=/app - # - TRUFFLEHOG_EXCLUDE_PATHS= # TODO: Refine - volumes: - - ./:/root - - ./<<projectName>>-api:/app - - trufflehog-ui: - image: registry1.dso.mil/ironbank/opensource/trufflehog/trufflehog3:3.0.10 - container_name: trufflehog3-ui - entrypoint: ["/root/scripts/trufflehog/entrypoint.sh"] - working_dir: /root - # env_file: - # - .env # TODO: Setting env vars in here allows use of env vars inside this file itself, i.e. the entrypoint directory. Probably good to define a BASE_SCRIPTS_DIR for all jobs. - environment: - - REPORT_DIR=/root/reports/trufflehog-ui - - SCRIPTS_DIR=/root/scripts/trufflehog - - SCAN_DIR=/app - # - TRUFFLEHOG_EXCLUDE_PATHS= # TODO: Refine - volumes: - - ./:/root - - ./<<projectName>>-ui:/app diff --git a/scripts/trufflehog/entrypoint.sh b/scripts/trufflehog/entrypoint.sh index 847f719..a6cfd0a 100755 --- a/scripts/trufflehog/entrypoint.sh +++ b/scripts/trufflehog/entrypoint.sh @@ -1,19 +1,16 @@ #!/bin/bash -ls -al # TODO: Delete -mkdir -p ${REPORT_DIR} -REPORT_FILE=${REPORT_DIR}/trufflehog_report.json +mkdir -p ${REPORTS_DIR} +REPORT_FILE=${REPORTS_DIR}/trufflehog_report.json # enable shell globbing for recursive exclude matching. allows use of '**/*' format shopt -s globstar -configfiletoremove=".trufflehog3.yml" -if [ -f "$configfiletoremove" ]; then rm -f "$configfiletoremove" && echo "I deleted trufflehog3.yml"; fi # set -x so we can see the real command being run set -x -trufflehog3 -vvv --ignore-nosecret --exclude ${TRUFFLEHOG_EXCLUDE_PATHS} \ - --format json --zero --no-history \ +trufflehog3 -vvv --ignore-nosecret --format json --zero --no-history \ + --exclude ${TRUFFLEHOG_EXCLUDE_PATHS} \ -r ${SCRIPTS_DIR}/rules.yml \ - -o ${REPORT_FILE} ${SCAN_DIR} 2>&1 | tee ${REPORT_DIR}/trufflehog_log.txt # TODO: Writing to trufflehog_log.txt not currently working + -o ${REPORT_FILE} \ + ${SCAN_DIR} set +x shopt -u globstar -trufflehog3 --version > ${REPORT_DIR}/trufflehog_version.txt python ${SCRIPTS_DIR}/trufflehog-gate-check.py "${REPORT_FILE}" -- GitLab