Skip to content

Commit 3e6ec77

Browse files
authored
chore: create GitHub action to update the canary branch (#171)
1 parent 2351073 commit 3e6ec77

File tree

3 files changed

+88
-0
lines changed

3 files changed

+88
-0
lines changed

.github/workflows/update-canary.yml

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: Update canary branch
2+
3+
on:
4+
schedule:
5+
- cron: '0 6 * * *'
6+
workflow_dispatch:
7+
8+
jobs:
9+
updateCanary:
10+
name: Update the canary branch
11+
if: github.repository == 'nodejs/node-v8' || github.event_name == 'workflow_dispatch'
12+
runs-on: ubuntu-latest
13+
steps:
14+
- name: Clone node-v8
15+
uses: actions/checkout@v2
16+
with:
17+
path: node-v8
18+
token: ${{ secrets.CANARY_UPDATE }}
19+
20+
- name: Install Node.js
21+
uses: actions/setup-node@v2
22+
with:
23+
node-version: 14.x
24+
25+
- name: Install dependencies
26+
run: npm install -g node-core-utils@latest
27+
28+
- name: Cache V8 clone
29+
uses: actions/cache@v2
30+
with:
31+
path: v8
32+
key: v8-clone
33+
34+
- name: Execute the update script
35+
run: ./node-v8/tools/update-canary.sh
36+
37+
- name: Notify Slack on failure
38+
if: ${{ failure() }}
39+
run: |
40+
ACTIONS_URL="${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}?check_suite_focus=true"
41+
SLACK_PAYLOAD="{\"username\": \"canary_bot\", \"text\": \"*Canary update failed!*\n\nRun: ${ACTIONS_URL}\", \"icon_emoji\": \":bell:\"}"
42+
curl -X POST --data-urlencode "payload=${SLACK_PAYLOAD}" ${{ secrets.SLACK_WEBHOOK }}

README.md

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Node.js V8 canary
2+
3+
This is an automatically updated **experimental** version of [Node.js][] with
4+
the `lkgr` (last known good revision) of V8.
5+
6+
The daily builds of this repo can be found at [`v8-canary`][].
7+
8+
**Do not use this in production!**
9+
10+
This repository is not owned by `@nodejs/v8`, but they might be able to help
11+
with issues.
12+
13+
This project is bound by a [Code of Conduct][].
14+
15+
[Code of Conduct]: https://github.com/nodejs/admin/blob/HEAD/CODE_OF_CONDUCT.md
16+
[Node.js]: https://github.com/nodejs/node
17+
[`v8-canary`]: https://nodejs.org/download/v8-canary/

tools/update-canary.sh

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#!/usr/bin/env bash
2+
3+
set -ex
4+
5+
cd node-v8
6+
7+
git remote add upstream https://github.com/nodejs/node.git
8+
git fetch upstream master
9+
git fetch upstream canary-base
10+
11+
git config user.name "Node.js GitHub Bot"
12+
git config user.email [email protected]
13+
14+
git reset --hard upstream/master
15+
16+
# Update V8 to the lkgr branch
17+
git-node v8 major --branch=lkgr --base-dir="$GITHUB_WORKSPACE"
18+
19+
# Cherry-pick the floating V8 patches Node.js maintains on master.
20+
# Canary-base is the last good version of canary, and is manually updated with any V8 patches or backports.
21+
git cherry-pick `git log upstream/canary-base -1 --format=format:%H --grep "src: update NODE_MODULE_VERSION"`...upstream/canary-base
22+
23+
# Verify that Node.js can be compiled and executed
24+
python3 ./configure
25+
make -j $(getconf _NPROCESSORS_ONLN) V=
26+
out/Release/node test/parallel/test-process-versions.js
27+
28+
# Force-push to the canary branch.
29+
git push --force origin HEAD:canary

0 commit comments

Comments
 (0)