diff --git a/docker/Dockerfile b/docker/Dockerfile index 8f0648f2835e4d01502675fefd661af692fe4f6f..8da086e78b82c1654b67dd61edbb951536019153 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 0000000000000000000000000000000000000000..86bc7d627da3ff70cd27e3801b156db74e5cf223 --- /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" +