Skip to content

Commit e92681d

Browse files
committed
add gitleaks
1 parent 59c6589 commit e92681d

3 files changed

Lines changed: 63 additions & 1 deletion

File tree

src/base/.devcontainer/Dockerfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,19 @@ ARG IMAGE_TAG
1010
ARG TARGETARCH
1111
ARG SAM_VERSION="v1.158.0"
1212
ARG ASDF_VERSION="v0.18.1"
13+
ARG GITLEAKS_VERSION="8.30.1"
1314

1415
ENV SCRIPTS_DIR=${SCRIPTS_DIR}
1516
ENV CONTAINER_NAME=${CONTAINER_NAME}
1617
ENV TARGETARCH=${TARGETARCH}
1718
ENV SAM_VERSION=${SAM_VERSION}
1819
ENV ASDF_VERSION=${ASDF_VERSION}
19-
20+
ENV GITLEAKS_VERSION=${GITLEAKS_VERSION}
2021
COPY --chmod=755 scripts/lifecycle/*.sh ${SCRIPTS_DIR}/
2122
COPY --chmod=755 scripts/root_install.sh ${SCRIPTS_DIR}/${CONTAINER_NAME}/root_install.sh
2223
COPY --chmod=755 scripts/install_aws_sam_cli.sh ${SCRIPTS_DIR}/${CONTAINER_NAME}/install_aws_sam_cli.sh
2324
COPY --chmod=755 scripts/install_asdf.sh ${SCRIPTS_DIR}/${CONTAINER_NAME}/install_asdf.sh
25+
COPY --chmod=755 scripts/install_gitleaks.sh ${SCRIPTS_DIR}/${CONTAINER_NAME}/install_gitleaks.sh
2426
COPY --chmod=755 Mk ${SCRIPTS_DIR}/Mk
2527

2628
WORKDIR ${SCRIPTS_DIR}/${CONTAINER_NAME}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
#!/usr/bin/env bash
2+
3+
VERSION=${VERSION:-"8.30.1"}
4+
# Expected SHA256 checksums taken from https://github.com/gitleaks/gitleaks/releases/tag/v8.30.1
5+
# When we change gitleaks versions, these must be changed
6+
sha256sum_expected_arm="sha256:e4a487ee7ccd7d3a7f7ec08657610aa3606637dab924210b3aee62570fb4b080"
7+
sha256sum_expected_amd64="sha256:551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb"
8+
9+
if [ "$(id -u)" -ne 0 ]; then
10+
echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.'
11+
exit 1
12+
fi
13+
14+
# Checks if packages are installed and installs them if not
15+
check_packages() {
16+
if ! dpkg -s "$@" > /dev/null 2>&1; then
17+
apt_get_update
18+
apt-get -y install --no-install-recommends "$@"
19+
fi
20+
}
21+
22+
check_packages curl ca-certificates tar sha256sum
23+
24+
install() {
25+
tmp_dir="$(mktemp -d)"
26+
trap 'rm -rf "${tmp_dir}"' EXIT
27+
28+
download_file="${tmp_dir}/gitleaks.tar.gz"
29+
30+
if [ "$TARGETARCH" = "arm64" ] || [ "$TARGETARCH" == "aarch64" ]; then
31+
download_url="https://github.com/gitleaks/gitleaks/releases/download/v${VERSION}/gitleaks_${VERSION}_linux_arm64.tar.gz"
32+
sha256sum_expected="${sha256sum_expected_arm}"
33+
else
34+
download_url="https://github.com/gitleaks/gitleaks/releases/download/v${VERSION}/gitleaks_${VERSION}_linux_x64.tar.gz"
35+
sha256sum_expected="${sha256sum_expected_amd64}"
36+
fi
37+
echo "Downloading gitleaks from ${download_url}..."
38+
curl -fsSL "${download_url}" -o "${download_file}"
39+
40+
download_file_sha256sum=$(sha256sum "${download_file}" | awk '{print $1}')
41+
if [ "${download_file_sha256sum}" != "${sha256sum_expected#sha256:}" ]; then
42+
echo "SHA256 checksum mismatch for downloaded gitleaks archive"
43+
echo "Expected: ${sha256sum_expected}"
44+
echo "Actual: sha256:${download_file_sha256sum}"
45+
exit 1
46+
fi
47+
48+
tar -xzf "${download_file}" -C "${tmp_dir}"
49+
mkdir -p /usr/bin
50+
mv "${tmp_dir}/gitleaks" /usr/bin/gitleaks
51+
chmod +x /usr/bin/gitleaks
52+
}
53+
echo "(*) Installing gitleaks..."
54+
55+
install
56+
57+
echo "Done!"

src/base/.devcontainer/scripts/root_install.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ VERSION="${SAM_VERSION}" "${SCRIPTS_DIR}/${CONTAINER_NAME}/install_aws_sam_cli.s
3737
# Install ASDF
3838
echo "Installing asdf"
3939
VERSION="${ASDF_VERSION}" "${SCRIPTS_DIR}/${CONTAINER_NAME}/install_asdf.sh"
40+
# install gitleaks
41+
echo "Installing gitleaks"
42+
VERSION="${GITLEAKS_VERSION}" "${SCRIPTS_DIR}/${CONTAINER_NAME}/install_gitleaks.sh"
4043

4144
# install gitsecrets
4245
git clone https://github.com/awslabs/git-secrets.git /tmp/git-secrets

0 commit comments

Comments
 (0)