Compare commits

...

26 Commits

Author SHA1 Message Date
detsys-pr-bot da36cb69b1 Update detsys-ts for: Merge pull request #63 from DeterminateSystems/retry-streams (65dd73c562ac60a068340f8e0c040bdcf2c59afe) (#120)
Co-authored-by: grahamc <76716+grahamc@users.noreply.github.com>
2024-09-04 14:14:02 -04:00
detsys-pr-bot 1406b8b52c Update detsys-ts for: Merge pull request #62 from DeterminateSystems/dont-pull-microstackshots (817e4d4123b6fb4eae5aa557658f25f8539e7240) (#118)
Co-authored-by: grahamc <76716+grahamc@users.noreply.github.com>
2024-08-26 11:49:32 -04:00
detsys-pr-bot 197bf2b2a5 Update detsys-ts for: Merge pull request #61 from DeterminateSystems/use-coalesce-for-array (e8f6e8f54d85aa0fd3d0b694dd3279a21497a33b) (#117)
Co-authored-by: grahamc <76716+grahamc@users.noreply.github.com>
2024-08-26 14:12:21 +00:00
detsys-pr-bot 452d9c7008 Update detsys-ts for: Merge pull request #58 from DeterminateSystems/collect-crash-logs (cf1897a891edc164a8240f469cd56d14364e6be1) (#116)
Co-authored-by: grahamc <grahamc@users.noreply.github.com>
2024-08-26 13:40:25 +00:00
Graham Christensen 033f039e5c fixup extra arguments (#113) 2024-08-09 14:25:49 -04:00
detsys-pr-bot 468e81bb99 Update detsys-ts for: Merge pull request #57 from DeterminateSystems/fix-typo (17bd89132b0366c45ca87ab5d0361b890fa73f4f) (#112)
Co-authored-by: lucperkins <lucperkins@users.noreply.github.com>
2024-08-09 14:06:28 -04:00
Luc Perkins b164ca3241 Merge pull request #111 from detsys-pr-bot/detsys-ts-update-d353465ae6a55761963005617a7780f2bf7e4ec2
Update `detsys-ts`: Log in to flakehub for 'fh' too (#110)
2024-08-01 18:10:21 +02:00
lucperkins 055e848f13 Update detsys-ts for: Log in to flakehub for 'fh' too (#110) (d353465ae6a55761963005617a7780f2bf7e4ec2) 2024-08-01 14:53:15 +00:00
Graham Christensen d41fccdd9e Log in to flakehub for 'fh' too (#110) 2024-07-26 20:53:16 +00:00
Graham Christensen ab6bcb2d5a Share /lib64 into the container (#109)
* Share /lib64 into the container

* Don't attempt to mount host directories that don't exist
2024-07-22 11:40:01 -04:00
Graham Christensen 0d82cb015a README: correct the source-url parameter docs (#108)
* README: correct the source-url parameter docs

* Fixup formatting
2024-07-10 17:44:31 +00:00
Luc Perkins 2a2ecc1e15 Merge pull request #104 from detsys-pr-bot/detsys-ts-update-bc45b6c0a6318ae30192c4bf23a73dc879bdb632
Update `detsys-ts`:
2024-06-05 15:50:58 -07:00
Luc Perkins 9e19e84fa9 Regenerate dist 2024-06-05 15:45:08 -07:00
detsys-pr-bot dc8972520c Update detsys-ts for: Merge pull request #103 from detsys-pr-bot/detsys-ts-update-515d00bc192ae4460e2122572ebc24020c58ea95 (856a75af22949b76e23f6e54a1b4d27d8816cea4) (#105)
Co-authored-by: lucperkins <lucperkins@users.noreply.github.com>
2024-06-05 22:06:04 +00:00
Luc Perkins 7ad5c49547 Regenerate dist 2024-06-05 14:57:05 -07:00
Luc Perkins 17a448a97b Merge pull request #103 from detsys-pr-bot/detsys-ts-update-515d00bc192ae4460e2122572ebc24020c58ea95
Update detsys-ts: Merge pull request #51 from DeterminateSystems/add-missing-actions-to-update-matrix

Add missing Actions to update matrix
2024-06-05 14:55:50 -07:00
lucperkins 45cb2f89ca Update detsys-ts for: ` (bc45b6c0a6318ae30192c4bf23a73dc879bdb632`) 2024-06-05 21:32:12 +00:00
lucperkins 47dc48605c Update detsys-ts for: Merge pull request #51 from DeterminateSystems/add-missing-actions-to-update-matrix
Add missing Actions to update matrix (515d00bc192ae4460e2122572ebc24020c58ea95)
2024-06-05 21:06:36 +00:00
Luc Perkins 4b8e190ea5 Update detsys-ts (#102) 2024-06-05 16:18:06 -04:00
Cole Helbling 8c320971f9 Merge pull request #100 from DeterminateSystems/serialize
bump
2024-06-03 14:34:06 -07:00
Graham Christensen 7b943f9a7e update 2024-06-03 17:18:28 -04:00
Graham Christensen 40e4bc1e80 bump 2024-06-03 17:11:35 -04:00
Luc Perkins 9d5faf48ab Merge pull request #99 from DeterminateSystems/science/debug-fly
science: probes to debug fly on GHA
2024-06-03 11:54:06 -07:00
Luc Perkins f92f10828b Use coalescing instead of or 2024-06-03 11:47:38 -07:00
Graham Christensen 1025a55627 track timings 2024-06-03 14:37:04 -04:00
Graham Christensen 5adb94fc48 science: probes to debug fly on GHA 2024-06-03 14:19:40 -04:00
6 changed files with 6301 additions and 771 deletions
-12
View File
@@ -128,12 +128,6 @@ jobs:
cat -n /etc/nix/nix.conf
grep -E "^trusted-users = .*$USER" /etc/nix/nix.conf
grep -E "^use-sqlite-wal = true" /etc/nix/nix.conf
- name: Breakpoint if tests failed
if: failure()
uses: namespacelabs/breakpoint-action@v0
with:
duration: 5m
authorized-users: grahamc
install-nix-macos:
name: Run test suite for macOS systems
@@ -217,12 +211,6 @@ jobs:
cat /etc/nix/nix.conf
grep -E "^trusted-users = .*$USER" /etc/nix/nix.conf
grep -E "^use-sqlite-wal = true" /etc/nix/nix.conf
- name: Breakpoint if tests failed
if: failure()
uses: namespacelabs/breakpoint-action@v0
with:
duration: 5m
authorized-users: grahamc
install-with-non-default-source-inputs:
name: Install Nix using non-default source-${{ matrix.inputs.key }}
+1 -1
View File
@@ -110,7 +110,7 @@ Differing from the upstream [Nix](https://github.com/NixOS/nix) installer script
| `source-pr` | The pull request of `nix-installer` to use (conflicts with `source-tag`, `source-revision`, and `source-branch`) | integer | |
| `source-revision` | The revision of `nix-installer` to use (conflicts with `source-tag`, `source-branch`, and `source-pr`) | string | |
| `source-tag` | The tag of `nix-installer` to use (conflicts with `source-revision`, `source-branch`, `source-pr`) | string | |
| `source-url` | A URL pointing to a `nix-installer.sh` script | URL | `https://install.determinate.systems/nix` |
| `source-url` | A URL pointing to the `nix-installer` binary | URL | n/a (calculated) |
| `nix-package-url` | The Nix package URL | URL | |
| `planner` | The installation [planner] to use | enum (`linux` or `macos`) | |
| `reinstall` | Force a reinstall if an existing installation is detected (consider backing up `/nix/store`) | Boolean | `false` |
Generated Vendored
+5763 -561
View File
File diff suppressed because it is too large Load Diff
+5 -4
View File
@@ -29,21 +29,22 @@
"@actions/exec": "^1.1.1",
"@actions/github": "^5.1.1",
"detsys-ts": "github:DeterminateSystems/detsys-ts",
"got": "^14.3.0",
"string-argv": "^0.3.2"
},
"devDependencies": {
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
"@types/node": "^20.12.13",
"@types/node": "^20.14.0",
"@types/uuid": "^9.0.8",
"@typescript-eslint/eslint-plugin": "^7.11.0",
"@typescript-eslint/eslint-plugin": "^7.12.0",
"@vercel/ncc": "^0.38.1",
"eslint": "^8.57.0",
"eslint-import-resolver-typescript": "^3.6.1",
"eslint-plugin-github": "^4.10.2",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-prettier": "^5.1.3",
"prettier": "^3.2.5",
"tsup": "^8.0.2",
"prettier": "^3.3.0",
"tsup": "^8.1.0",
"typescript": "^5.4.5"
}
}
+430 -176
View File
File diff suppressed because it is too large Load Diff
+102 -17
View File
@@ -1,14 +1,15 @@
import * as actionsCore from "@actions/core";
import * as github from "@actions/github";
import * as actionsExec from "@actions/exec";
import { access, writeFile, readFile } from "node:fs/promises";
import { access, writeFile, readFile, mkdir } from "node:fs/promises";
import { join } from "node:path";
import fs from "node:fs";
import { userInfo } from "node:os";
import stringArgv from "string-argv";
import * as path from "path";
import { DetSysAction, inputs, platform } from "detsys-ts";
import { DetSysAction, inputs, platform, stringifyError } from "detsys-ts";
import { randomUUID } from "node:crypto";
import got from "got";
// Nix installation events
const EVENT_INSTALL_NIX_FAILURE = "install_nix_failure";
@@ -117,6 +118,7 @@ class NixInstallerAction extends DetSysAction {
}
async main(): Promise<void> {
await this.scienceDebugFly();
await this.detectAndForceDockerShim();
await this.install();
}
@@ -145,6 +147,44 @@ class NixInstallerAction extends DetSysAction {
);
}
async scienceDebugFly(): Promise<void> {
try {
const feat = this.getFeature("debug-probe-urls");
if (feat === undefined || feat.payload === undefined) {
return;
}
const { timeoutMs, url }: { timeoutMs: number; url: string } = JSON.parse(
feat.payload,
);
try {
const resp = await got.get(url, {
timeout: {
request: timeoutMs,
},
});
this.recordEvent("debug-probe-urls:response", {
debug_probe_urls_ip: resp.ip, // eslint-disable-line camelcase
debug_probe_urls_ok: resp.ok, // eslint-disable-line camelcase
debug_probe_urls_status_code: resp.statusCode, // eslint-disable-line camelcase
debug_probe_urls_body: resp.body, // eslint-disable-line camelcase
// eslint-disable-next-line camelcase
debug_probe_urls_elapsed:
(resp.timings.end ?? 0) - resp.timings.start,
});
} catch (e: unknown) {
this.recordEvent("debug-probe-urls:exception", {
debug_probe_urls_exception: stringifyError(e), // eslint-disable-line camelcase
});
}
} catch (err: unknown) {
this.recordEvent("debug-probe-urls:error", {
exception: stringifyError(err),
});
}
}
// Detect if we're in a GHA runner which is Linux, doesn't have Systemd, and does have Docker.
// This is a common case in self-hosted runners, providers like [Namespace](https://namespace.so/),
// and especially GitHub Enterprise Server.
@@ -530,7 +570,7 @@ class NixInstallerAction extends DetSysAction {
if (this.extraArgs) {
const extraArgs = stringArgv(this.extraArgs);
args.concat(extraArgs);
args.push(...extraArgs);
}
this.recordEvent(EVENT_INSTALL_NIX_START);
@@ -648,6 +688,55 @@ class NixInstallerAction extends DetSysAction {
{
actionsCore.debug("Starting the Nix daemon through Docker...");
const candidateDirectories = [
{
dir: "/bin",
readOnly: true,
},
{
dir: "/etc",
readOnly: true,
},
{
dir: "/home",
readOnly: true,
},
{
dir: "/lib",
readOnly: true,
},
{
dir: "/lib64",
readOnly: true,
},
{
dir: "/tmp",
readOnly: false,
},
{
dir: "/nix",
readOnly: false,
},
];
const mountArguments = [];
for (const { dir, readOnly } of candidateDirectories) {
try {
await access(dir);
actionsCore.debug(`Will mount ${dir} in the docker shim.`);
mountArguments.push("--mount");
mountArguments.push(
`type=bind,src=${dir},dst=${dir}${readOnly ? ",readonly" : ""}`,
);
} catch {
actionsCore.debug(
`Not mounting ${dir} in the docker shim: it doesn't appear to exist.`,
);
}
}
this.recordEvent(EVENT_START_DOCKER_SHIM);
const exitCode = await actionsExec.exec(
"docker",
@@ -659,25 +748,14 @@ class NixInstallerAction extends DetSysAction {
"--network=host",
"--userns=host",
"--pid=host",
"--mount",
"type=bind,src=/bin,dst=/bin,readonly",
"--mount",
"type=bind,src=/lib,dst=/lib,readonly",
"--mount",
"type=bind,src=/home,dst=/home,readonly",
"--mount",
"type=bind,src=/tmp,dst=/tmp",
"--mount",
"type=bind,src=/nix,dst=/nix",
"--mount",
"type=bind,src=/etc,dst=/etc,readonly",
"--restart",
"always",
"--init",
"--name",
`determinate-nix-shim-${this.getUniqueId()}-${randomUUID()}`,
"determinate-nix-shim:latest",
],
]
.concat(mountArguments)
.concat(["determinate-nix-shim:latest"]),
{
silent: true,
listeners: {
@@ -776,10 +854,17 @@ class NixInstallerAction extends DetSysAction {
netrcPath,
[
`machine api.flakehub.com login flakehub password ${jwt}`,
`machine cache.flakehub.com login flakehub password ${jwt}`,
`machine flakehub.com login flakehub password ${jwt}`,
].join("\n"),
);
const flakehubAuthDir = `${process.env["XDG_CONFIG_HOME"] || `${process.env["HOME"]}/.config`}/flakehub`;
await mkdir(flakehubAuthDir, { recursive: true });
const flakehubAuthPath = `${flakehubAuthDir}/auth`;
await writeFile(flakehubAuthPath, jwt);
actionsCore.info("Logging in to FlakeHub.");
// the join followed by a match on ^... looks silly, but extra_config