This repository has been archived on 2024-09-20. You can view files and clone it, but cannot push or open issues or pull requests.
docker-run-action/entrypoint.sh
Ivan Schaller 57f5df95d6
All checks were successful
run tests / run-container (push) Successful in 7s
fix debug
2023-08-16 12:25:43 +02:00

64 lines
1.6 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
if [ "${INPUT_DEBUG,,}" == "true" ]; then
set -x
fi
RUNTIME_OPTIONS=()
CUSTOM_OPTIONS=()
RUN_COMMAND=()
env | grep -v -E "^(#|;| |PATH|SHLVL|HOSTNAME|DOCKER_*)" | awk '$1 ~ /^\w+=/' | xargs -0 > "/docker-run-action.env"
if [ "${INPUT_DEBUG,,}" == "true" ]; then
cat "/docker-run-action.env"
fi
# login to container registry
if [ -n "${INPUT_USERNAME}" ]; then
printf -- '%s' "'${INPUT_PASSWORD}'" | docker login "${INPUT_REGISTRY}" -u "${INPUT_USERNAME}" --password-stdin
fi
# set custom network
if [ -n "${INPUT_DOCKER_NETWORK}" ]; then
RUNTIME_OPTIONS+=(--network "${INPUT_DOCKER_NETWORK}")
fi
# mount docker socket
if [ "${INPUT_MOUNT_SOCKET,,}" == "true" ]; then
RUNTIME_OPTIONS+=(--volume "/var/run/docker.sock:/var/run/docker.sock")
fi
# set entrypoint
if [ "${INPUT_ENTRYPOINT,,}" == "true" ]; then
RUNTIME_OPTIONS+=(--entrypoint="${INPUT_ENTRYPOINT}")
fi
# map volumes
mapfile -t -d ' ' TMP_VOLUMES < <(printf -- '%s' "${INPUT_VOLUMES}")
for vol in "${TMP_VOLUMES[@]}"; do
RUNTIME_OPTIONS+=(--volume "${vol}")
done
# get custom options
mapfile -t -d ' ' TMP_OPTIONS < <(printf -- '%s' "${INPUT_OPTIONS}")
for opt in "${TMP_OPTIONS[@]}"; do
CUSTOM_OPTIONS+=("${opt}")
done
# get run command
mapfile -t -d ' ' TMP_RUN < <(printf -- '%s' "${INPUT_RUN}")
for cmd in "${TMP_RUN[@]}"; do
RUN_COMMAND+=("${cmd}")
done
exec docker run \
--volume "${INPUT_WORKDIR}:${INPUT_WORKDIR}" \
--workdir "${INPUT_WORKDIR}" \
--env-file "/docker-run-action.env" \
"${RUNTIME_OPTIONS[@]}" \
"${CUSTOM_OPTIONS[@]}" \
"${INPUT_IMAGE}" \
"${RUN_COMMAND[@]}"