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

65 lines
1.6 KiB
Bash
Raw Permalink Normal View History

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[@]}"