2
1

docker-run 680 B

1234567891011121314151617181920212223
  1. #!/usr/bin/env bash
  2. set -o errexit -o pipefail
  3. DIR=$(dirname "${0}")
  4. MAIN_DIR=$(readlink -f "${DIR}/..")
  5. # GIT_DIR to support workdirs/worktrees
  6. GIT_DIR="$(dirname "$(realpath "${MAIN_DIR}/.git/config")")"
  7. # shellcheck disable=SC2016
  8. IMAGE=$(grep ^image: "${MAIN_DIR}/.gitlab-ci.yml" | \
  9. sed -e 's,^image: ,,g' | sed -e 's,\$CI_REGISTRY,registry.gitlab.com,g')
  10. declare -a docker_opts=(
  11. -i
  12. --rm
  13. --user "$(id -u):$(id -g)"
  14. --mount "type=bind,src=${MAIN_DIR},dst=${MAIN_DIR}"
  15. --mount "type=bind,src=${GIT_DIR},dst=${GIT_DIR}"
  16. --workdir "${MAIN_DIR}"
  17. )
  18. if tty -s; then
  19. docker_opts+=( -t )
  20. fi
  21. exec docker run "${docker_opts[@]}" "${IMAGE}" "${@}"