From 8df636d8b2be21aef329fc2f42b2bc1a846b12f9 Mon Sep 17 00:00:00 2001 From: Kaare Hoff Skovgaard Date: Mon, 30 Jun 2025 21:05:36 +0200 Subject: [PATCH] Read out HOME instead of the os query info As when using the gitea-actions-runner on NixOS it is using systemd dynamic user --- index.js | 3 ++- paths.js | 49 +++++++++++++++++++++++++------------------------ 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/index.js b/index.js index d28a764..807387f 100644 --- a/index.js +++ b/index.js @@ -2,6 +2,7 @@ const core = require('@actions/core'); const child_process = require('child_process'); const fs = require('fs'); const crypto = require('crypto'); +const path = require('path'); const { homePath, sshAgentCmd, sshAddCmd, gitCmd } = require('./paths.js'); try { @@ -14,7 +15,7 @@ try { return; } - const homeSsh = homePath + '/.ssh'; + const homeSsh = path.join(homePath, '.ssh'); fs.mkdirSync(homeSsh, { recursive: true }); console.log("Starting ssh-agent"); diff --git a/paths.js b/paths.js index f440579..7966262 100644 --- a/paths.js +++ b/paths.js @@ -1,29 +1,30 @@ -const os = require('os'); -const core = require('@actions/core'); +const os = require("os"); +const core = require("@actions/core"); -const defaults = (process.env['OS'] != 'Windows_NT') ? { - // We use os.userInfo() rather than os.homedir(), since it uses the getpwuid() system call to get the user's home directory (see https://nodejs.org/api/os.html#osuserinfooptions). - // This mimics the way openssh derives the home directory for locating config files (see https://github.com/openssh/openssh-portable/blob/826483d51a9fee60703298bbf839d9ce37943474/ssh.c#L710); - // Makes a difference in Docker-based Action runs, when $HOME is different from what getpwuid() returns (which is based on the entry in /etc/passwd) - homePath: os.userInfo().homedir, - sshAgentCmdDefault: 'ssh-agent', - sshAddCmdDefault: 'ssh-add', - gitCmdDefault: 'git' -} : { - // Assuming GitHub hosted `windows-*` runners for now - homePath: os.homedir(), - sshAgentCmdDefault: 'c://progra~1//git//usr//bin//ssh-agent.exe', - sshAddCmdDefault: 'c://progra~1//git//usr//bin//ssh-add.exe', - gitCmdDefault: 'c://progra~1//git//bin//git.exe' -}; +const defaults = + process.env["OS"] != "Windows_NT" + ? { + homePath: os.homedir(), + sshAgentCmdDefault: "ssh-agent", + sshAddCmdDefault: "ssh-add", + gitCmdDefault: "git", + } + : { + // Assuming GitHub hosted `windows-*` runners for now + homePath: os.homedir(), + sshAgentCmdDefault: "c://progra~1//git//usr//bin//ssh-agent.exe", + sshAddCmdDefault: "c://progra~1//git//usr//bin//ssh-add.exe", + gitCmdDefault: "c://progra~1//git//bin//git.exe", + }; -const sshAgentCmdInput = core.getInput('ssh-agent-cmd'); -const sshAddCmdInput = core.getInput('ssh-add-cmd'); -const gitCmdInput = core.getInput('git-cmd'); +const sshAgentCmdInput = core.getInput("ssh-agent-cmd"); +const sshAddCmdInput = core.getInput("ssh-add-cmd"); +const gitCmdInput = core.getInput("git-cmd"); module.exports = { - homePath: defaults.homePath, - sshAgentCmd: sshAgentCmdInput !== '' ? sshAgentCmdInput : defaults.sshAgentCmdDefault, - sshAddCmd: sshAddCmdInput !== '' ? sshAddCmdInput : defaults.sshAddCmdDefault, - gitCmd: gitCmdInput !== '' ? gitCmdInput : defaults.gitCmdDefault, + homePath: defaults.homePath, + sshAgentCmd: + sshAgentCmdInput !== "" ? sshAgentCmdInput : defaults.sshAgentCmdDefault, + sshAddCmd: sshAddCmdInput !== "" ? sshAddCmdInput : defaults.sshAddCmdDefault, + gitCmd: gitCmdInput !== "" ? gitCmdInput : defaults.gitCmdDefault, };