2022-04-15 17:37:40 +00:00
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name : Node
2024-03-08 20:55:21 +00:00
on : pull_request
2022-04-15 17:37:40 +00:00
2022-06-11 16:37:40 +00:00
permissions :
contents : read
2023-01-16 16:10:56 +00:00
concurrency :
group : node-${{ github.head_ref || github.run_id }}
cancel-in-progress : true
2022-04-15 17:37:40 +00:00
jobs :
2024-03-08 20:55:21 +00:00
changes :
runs-on : ubuntu-latest-low
outputs :
src : ${{ steps.changes.outputs.src}}
steps :
- uses : dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
id : changes
continue-on-error : true
with :
filters : |
src :
- '.github/workflows/**'
- 'src/**'
- 'appinfo/info.xml'
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'
- '**.js'
- '**.ts'
- '**.vue'
2022-04-15 17:37:40 +00:00
build :
runs-on : ubuntu-latest
2024-03-08 20:55:21 +00:00
needs : changes
if : needs.changes.outputs.src != 'false'
name : NPM build
2022-04-15 17:37:40 +00:00
steps :
- name : Checkout
2024-03-08 20:55:21 +00:00
uses : actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
2022-04-15 17:37:40 +00:00
- name : Read package.json node and npm engines version
2024-03-08 20:55:21 +00:00
uses : skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
2022-04-15 17:37:40 +00:00
id : versions
with :
2024-03-08 20:55:21 +00:00
fallbackNode : '^20'
fallbackNpm : '^10'
2022-04-15 17:37:40 +00:00
- name : Set up node ${{ steps.versions.outputs.nodeVersion }}
2024-03-08 20:55:21 +00:00
uses : actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
2022-04-15 17:37:40 +00:00
with :
node-version : ${{ steps.versions.outputs.nodeVersion }}
- name : Set up npm ${{ steps.versions.outputs.npmVersion }}
run : npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
- name : Install dependencies & build
2024-03-08 20:55:21 +00:00
env :
CYPRESS_INSTALL_BINARY : 0
PUPPETEER_SKIP_DOWNLOAD : true
2022-04-15 17:37:40 +00:00
run : |
npm ci
npm run build --if-present
2022-06-11 16:37:40 +00:00
- name : Check webpack build changes
run : |
2023-01-16 16:10:56 +00:00
bash -c "[[ ! \"`git status --porcelain `\" ]] || (echo 'Please recompile and commit the assets, see the section \"Show changes on failure\" for details' && exit 1)"
2022-06-11 16:37:40 +00:00
- name : Show changes on failure
if : failure()
run : |
git status
git --no-pager diff
2023-01-16 16:10:56 +00:00
exit 1 # make it red to grab attention
2024-03-08 20:55:21 +00:00
summary :
permissions :
contents : none
runs-on : ubuntu-latest-low
needs : [ changes, build]
if : always()
# This is the summary, we just avoid to rename it so that branch protection rules still match
name : node
steps :
- name : Summary status
run : if ${{ needs.changes.outputs.src != 'false' && needs.build.result != 'success' }}; then exit 1; fi