From 049d6f8370504c6a965ee1b8b3cfb2c0d9525841 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=20Kl=C3=A4rner?= Date: Tue, 8 Oct 2024 16:50:27 +0200 Subject: [PATCH] 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) --- Dockerfile | 5 +++++ test/inspec/super-linter/controls/super_linter.rb | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/Dockerfile b/Dockerfile index 9ee29593..7862af27 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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 diff --git a/test/inspec/super-linter/controls/super_linter.rb b/test/inspec/super-linter/controls/super_linter.rb index d72acd27..52f10989 100644 --- a/test/inspec/super-linter/controls/super_linter.rb +++ b/test/inspec/super-linter/controls/super_linter.rb @@ -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",