Skip to content

Commit ee16b3c

Browse files
committed
tools: add an option to generate lighter archives
1 parent 98081b6 commit ee16b3c

File tree

2 files changed

+72
-9
lines changed

2 files changed

+72
-9
lines changed

.github/workflows/test-shared.yml

Lines changed: 46 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,35 @@ permissions:
5757
contents: read
5858

5959
jobs:
60+
build-tarball:
61+
if: github.event.pull_request.draft == false
62+
runs-on: ubuntu-24.04-arm
63+
steps:
64+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
65+
if: ${{ github.event_name != 'workflow_dispatch' }}
66+
with:
67+
persist-credentials: false
68+
69+
- name: Make tarball
70+
if: ${{ github.event_name != 'workflow_dispatch' }}
71+
run: |
72+
export DATESTRING=$(date "+%Y-%m-%d")
73+
export COMMIT=$(git rev-parse --short=10 "$GITHUB_SHA")
74+
./configure && make tar -j4 SKIP_XZ=1 SKIP_SHARED_DEPS=1
75+
env:
76+
DISTTYPE: nightly
77+
78+
79+
- name: Upload tarball artifact
80+
if: ${{ github.event_name != 'workflow_dispatch' }}
81+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
82+
with:
83+
name: tarballs
84+
path: '*.tar.gz'
85+
compression-level: 0
86+
6087
build:
88+
needs: build-tarball
6189
strategy:
6290
fail-fast: false
6391
matrix:
@@ -73,10 +101,24 @@ jobs:
73101
name: '${{ matrix.system }}: with shared libraries'
74102
runs-on: ${{ matrix.runner }}
75103
steps:
76-
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
104+
- uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
77105
if: ${{ github.event_name != 'workflow_dispatch' }}
78106
with:
79-
persist-credentials: false
107+
name: tarballs
108+
path: tarballs
109+
110+
- name: Extract tarball
111+
if: ${{ github.event_name != 'workflow_dispatch' }}
112+
run: |
113+
tar xzf tarballs/*.tar.gz -C "$RUNNER_TEMP"
114+
echo "TAR_DIR=$RUNNER_TEMP/$(basename tarballs/*.tar.gz .tar.gz)" >> "$GITHUB_ENV"
115+
116+
- name: Patch npm gyp (to be able to build addons for the tests)
117+
if: ${{ github.event_name != 'workflow_dispatch' }}
118+
run: |
119+
cd "$TAR_DIR"
120+
curl -L https://github.com/npm/cli/pull/8531.diff \
121+
| git apply --directory=deps/npm --exclude=deps/npm/package-lock.json
80122
81123
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
82124
if: ${{ github.event_name == 'workflow_dispatch' }}
@@ -113,26 +155,21 @@ jobs:
113155
core.exportVariable('ACTIONS_CACHE_SERVICE_V2', 'on');
114156
core.exportVariable('ACTIONS_RESULTS_URL', process.env.ACTIONS_RESULTS_URL || '');
115157
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
116-
117-
- name: Patch npm gyp (to be able to build addons for the tests)
118-
if: ${{ github.event_name != 'workflow_dispatch' }}
119-
run: curl -L https://github.com/npm/cli/pull/8531.diff | git apply --directory=deps/npm --exclude=deps/npm/package-lock.json
120158
121159
- name: Load shell.nix
122-
if: ${{ github.event_name == 'workflow_dispatch' }}
123160
run: curl -fsLSO https://github.com/${GITHUB_REPOSITORY}/raw/${GITHUB_SHA}/shell.nix
124161

125162
- name: Build Node.js ${{ github.event_name == 'workflow_dispatch' && 'on the base commit' || 'and run tests' }}
126163
run: |
127164
nix-shell \
128-
--pure --keep FLAKY_TESTS \
165+
--pure --keep TAR_DIR --keep FLAKY_TESTS \
129166
--keep SCCACHE_GHA_VERSION --keep ACTIONS_CACHE_SERVICE_V2 --keep ACTIONS_RESULTS_URL --keep ACTIONS_RUNTIME_TOKEN \
130167
--arg loadJSBuiltinsDynamically false \
131168
--arg ccache '(import <nixpkgs> {}).sccache' \
132169
--arg devTools '[]' \
133170
--arg benchmarkTools '[]' \
134171
--run '
135-
make ${{ github.event_name == 'workflow_dispatch' && 'build' || 'run' }}-ci -j4 V=1 TEST_CI_ARGS="-p actions --measure-flakiness 9 --skip-tests=$CI_SKIP_TESTS"
172+
make ${{ github.event_name == 'workflow_dispatch' && 'build' || '-C "$TAR_DIR" run' }}-ci -j4 V=1 TEST_CI_ARGS="-p actions --measure-flakiness 9 --skip-tests=$CI_SKIP_TESTS"
136173
'
137174
138175
- name: Re-build Node.js on the merge commit

Makefile

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1031,7 +1031,13 @@ ifeq ($(DESTCPU),ia32)
10311031
override DESTCPU=x86
10321032
endif
10331033

1034+
# Supply SKIP_SHARED_DEPS=1 to explicitly skip all dependencies that can be included as shared deps
1035+
SKIP_SHARED_DEPS ?= 0
1036+
ifeq ($(SKIP_SHARED_DEPS), 1)
1037+
TARNAME=node-$(FULLVERSION)-lite
1038+
else
10341039
TARNAME=node-$(FULLVERSION)
1040+
endif
10351041
TARBALL=$(TARNAME).tar
10361042
# Custom user-specified variation, use it directly
10371043
ifdef VARIATION
@@ -1213,12 +1219,31 @@ $(TARBALL): release-only doc-only
12131219
$(RM) -r $(TARNAME)/.editorconfig
12141220
$(RM) -r $(TARNAME)/.git*
12151221
$(RM) -r $(TARNAME)/.mailmap
1222+
ifeq ($(SKIP_SHARED_DEPS), 1)
1223+
$(RM) -r $(TARNAME)/deps/ada
1224+
$(RM) -r $(TARNAME)/deps/brotli
1225+
$(RM) -r $(TARNAME)/deps/cares
1226+
$(RM) -r $(TARNAME)/deps/icu-small
1227+
$(RM) -r $(TARNAME)/deps/icu-tmp
1228+
$(RM) -r $(TARNAME)/deps/llhttp
1229+
$(RM) -r $(TARNAME)/deps/nghttp2
1230+
$(RM) -r $(TARNAME)/deps/ngtcp2
1231+
find $(TARNAME)/deps/openssl -maxdepth 1 -type f ! -name 'nodejs-openssl.cnf' -exec $(RM) {} +
1232+
find $(TARNAME)/deps/openssl -mindepth 1 -maxdepth 1 -type d -exec $(RM) -r {} +
1233+
$(RM) -r $(TARNAME)/deps/simdjson
1234+
$(RM) -r $(TARNAME)/deps/sqlite
1235+
$(RM) -r $(TARNAME)/deps/uv
1236+
$(RM) -r $(TARNAME)/deps/uvwasi
1237+
$(RM) -r $(TARNAME)/deps/zlib
1238+
$(RM) -r $(TARNAME)/deps/zstd
1239+
else
12161240
$(RM) -r $(TARNAME)/deps/openssl/openssl/demos
12171241
$(RM) -r $(TARNAME)/deps/openssl/openssl/doc
12181242
$(RM) -r $(TARNAME)/deps/openssl/openssl/test
12191243
$(RM) -r $(TARNAME)/deps/uv/docs
12201244
$(RM) -r $(TARNAME)/deps/uv/samples
12211245
$(RM) -r $(TARNAME)/deps/uv/test
1246+
endif
12221247
$(RM) -r $(TARNAME)/deps/v8/samples
12231248
$(RM) -r $(TARNAME)/deps/v8/tools/profviz
12241249
$(RM) -r $(TARNAME)/deps/v8/tools/run-tests.py
@@ -1227,6 +1252,7 @@ $(TARBALL): release-only doc-only
12271252
$(RM) -r $(TARNAME)/tools/cpplint.py
12281253
$(RM) -r $(TARNAME)/tools/eslint
12291254
$(RM) -r $(TARNAME)/tools/eslint-rules
1255+
$(RM) -r $(TARNAME)/test/parallel/test-eslint-*
12301256
$(RM) -r $(TARNAME)/tools/license-builder.sh
12311257
$(RM) -r $(TARNAME)/tools/eslint/node_modules
12321258
$(RM) -r $(TARNAME)/tools/osx-*

0 commit comments

Comments
 (0)