mirror of
https://github.com/denoland/rusty_v8.git
synced 2024-12-25 08:39:15 -05:00
chore: set up v8 autoroll script (#663)
Co-authored-by: Ben Noordhuis <info@bnoordhuis.nl>
This commit is contained in:
parent
efa6c71b10
commit
fce0b02548
2 changed files with 111 additions and 0 deletions
21
.github/workflows/update-v8.yml
vendored
Normal file
21
.github/workflows/update-v8.yml
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
name: Update V8
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 10 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
update:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Clone repository
|
||||
uses: actions/checkout@v1
|
||||
with:
|
||||
fetch-depth: 10
|
||||
submodules: recursive
|
||||
- uses: denoland/setup-deno@main
|
||||
with:
|
||||
deno-version: v1.x
|
||||
- run: deno run -A ./tools/auto_update_v8.ts
|
||||
|
90
tools/auto_update_v8.ts
Normal file
90
tools/auto_update_v8.ts
Normal file
|
@ -0,0 +1,90 @@
|
|||
const V8_TRACKING_BRANCH = "9.1-lkgr";
|
||||
const AUTOROLL_BRANCH = "autoroll";
|
||||
|
||||
function extractVersion() {
|
||||
const MAJOR_PREFIX = "#define V8_MAJOR_VERSION ";
|
||||
const MINOR_PREFIX = "#define V8_MINOR_VERSION ";
|
||||
const BUILD_PREFIX = "#define V8_BUILD_NUMBER ";
|
||||
const PATCH_PREFIX = "#define V8_PATCH_LEVEL ";
|
||||
|
||||
const versionDotH = Deno.readTextFileSync("./v8/include/v8-version.h");
|
||||
const lines = versionDotH.split("\n");
|
||||
const major = parseInt(lines.find((s) => s.startsWith(MAJOR_PREFIX))!
|
||||
.substring(MAJOR_PREFIX.length));
|
||||
const minor = parseInt(lines.find((s) => s.startsWith(MINOR_PREFIX))!
|
||||
.substring(MINOR_PREFIX.length));
|
||||
const build = parseInt(lines.find((s) => s.startsWith(BUILD_PREFIX))!
|
||||
.substring(BUILD_PREFIX.length));
|
||||
const patch = parseInt(lines.find((s) => s.startsWith(PATCH_PREFIX))!
|
||||
.substring(PATCH_PREFIX.length));
|
||||
|
||||
return `${major}.${minor}.${build}.${patch}`;
|
||||
}
|
||||
|
||||
await run(["git", "checkout", "origin/main"]);
|
||||
|
||||
const currentVersion = extractVersion();
|
||||
console.log(`Starting auto update. Currently on ${currentVersion}`);
|
||||
|
||||
async function run(cmd: string[], cwd?: string) {
|
||||
const proc = Deno.run({ cmd, cwd });
|
||||
const status = await proc.status();
|
||||
if (!status.success) {
|
||||
console.error(`Failed to run ${cmd.join(" ")}`);
|
||||
Deno.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
// Update v8 submodule
|
||||
await run(["git", "checkout", `origin/${V8_TRACKING_BRANCH}`], "./v8");
|
||||
|
||||
const newVersion = extractVersion();
|
||||
if (currentVersion == newVersion) {
|
||||
console.log(`No new version available. Staying on ${newVersion}`);
|
||||
Deno.exit(0);
|
||||
}
|
||||
|
||||
console.log(`Updated to version ${newVersion}`);
|
||||
|
||||
// Update version in readme
|
||||
let readme = Deno.readTextFileSync("README.md");
|
||||
readme = readme.replace(
|
||||
`V8 Version: ${currentVersion}`,
|
||||
`V8 Version: ${newVersion}`,
|
||||
);
|
||||
Deno.writeTextFileSync("README.md", readme);
|
||||
|
||||
// Stage the changes
|
||||
await run(["git", "add", "v8", "README.md"]);
|
||||
|
||||
// Commit the changes
|
||||
await run(["git", "commit", "-m", `Rolling to V8 ${newVersion}`]);
|
||||
|
||||
// Push to the `denoland/rusty_v8#autoroll`
|
||||
await run(["git", "push", "origin", `+HEAD:${AUTOROLL_BRANCH}`]);
|
||||
|
||||
const proc = Deno.run({
|
||||
cmd: ["gh", "pr", "view", AUTOROLL_BRANCH],
|
||||
});
|
||||
const status = await proc.status();
|
||||
if (status.code == 1) {
|
||||
console.log("No PR open. Creating a new PR.");
|
||||
await run([
|
||||
"gh",
|
||||
"pr",
|
||||
"create",
|
||||
"--fill",
|
||||
"--head",
|
||||
AUTOROLL_BRANCH,
|
||||
]);
|
||||
} else {
|
||||
console.log("Already open PR. Editing existing PR.");
|
||||
await run([
|
||||
"gh",
|
||||
"pr",
|
||||
"edit",
|
||||
AUTOROLL_BRANCH,
|
||||
"--title",
|
||||
`Rolling to V8 ${newVersion}`,
|
||||
]);
|
||||
}
|
Loading…
Reference in a new issue