22#
33# https://github.com/nextcloud/.github
44# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
5+ #
6+ # SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors
7+ # SPDX-License-Identifier: MIT
58
69name : Node
710
8- on :
9- pull_request :
10- paths :
11- - ' .github/workflows/**'
12- - ' src/**'
13- - ' appinfo/info.xml'
14- - ' package.json'
15- - ' package-lock.json'
16- - ' tsconfig.json'
17- - ' **.js'
18- - ' **.ts'
19- - ' **.vue'
20- push :
21- branches :
22- - main
23- - master
24- - stable*
11+ on : pull_request
2512
2613permissions :
2714 contents : read
@@ -31,30 +18,64 @@ concurrency:
3118 cancel-in-progress : true
3219
3320jobs :
21+ changes :
22+ runs-on : ubuntu-latest-low
23+ permissions :
24+ contents : read
25+ pull-requests : read
26+
27+ outputs :
28+ src : ${{ steps.changes.outputs.src}}
29+
30+ steps :
31+ - uses : dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
32+ id : changes
33+ continue-on-error : true
34+ with :
35+ filters : |
36+ src:
37+ - '.github/workflows/**'
38+ - 'src/**'
39+ - 'appinfo/info.xml'
40+ - 'package.json'
41+ - 'package-lock.json'
42+ - 'tsconfig.json'
43+ - '**.js'
44+ - '**.ts'
45+ - '**.vue'
46+
3447 build :
3548 runs-on : ubuntu-latest
3649
37- name : node
50+ needs : changes
51+ if : needs.changes.outputs.src != 'false'
52+
53+ name : NPM build
3854 steps :
3955 - name : Checkout
40- uses : actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
56+ uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
57+ with :
58+ persist-credentials : false
4159
4260 - name : Read package.json node and npm engines version
43- uses : skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
61+ uses : skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
4462 id : versions
4563 with :
4664 fallbackNode : ' ^20'
47- fallbackNpm : ' ^9 '
65+ fallbackNpm : ' ^10 '
4866
4967 - name : Set up node ${{ steps.versions.outputs.nodeVersion }}
50- uses : actions/setup-node@e33196f7422957bea03ed53f6fbb155025ffc7b8 # v3
68+ uses : actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
5169 with :
5270 node-version : ${{ steps.versions.outputs.nodeVersion }}
5371
5472 - name : Set up npm ${{ steps.versions.outputs.npmVersion }}
55- run : npm i -g npm@" ${{ steps.versions.outputs.npmVersion }}"
73+ run : npm i -g ' npm@${{ steps.versions.outputs.npmVersion }}'
5674
5775 - name : Install dependencies & build
76+ env :
77+ CYPRESS_INSTALL_BINARY : 0
78+ PUPPETEER_SKIP_DOWNLOAD : true
5879 run : |
5980 npm ci
6081 npm run build --if-present
6990 git status
7091 git --no-pager diff
7192 exit 1 # make it red to grab attention
93+
94+ summary :
95+ permissions :
96+ contents : none
97+ runs-on : ubuntu-latest-low
98+ needs : [changes, build]
99+
100+ if : always()
101+
102+ # This is the summary, we just avoid to rename it so that branch protection rules still match
103+ name : node
104+
105+ steps :
106+ - name : Summary status
107+ run : if ${{ needs.changes.outputs.src != 'false' && needs.build.result != 'success' }}; then exit 1; fi
0 commit comments