diff --git a/.github/workflows/catalog.yml b/.github/workflows/catalog.yml index 178c172..70b073a 100644 --- a/.github/workflows/catalog.yml +++ b/.github/workflows/catalog.yml @@ -66,11 +66,11 @@ jobs: --mount type=bind,src="$PWD/scripts",dst=/scripts,readonly --workdir /work \ "$image" bun /scripts/safe-extract.ts /source.tar.gz /work docker run --rm --user "$(id -u):$(id -g)" -e HOME=/tmp --cap-drop=ALL --security-opt=no-new-privileges \ - --pids-limit=128 --memory=2g --cpus=2 --tmpfs /tmp:rw,nosuid,nodev,size=128m \ + --pids-limit=128 --memory=2g --cpus=2 --tmpfs /tmp:rw,nosuid,nodev,size=512m \ --mount type=bind,src="$project",dst=/work --workdir /work \ "$image" bun install --frozen-lockfile --ignore-scripts docker run --rm --user "$(id -u):$(id -g)" -e HOME=/tmp --network=none --cap-drop=ALL --security-opt=no-new-privileges \ - --pids-limit=128 --memory=2g --cpus=2 --tmpfs /tmp:rw,nosuid,nodev,size=128m \ + --pids-limit=128 --memory=2g --cpus=2 --tmpfs /tmp:rw,nosuid,nodev,size=512m \ --mount type=bind,src="$project",dst=/work --workdir /work "$image" sh -c ' entrypoint="$(bun -e "const p=await Bun.file(\"package.json\").json();const e=p.temps?.entrypoint;if(typeof e!==\"string\"||!/^src\\/[a-zA-Z0-9_./-]+\\.tsx?$/.test(e)||e.includes(\"..\"))process.exit(1);console.log(e)")" bun build "$entrypoint" --target=bun --compile --outfile /tmp/temps-plugin-check diff --git a/registry/site-crawl.json b/registry/site-crawl.json new file mode 100644 index 0000000..48c7615 --- /dev/null +++ b/registry/site-crawl.json @@ -0,0 +1,4 @@ +{ + "repo": "gotempsh/temps-plugin-site-crawl", + "categories": ["seo", "automation"] +} diff --git a/scripts/catalog-build.test.ts b/scripts/catalog-build.test.ts index e18bd90..a5894d2 100644 --- a/scripts/catalog-build.test.ts +++ b/scripts/catalog-build.test.ts @@ -15,3 +15,14 @@ for (const path of ["../.github/workflows/catalog.yml", "./validate-build.sh"]) expect(source).toContain('--ignore-scripts'); }); } + +for (const path of ["../.github/workflows/catalog.yml", "./validate-build.sh"]) { + test(`${path}: dependency extraction has bounded space for frontend toolchains`, async () => { + const source = await Bun.file(new URL(path, import.meta.url)).text(); + const buildLimits = source.split("\n").filter(line => line.includes("--memory=2g")); + expect(buildLimits.length).toBeGreaterThan(0); + for (const line of buildLimits) { + expect(line).toContain("--tmpfs /tmp:rw,nosuid,nodev,size=512m"); + } + }); +} diff --git a/scripts/validate-build.sh b/scripts/validate-build.sh index a978936..44f15ef 100644 --- a/scripts/validate-build.sh +++ b/scripts/validate-build.sh @@ -27,10 +27,10 @@ jq -c '.[]' "$scratch/plan.json" | while IFS= read -r item; do --mount type=bind,src="$PWD/scripts",dst=/scripts,readonly \ --workdir /work "$image" bun /scripts/safe-extract.ts /source.tar.gz /work docker run --rm --user "$(id -u):$(id -g)" -e HOME=/tmp --cap-drop=ALL --security-opt=no-new-privileges \ - --pids-limit=128 --memory=2g --cpus=2 --tmpfs /tmp:rw,nosuid,nodev,size=128m \ + --pids-limit=128 --memory=2g --cpus=2 --tmpfs /tmp:rw,nosuid,nodev,size=512m \ --mount type=bind,src="$project",dst=/work --workdir /work "$image" bun install --frozen-lockfile --ignore-scripts docker run --rm --user "$(id -u):$(id -g)" -e HOME=/tmp --network=none --cap-drop=ALL --security-opt=no-new-privileges \ - --pids-limit=128 --memory=2g --cpus=2 --tmpfs /tmp:rw,nosuid,nodev,size=128m \ + --pids-limit=128 --memory=2g --cpus=2 --tmpfs /tmp:rw,nosuid,nodev,size=512m \ --mount type=bind,src="$project",dst=/work --workdir /work "$image" sh -c ' entrypoint="$(bun -e "const p=await Bun.file(\"package.json\").json();const e=p.temps?.entrypoint;if(typeof e!==\"string\"||!/^src\\/[a-zA-Z0-9_./-]+\\.tsx?$/.test(e)||e.includes(\"..\"))process.exit(1);console.log(e)")" bun build "$entrypoint" --target=bun --compile --outfile /tmp/temps-plugin-check