From 2031626ade5c49ecd40d9aa81a0ebc96f9b43cbc Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Thu, 27 Jun 2024 13:16:37 -0500 Subject: [PATCH] ci-base-image: entrypoint hackery to make sure PATH gets set --- docker/Dockerfile | 8 +++++++- docker/entrypoint.sh | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 docker/entrypoint.sh diff --git a/docker/Dockerfile b/docker/Dockerfile index 8f0648f..8da086e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -27,6 +27,12 @@ RUN apt-get clean RUN echo "runner ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/allow-runner-sudo RUN echo 'APT::Get::Assume-Yes "1";' > /etc/apt/apt.conf.d/75assume-yes -RUN echo 'export PATH="$PATH:$HOME/.local/bin"' >> /home/runner/.bashrc + +# We get run with bash --login. That reads .bash_profile, but not .bashrc. +RUN echo 'export PATH="$PATH:$HOME/.local/bin"' >> /home/runner/.bash_profile USER runner + +ADD entrypoint.sh / + +ENTRYPOINT ["/bin/bash", "/entrypoint.sh"] diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100644 index 0000000..86bc7d6 --- /dev/null +++ b/docker/entrypoint.sh @@ -0,0 +1,15 @@ +# According to +# https://docs.gitlab.com/runner/shells/#shell-profile-loading +# Gitlab runner's docker executor does not load shell startup files, +# because that's a great idea. +cmd=() +for i in "$@"; do + cmd+=("$(echo "$i"| sed "/exec/s/bash/bash --login/g")") +done +echo "Using rewritten shell invocation received from executor." +echo "${cmd[@]}" +"${cmd[@]}" +retcode="$?" +echo "return code from command: $retcode" +exit "$retcode" + -- GitLab