From e50d5f73bfe71c2dd0aa4218de8f4afa59f8f81d Mon Sep 17 00:00:00 2001 From: Graham Christensen Date: Thu, 14 Nov 2024 11:41:23 -0500 Subject: [PATCH] Log in to flakehub on existing installs (#129) * Log in to flakehub if the machine is already installed * Put the nix store paths first (in the PATH) * set the path earlier * Warn on login failures --- dist/index.js | 23 +++++++++++++++-------- src/index.ts | 32 ++++++++++++++++++++++---------- 2 files changed, 37 insertions(+), 18 deletions(-) diff --git a/dist/index.js b/dist/index.js index 0613d9d..b4fd743 100644 --- a/dist/index.js +++ b/dist/index.js @@ -102680,6 +102680,9 @@ ${stderrBuffer}` await this.executeUninstall(); } else { await this.setGithubPath(); + if (this.determinate) { + await this.flakehubLogin(); + } core.info("Nix was already installed, using existing install"); return; } @@ -102703,10 +102706,10 @@ ${stderrBuffer}` if (this.forceDockerShim) { await this.spawnDockerShim(); } + await this.setGithubPath(); if (this.determinate) { await this.flakehubLogin(); } - await this.setGithubPath(); } async spawnDockerShim() { core.startGroup( @@ -102893,13 +102896,16 @@ ${stderrBuffer}` } async setGithubPath() { try { - const nixVarNixProfilePath = "/nix/var/nix/profiles/default/bin"; - const homeNixProfilePath = `${process.env["HOME"]}/.nix-profile/bin`; - core.addPath(nixVarNixProfilePath); - core.addPath(homeNixProfilePath); - core.info( - `Added \`${nixVarNixProfilePath}\` and \`${homeNixProfilePath}\` to \`$GITHUB_PATH\`` - ); + const paths = []; + if (this.determinate) { + paths.push("/usr/local/bin"); + } + paths.push("/nix/var/nix/profiles/default/bin"); + paths.push(`${process.env["HOME"]}/.nix-profile/bin`); + for (const p of paths) { + core.addPath(p); + core.debug(`Added \`${p}\` to \`$GITHUB_PATH\``); + } } catch { core.info( "Skipping setting $GITHUB_PATH in action, the `nix-installer` crate seems to have done this already. From `nix-installer` version 0.11.0 and up, this step is done in the action. Prior to 0.11.0, this was only done in the `nix-installer` binary." @@ -102913,6 +102919,7 @@ ${stderrBuffer}` try { await exec.exec(`determinate-nixd`, ["login", "github-action"]); } catch (e) { + core.warning(`FlakeHub Login failure: ${stringifyError(e)}`); this.recordEvent("flakehub-login:failure", { exception: stringifyError(e) }); diff --git a/src/index.ts b/src/index.ts index 78d21ce..a51fda3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -614,8 +614,13 @@ class NixInstallerAction extends DetSysAction { ); await this.executeUninstall(); } else { - // We're already installed, and not reinstalling, just set GITHUB_PATH and finish early + // We're already installed, and not reinstalling, just log in to FlakeHub, set GITHUB_PATH and finish early await this.setGithubPath(); + + if (this.determinate) { + await this.flakehubLogin(); + } + actionsCore.info("Nix was already installed, using existing install"); return; } @@ -643,11 +648,11 @@ class NixInstallerAction extends DetSysAction { await this.spawnDockerShim(); } + await this.setGithubPath(); + if (this.determinate) { await this.flakehubLogin(); } - - await this.setGithubPath(); } async spawnDockerShim(): Promise { @@ -859,13 +864,19 @@ class NixInstallerAction extends DetSysAction { async setGithubPath(): Promise { // Interim versions of the `nix-installer` crate may have already manipulated `$GITHUB_PATH`, as root even! Accessing that will be an error. try { - const nixVarNixProfilePath = "/nix/var/nix/profiles/default/bin"; - const homeNixProfilePath = `${process.env["HOME"]}/.nix-profile/bin`; - actionsCore.addPath(nixVarNixProfilePath); - actionsCore.addPath(homeNixProfilePath); - actionsCore.info( - `Added \`${nixVarNixProfilePath}\` and \`${homeNixProfilePath}\` to \`$GITHUB_PATH\``, - ); + const paths = []; + + if (this.determinate) { + paths.push("/usr/local/bin"); + } + + paths.push("/nix/var/nix/profiles/default/bin"); + paths.push(`${process.env["HOME"]}/.nix-profile/bin`); + + for (const p of paths) { + actionsCore.addPath(p); + actionsCore.debug(`Added \`${p}\` to \`$GITHUB_PATH\``); + } } catch { actionsCore.info( "Skipping setting $GITHUB_PATH in action, the `nix-installer` crate seems to have done this already. From `nix-installer` version 0.11.0 and up, this step is done in the action. Prior to 0.11.0, this was only done in the `nix-installer` binary.", @@ -883,6 +894,7 @@ class NixInstallerAction extends DetSysAction { try { await actionsExec.exec(`determinate-nixd`, ["login", "github-action"]); } catch (e: unknown) { + actionsCore.warning(`FlakeHub Login failure: ${stringifyError(e)}`); this.recordEvent("flakehub-login:failure", { exception: stringifyError(e), });