2020-06-18 00:47:31 +02:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
2023-08-16 11:20:10 +02:00
|
|
|
set -euo pipefail
|
|
|
|
|
2023-08-16 12:25:43 +02:00
|
|
|
if [ "${INPUT_DEBUG,,}" == "true" ]; then
|
2023-08-16 11:56:27 +02:00
|
|
|
set -x
|
|
|
|
fi
|
|
|
|
|
2023-08-16 11:20:10 +02:00
|
|
|
RUNTIME_OPTIONS=()
|
|
|
|
CUSTOM_OPTIONS=()
|
|
|
|
RUN_COMMAND=()
|
|
|
|
|
|
|
|
env | grep -v -E "^(#|;| |PATH|SHLVL|HOSTNAME|DOCKER_*)" | awk '$1 ~ /^\w+=/' | xargs -0 > "/docker-run-action.env"
|
|
|
|
|
2023-08-16 12:25:43 +02:00
|
|
|
if [ "${INPUT_DEBUG,,}" == "true" ]; then
|
2023-08-16 12:16:35 +02:00
|
|
|
cat "/docker-run-action.env"
|
|
|
|
fi
|
|
|
|
|
2023-08-16 11:20:10 +02:00
|
|
|
# login to container registry
|
|
|
|
if [ -n "${INPUT_USERNAME}" ]; then
|
2023-08-16 11:56:27 +02:00
|
|
|
printf -- '%s' "'${INPUT_PASSWORD}'" | docker login "${INPUT_REGISTRY}" -u "${INPUT_USERNAME}" --password-stdin
|
2023-08-16 11:20:10 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
# set custom network
|
|
|
|
if [ -n "${INPUT_DOCKER_NETWORK}" ]; then
|
|
|
|
RUNTIME_OPTIONS+=(--network "${INPUT_DOCKER_NETWORK}")
|
2020-06-18 00:47:31 +02:00
|
|
|
fi
|
|
|
|
|
2023-08-16 11:20:10 +02:00
|
|
|
# mount docker socket
|
|
|
|
if [ "${INPUT_MOUNT_SOCKET,,}" == "true" ]; then
|
|
|
|
RUNTIME_OPTIONS+=(--volume "/var/run/docker.sock:/var/run/docker.sock")
|
2021-02-15 22:21:09 +01:00
|
|
|
fi
|
|
|
|
|
2023-08-16 12:10:20 +02:00
|
|
|
# set entrypoint
|
|
|
|
if [ "${INPUT_ENTRYPOINT,,}" == "true" ]; then
|
|
|
|
RUNTIME_OPTIONS+=(--entrypoint="${INPUT_ENTRYPOINT}")
|
|
|
|
fi
|
|
|
|
|
2023-08-16 11:20:10 +02:00
|
|
|
# map volumes
|
2023-08-16 11:56:27 +02:00
|
|
|
mapfile -t -d ' ' TMP_VOLUMES < <(printf -- '%s' "${INPUT_VOLUMES}")
|
2023-08-16 11:20:10 +02:00
|
|
|
for vol in "${TMP_VOLUMES[@]}"; do
|
|
|
|
RUNTIME_OPTIONS+=(--volume "${vol}")
|
|
|
|
done
|
|
|
|
|
|
|
|
# get custom options
|
2023-08-16 11:56:27 +02:00
|
|
|
mapfile -t -d ' ' TMP_OPTIONS < <(printf -- '%s' "${INPUT_OPTIONS}")
|
2023-08-16 11:20:10 +02:00
|
|
|
for opt in "${TMP_OPTIONS[@]}"; do
|
|
|
|
CUSTOM_OPTIONS+=("${opt}")
|
|
|
|
done
|
|
|
|
|
|
|
|
# get run command
|
2023-08-16 11:56:27 +02:00
|
|
|
mapfile -t -d ' ' TMP_RUN < <(printf -- '%s' "${INPUT_RUN}")
|
2023-08-16 11:20:10 +02:00
|
|
|
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[@]}"
|