fix: ensure setting /github/workdir as Git safe directory works always

When running super-linter on in a self hosted runner based on Action
Runner Controller in K8s container mode the /github/home directory is
not neccesarily mounted. But since we expect this directory to exist
super-linter fails to set /github/workspace as a Git safe directory:

    2024-10-04 17:58:37 [INFO]   Successfully validated GITHUB_WORKSPACE: /github/workspace
    2024-10-04 17:58:37 [DEBUG]   Configuring Git safe directories
    2024-10-04 17:58:37 [DEBUG]   Set /github/workspace as a Git safe directory
    error: could not lock config file /github/home/.gitconfig: No such file or directory
    2024-10-04 17:58:37 [FATAL]   Cannot configure /github/workspace as a Git safe directory.

Making sure this directory exists in container image ensures that under
no circumstances we can fail - if the action runner provides
/github/home it will be mounted over, and if not we provide a directory
where git can actually create the new .gitconfig.

This also defaults the HOME environment variable to /github/home as it
is the default in most places. So if somebody decides to override HOME
they are also expected to ensure that this directory exists (or is a
volume mount)
This commit is contained in:
Andre Klärner 2024-10-08 16:50:27 +02:00
parent b2d0953bfc
commit 049d6f8370
No known key found for this signature in database
GPG key ID: 6528912C6687A3E2
2 changed files with 10 additions and 0 deletions

View file

@ -434,6 +434,11 @@ ENV RENOVATE_X_IGNORE_RE2="true"
ENV VERSION_FILE="/action/linterVersions.txt"
RUN mkdir /action
# create the homedir, so that in case it is not present (like on action-runner-controller based selfhosted runners)
# we do not fail at setting /github/workspace as a safe git directory
ENV HOME="/github/home"
RUN mkdir -p "${HOME}"
ENTRYPOINT ["/action/lib/linter.sh"]
FROM base_image AS slim

View file

@ -18,6 +18,10 @@ control "super-linter-environment-variables" do
its("content") { should match(/^(standard|slim)$/) }
end
describe os_env("HOME") do
its("content") { should eq "/github/home" }
end
describe os_env("RENOVATE_X_IGNORE_RE2") do
its("content") { should eq "true" }
end
@ -437,6 +441,7 @@ control "super-linter-validate-directories" do
desc "Check that directories that Super-Linter needs are installed."
dirs = [
"/github/home",
"/node_modules",
"/action/lib",
"/action/lib/functions",