2021-05-31 13:57:42 +02:00
|
|
|
#!/bin/bash
|
2020-12-05 19:38:01 +01:00
|
|
|
# The problem-matcher definition must be present in the repository
|
2021-12-08 17:26:25 +01:00
|
|
|
# checkout (outside the Docker container running hadolint). We copy
|
|
|
|
# problem-matcher.json to the home folder.
|
2020-12-06 20:10:45 +01:00
|
|
|
|
2024-01-11 21:46:48 +01:00
|
|
|
# unset certain env vars to empty values
|
|
|
|
RESULTS=''
|
|
|
|
# shellcheck disable=SC2034
|
|
|
|
HADOLINT_RESULTS=''
|
|
|
|
|
|
|
|
# disable cheks for undefined env vars, in here mostly githu env vars
|
|
|
|
# shellcheck disable=SC2154
|
|
|
|
|
|
|
|
if [[ -n "${HADOLINT_WORKING_DIRECTORY}" ]]; then
|
|
|
|
cd "${HADOLINT_WORKING_DIRECTORY}" \
|
|
|
|
|| { echo "Error: failed to change path to ${HADOLINT_WORKING_DIRECTORY}, check if exists, if is a directory directory permissions etc"; exit 1; }
|
|
|
|
fi
|
|
|
|
|
2023-01-19 20:09:05 +01:00
|
|
|
PROBLEM_MATCHER_FILE="/problem-matcher.json"
|
2024-01-11 21:46:48 +01:00
|
|
|
if [[ -f "${PROBLEM_MATCHER_FILE}" ]]; then
|
|
|
|
cp "${PROBLEM_MATCHER_FILE}" "${HOME}/"
|
2023-01-19 20:09:05 +01:00
|
|
|
fi
|
2020-12-06 20:10:45 +01:00
|
|
|
# After the run has finished we remove the problem-matcher.json from
|
|
|
|
# the repository so we don't leave the checkout dirty. We also remove
|
|
|
|
# the matcher so it won't take effect in later steps.
|
2023-01-19 20:09:05 +01:00
|
|
|
# shellcheck disable=SC2317
|
2020-12-06 20:10:45 +01:00
|
|
|
cleanup() {
|
2023-01-20 09:55:56 +01:00
|
|
|
echo "::remove-matcher owner=brpaz/hadolint-action::"
|
2020-12-06 20:10:45 +01:00
|
|
|
}
|
|
|
|
trap cleanup EXIT
|
2020-12-05 19:38:01 +01:00
|
|
|
|
2024-01-11 21:46:48 +01:00
|
|
|
echo "::add-matcher::${HOME}/problem-matcher.json"
|
2020-12-05 18:34:32 +01:00
|
|
|
|
2024-01-11 21:46:48 +01:00
|
|
|
if [[ -n "${HADOLINT_CONFIG}" ]]; then
|
2021-05-08 13:08:16 +02:00
|
|
|
HADOLINT_CONFIG="-c ${HADOLINT_CONFIG}"
|
|
|
|
fi
|
|
|
|
|
2024-01-11 21:46:48 +01:00
|
|
|
if [[ -z "${HADOLINT_TRUSTED_REGISTRIES}" ]]; then
|
2023-01-20 09:55:56 +01:00
|
|
|
unset HADOLINT_TRUSTED_REGISTRIES
|
2022-03-24 15:28:03 +01:00
|
|
|
fi
|
|
|
|
|
2024-01-11 21:46:48 +01:00
|
|
|
COMMAND="hadolint ${HADOLINT_CONFIG}"
|
2023-01-19 20:09:05 +01:00
|
|
|
|
2024-01-11 21:46:48 +01:00
|
|
|
if [[ "${HADOLINT_RECURSIVE}" = "true" ]]; then
|
2021-05-31 13:57:42 +02:00
|
|
|
shopt -s globstar
|
|
|
|
filename="${!#}"
|
2023-01-19 20:09:05 +01:00
|
|
|
flags="${*:1:$#-1}"
|
|
|
|
|
2024-01-11 21:46:48 +01:00
|
|
|
files_found=false
|
|
|
|
# try to find files to scan but do not end with eror if no files found
|
|
|
|
# notice that $filename can contain glob char so we add exception here
|
|
|
|
# shellcheck disable=SC2231
|
|
|
|
for file in **/${filename}
|
|
|
|
do
|
|
|
|
if [[ -e "${file}" ]]
|
|
|
|
then
|
|
|
|
files_found=true
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
if [[ "${files_found}" = "true" ]]; then
|
|
|
|
# notice that $filename can contain glob char so we add exception here
|
|
|
|
# shellcheck disable=SC2086,SC2231,SC2248
|
|
|
|
RESULTS=$(eval "${COMMAND} ${flags}" -- **/${filename})
|
|
|
|
else
|
|
|
|
RESULTS=''
|
|
|
|
echo "No Dockerfiles detected, skipping processing";
|
|
|
|
fi
|
|
|
|
|
2021-05-31 13:57:42 +02:00
|
|
|
else
|
2023-01-19 20:09:05 +01:00
|
|
|
flags=$*
|
2024-01-11 21:46:48 +01:00
|
|
|
RESULTS=$(eval "${COMMAND}" "${flags}")
|
2022-03-31 09:51:31 +02:00
|
|
|
fi
|
|
|
|
FAILED=$?
|
|
|
|
|
2024-01-11 21:46:48 +01:00
|
|
|
if [[ -n "${HADOLINT_OUTPUT}" ]]; then
|
|
|
|
if [[ -f "${HADOLINT_OUTPUT}" ]]; then
|
|
|
|
HADOLINT_OUTPUT="${TMP_FOLDER}/${HADOLINT_OUTPUT}"
|
2022-03-31 09:51:31 +02:00
|
|
|
fi
|
2024-01-11 21:46:48 +01:00
|
|
|
echo "${RESULTS}" >"${HADOLINT_OUTPUT}"
|
2021-05-31 13:57:42 +02:00
|
|
|
fi
|
2021-11-18 13:09:22 +01:00
|
|
|
|
2022-03-31 12:45:58 +02:00
|
|
|
RESULTS="${RESULTS//$'\\n'/''}"
|
2022-11-08 21:33:58 +00:00
|
|
|
|
2023-01-20 09:55:56 +01:00
|
|
|
{
|
|
|
|
echo "results<<EOF"
|
2024-01-11 21:46:48 +01:00
|
|
|
echo "${RESULTS}"
|
2023-01-20 09:55:56 +01:00
|
|
|
echo "EOF"
|
2024-01-11 21:46:48 +01:00
|
|
|
} >>"${GITHUB_OUTPUT}"
|
2022-03-31 11:14:55 +02:00
|
|
|
|
2023-01-20 09:55:56 +01:00
|
|
|
{
|
|
|
|
echo "HADOLINT_RESULTS<<EOF"
|
2024-01-11 21:46:48 +01:00
|
|
|
echo "${RESULTS}"
|
2023-01-20 09:55:56 +01:00
|
|
|
echo "EOF"
|
2024-01-11 21:46:48 +01:00
|
|
|
} >>"${GITHUB_ENV}"
|
2022-03-31 12:49:42 +02:00
|
|
|
|
2024-01-11 21:46:48 +01:00
|
|
|
[[ -z "${HADOLINT_OUTPUT}" ]] || echo "Hadolint output saved to: ${HADOLINT_OUTPUT}"
|
2022-03-24 12:57:02 +00:00
|
|
|
|
2024-01-11 21:46:48 +01:00
|
|
|
# shellcheck disable=SC2248
|
|
|
|
exit ${FAILED}
|