Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhillip Johnsen <johphi@gmail.com>2021-03-07 02:31:55 +0300
committerMichaël Zasso <targos@protonmail.com>2021-04-25 08:49:09 +0300
commit311989f30f7b6625277c607f8e368449545cf76d (patch)
treeabc9b87398c58ac666e654a88066e342e9ebf920 /.github
parentd9b56fe2950af7463438a47b90e5d65ce8aafde5 (diff)
build: label PRs with GitHub Action instead of nodejs-github-bot
Main goal of using a GitHub Action for labelling PRs has been to move the mapping between files changed -> label into a configuration file local to the nodejs/node repository. Previously any changes to that mapping meant having to grasp the nodejs/github-bot project, open a PR with the neccessary changes, get approval from its maintainers before those changes finally got pushed to production. The logic involved in using the file paths / label configuration and resolving the labels to be applied, has been moved into a custom GitHub Action project: nodejs/node-pr-labeler. Aside from removing the external dependency the nodejs-github-bot is in practise, it also reduces the bar for contributors since the resulting project is a lot smaller and less complex than nodejs/github-bot. PR-URL: https://github.com/nodejs/node/pull/38301 Fixes: https://github.com/nodejs/github-bot/issues/294 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Richard Lau <rlau@redhat.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
Diffstat (limited to '.github')
-rw-r--r--.github/label-pr-config.yml195
-rw-r--r--.github/workflows/label-pr.yml14
2 files changed, 209 insertions, 0 deletions
diff --git a/.github/label-pr-config.yml b/.github/label-pr-config.yml
new file mode 100644
index 00000000000..f16b9ba8e51
--- /dev/null
+++ b/.github/label-pr-config.yml
@@ -0,0 +1,195 @@
+## Order of entries in this map *does* matter for the resolved labels
+## earlier entries override later entries
+subSystemLabels:
+ # src subsystems
+ /^src\/async-wrap/: c++, async_wrap
+ /^src\/(?:base64|node_buffer|string_)/: c++, buffer
+ /^src\/cares/: c++, cares
+ /^src\/(?:process_wrap|spawn_)/: c++, child_process
+ /^src\/(?:node_)?crypto/: c++, crypto
+ /^src\/(?:debug-|node_debug)/: c++, debugger
+ /^src\/udp_/: c++, dgram
+ /^src\/(?:fs_|node_file|node_stat_watcher)/: c++, fs
+ /^src\/node_http_parser/: c++, http_parser
+ /^src\/node_i18n/: c++, intl
+ /^src\/uv\./: c++, libuv
+ /^src\/(?:connect(?:ion)?|pipe|tcp)_/: c++, net
+ /^src\/node_os/: c++, os
+ /^src\/(?:node_main|signal_)/: c++, process
+ /^src\/timer_/: c++, timers
+ /^src\/(?:CNNICHashWhitelist|node_root_certs|tls_)/: c++, tls
+ /^src\/tty_/: c++, tty
+ /^src\/node_url/: c++, url-whatwg
+ /^src\/node_util/: c++, util
+ /^src\/(?:node_v8|v8abbr)/: c++, V8 Engine
+ /^src\/node_contextify/: c++, vm
+ /^src\/.*win32.*/: c++, windows
+ /^src\/node_zlib/: c++, zlib
+ /^src\/tracing/: c++, tracing
+ /^src\/node_api/: c++, n-api
+ /^src\/node_http2/: c++, http2, dont-land-on-v6.x
+ /^src\/node_report/: c++, report
+ /^src\/node_wasi/: c++, wasi
+ /^src\/node_worker/: c++, worker
+ /^src\/quic\/*/: c++, quic, dont-land-on-v14.x, dont-land-on-v12.x
+ /^src\/node_bob*/: c++, quic, dont-land-on-v14.x, dont-land-on-v12.x
+
+ # don't label python files as c++
+ /^src\/.+\.py$/: lib / src, needs-ci
+
+ # properly label changes to v8 inspector integration-related files
+ /^src\/inspector_/: c++, inspector, needs-ci
+
+ # don't want to label it a c++ update when we're "only" bumping the Node.js version
+ /^src\/(?!node_version\.h)/: c++
+ # BUILDING.md should be marked as 'build' in addition to 'doc'
+ /^BUILDING\.md$/: build, doc
+ # meta is a very specific label for things that are policy and or meta-info related
+ /^([A-Z]+$|CODE_OF_CONDUCT|ROADMAP|WORKING_GROUPS|GOVERNANCE|CHANGELOG|\.mail|\.git.+)/: meta
+ # things that edit top-level .md files are always a doc change
+ /^\w+\.md$/: doc
+ # different variants of *Makefile and build files
+ /^(tools\/)?(Makefile|BSDmakefile|create_android_makefiles|\.travis\.yml)$/: build, needs-ci
+ /^tools\/(install\.py|genv8constants\.py|getnodeversion\.py|js2c\.py|utils\.py|configure\.d\/.*)$/: build, needs-ci
+ /^vcbuild\.bat$/: build, windows, needs-ci
+ /^(android-)?configure|node\.gyp|common\.gypi$/: build, needs-ci
+ # more specific tools
+ /^tools\/gyp/: tools, build, needs-ci
+ /^tools\/doc\//: tools, doc
+ /^tools\/icu\//: tools, intl, needs-ci
+ /^tools\/(?:osx-pkg\.pmdoc|pkgsrc)\//: tools, macos, install
+ /^tools\/(?:(?:mac)?osx-)/: tools, macos
+ /^tools\/test-npm/: tools, test, npm
+ /^tools\/test/: tools, test
+ /^tools\/(?:certdata|mkssldef|mk-ca-bundle)/: tools, openssl, tls
+ /^tools\/msvs\//: tools, windows, install, needs-ci
+ /^tools\/[^/]+\.bat$/: tools, windows, needs-ci
+ /^tools\/make-v8/: tools, V8 Engine, needs-ci
+ /^tools\/(code_cache|snapshot|v8_gypfiles)/: needs-ci,
+ /^tools\/build-addons.js/: needs-ci,
+ # all other tool changes should be marked as such
+ /^tools\//: tools
+ /^\.eslint|\.remark|\.editorconfig/: tools
+
+ ## Dependencies
+ # libuv needs an explicit mapping, as the ordinary /deps/ mapping below would
+ # end up as libuv changes labeled with "uv" (which is a non-existing label)
+ /^deps\/uv\//: libuv
+ /^deps\/v8\/tools\/gen-postmortem-metadata\.py/: V8 Engine, post-mortem
+ /^deps\/v8\//: V8 Engine
+ /^deps\/uvwasi\//: wasi
+ /^deps\/nghttp2\/nghttp2\.gyp/: build, http2, dont-land-on-v6.x
+ /^deps\/nghttp2\//: http2, dont-land-on-v6.x
+ /^deps\/ngtcp2\//: quic, dont-land-on-v14.x, dont-land-on-v12.x
+ /^deps\/nghttp3\//: quic, dont-land-on-v14.x, dont-land-on-v12.x
+ /^deps\/([^/]+)/: $1
+
+ ## JS subsystems
+ # Oddities first
+ /^lib\/(punycode|\w+\/freelist|sys\.js)/: ''
+ /^lib\/constants\.js$/: lib / src
+ /^lib\/_(debug_agent|debugger)\.js$/: debugger
+ /^lib(\/\w+)?\/(_)?link(ed)?list/: timers
+ /^lib\/\w+\/bootstrap_node/: lib / src
+ /^lib\/\w+\/v8_prof_/: tools
+ /^lib\/\w+\/socket_list/: net
+ /^lib\/\w+\/streams$/: stream
+ /^lib\/.*http2/: http2, dont-land-on-v6.x
+ /^lib\/worker_threads.js$/: worker
+ /^lib\/internal\/url\.js$/: url-whatwg
+ /^lib\/internal\/modules\/esm/: ES Modules
+ /^lib\/internal\/quic\/*/: quic, dont-land-on-v14.x, dont-land-on-v12.x
+
+ # All other lib/ files map directly
+ /^lib\/_(\w+)_\w+\.js?$/: $1 # e.g. _(stream)_wrap
+ /^lib(\/internal)?\/(\w+)\.js?$/: $2 # other .js files
+ /^lib\/internal\/(\w+)(?:\/|$)/: $1 # internal subfolders
+
+exlusiveLabels:
+ # more specific tests
+ /^test\/addons\//: test, addons
+ /^test\/debugger\//: test, debugger
+ /^test\/doctool\//: test, doc, tools
+ /^test\/timers\//: test, timers
+ /^test\/pseudo-tty\//: test, tty
+ /^test\/inspector\//: test, inspector
+ /^test\/cctest\/test_inspector/: test, inspector
+ /^test\/cctest\/test_url/: test, url-whatwg
+ /^test\/addons-napi\//: test, n-api
+ /^test\/async-hooks\//: test, async_hooks
+ /^test\/report\//: test, report
+ /^test\/fixtures\/es-module/: test, ES Modules
+ /^test\/es-module\//: test, ES Modules
+
+ /^test\//: test
+
+ # specific map for webcrypto.md as it should be labeled 'crypto'
+ /^doc\/api\/webcrypto.md$/: doc, crypto
+ # specific map for modules.md as it should be labeled 'module' not 'modules'
+ /^doc\/api\/modules.md$/: doc, module
+ # specific map for esm.md as it should be labeled 'ES Modules' not 'esm'
+ /^doc\/api\/esm.md$/: doc, ES Modules
+ # n-api is treated separately since it is not a JS core module but is still
+ # considered a subsystem of sorts
+ /^doc\/api\/n-api.md$/: doc, n-api
+ # quic
+ /^doc\/api\/quic.md$/: doc, quic, dont-land-on-v14.x, dont-land-on-v12.x
+ # add worker label to PRs that affect doc/api/worker_threads.md
+ /^doc\/api\/worker_threads.md$/: doc, worker
+ # automatically tag JS subsystem-specific API doc changes
+ /^doc\/api\/(\w+)\.md$/: doc, $1
+ # add deprecations label to PRs that affect doc/api/deprecations.md
+ /^doc\/api\/deprecations.md$/: doc, deprecations
+
+ /^doc\//: doc
+
+ # more specific benchmarks
+ /^benchmark\/buffers\//: benchmark, buffer
+ /^benchmark\/(?:arrays|es)\//: benchmark, V8 Engine
+ /^benchmark\/_http/: benchmark, http
+ /^benchmark\/(?:misc|fixtures)\//: benchmark
+ /^benchmark\/streams\//: benchmark, stream
+ /^benchmark\/([^/]+)\//: benchmark, $1
+
+ /^benchmark\//: benchmark
+
+allJsSubSystems:
+ - assert
+ - async_hooks
+ - buffer
+ - child_process
+ - cluster
+ - console
+ - crypto
+ - debugger
+ - dgram
+ - dns
+ - domain
+ - events
+ - esm
+ - fs
+ - http
+ - https
+ - http2
+ - module
+ - net
+ - os
+ - path
+ - process
+ - querystring
+ - quic
+ - readline
+ - repl
+ - report
+ - stream
+ - string_decoder
+ - timers
+ - tls
+ - tty
+ - url
+ - util
+ - v8
+ - vm
+ - wasi
+ - worker
+ - zlib
diff --git a/.github/workflows/label-pr.yml b/.github/workflows/label-pr.yml
new file mode 100644
index 00000000000..7b4f84019e5
--- /dev/null
+++ b/.github/workflows/label-pr.yml
@@ -0,0 +1,14 @@
+name: Label PRs
+
+on:
+ pull_request_target:
+ types: [opened]
+
+jobs:
+ label:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: node/node-pr-labeler@v1
+ with:
+ configuration-path: .github/label-pr-config.yml