aboutsummaryrefslogtreecommitdiffstats
path: root/.github/workflows/node-test.yml
diff options
context:
space:
mode:
authorFerdinand Thiessen <opensource@fthiessen.de>2024-05-03 20:23:46 +0200
committerFerdinand Thiessen <opensource@fthiessen.de>2024-05-03 20:23:46 +0200
commit3d533d2f51e23bf72bb0816d3489e903b106d07f (patch)
tree849f7bf3945f89436c51d4863d3380afceb405f0 /.github/workflows/node-test.yml
parent5682456b14b5a686e309f932ed651c19a863f2aa (diff)
downloadnextcloud-server-3d533d2f51e23bf72bb0816d3489e903b106d07f.tar.gz
nextcloud-server-3d533d2f51e23bf72bb0816d3489e903b106d07f.zip
fix(ci): Update `node-test` workflow and drop unneeded `cypress:version` output
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Diffstat (limited to '.github/workflows/node-test.yml')
-rw-r--r--.github/workflows/node-test.yml173
1 files changed, 173 insertions, 0 deletions
diff --git a/.github/workflows/node-test.yml b/.github/workflows/node-test.yml
new file mode 100644
index 00000000000..931f39e7e47
--- /dev/null
+++ b/.github/workflows/node-test.yml
@@ -0,0 +1,173 @@
+# 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
+#
+# SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors
+# SPDX-License-Identifier: MIT
+
+name: Node tests
+
+on:
+ pull_request:
+ schedule:
+ - cron: "5 2 * * *"
+
+permissions:
+ contents: read
+
+concurrency:
+ group: node-tests-${{ github.head_ref || github.run_id }}
+ cancel-in-progress: true
+
+jobs:
+ 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/**'
+ - '**/__tests__/**'
+ - '**/__mocks__/**'
+ - 'apps/*/src/**'
+ - 'apps/*/appinfo/info.xml'
+ - 'core/src/**'
+ - 'package.json'
+ - 'package-lock.json'
+ - 'tsconfig.json'
+ - '**.js'
+ - '**.ts'
+ - '**.vue'
+
+ versions:
+ runs-on: ubuntu-latest-low
+ needs: changes
+
+ if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
+
+ outputs:
+ nodeVersion: ${{ steps.versions.outputs.nodeVersion }}
+ npmVersion: ${{ steps.versions.outputs.npmVersion }}
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4
+
+ - name: Read package.json node and npm engines version
+ uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
+ id: versions
+ with:
+ fallbackNode: '^20'
+ fallbackNpm: '^10'
+
+ test:
+ runs-on: ubuntu-latest
+ needs: [versions, changes]
+
+ if: ${{ needs.versions.result != 'failure' && needs.changes.outputs.src != 'false' }}
+
+ env:
+ CYPRESS_INSTALL_BINARY: 0
+ PUPPETEER_SKIP_DOWNLOAD: true
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4
+
+ - name: Set up node ${{ needs.versions.outputs.nodeVersion }}
+ uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ with:
+ node-version: ${{ needs.versions.outputs.nodeVersion }}
+
+ - name: Set up npm ${{ needs.versions.outputs.npmVersion }}
+ run: npm i -g npm@"${{ needs.versions.outputs.npmVersion }}"
+
+ - name: Install dependencies & build
+ run: |
+ npm ci
+ npm run build --if-present
+
+ - name: Test and process coverage
+ run: npm run test:coverage --if-present
+
+ - name: Collect coverage
+ uses: codecov/codecov-action@5ecb98a3c6b747ed38dc09f787459979aebb39be # v4.3.1
+ with:
+ files: ./coverage/lcov.info
+
+ jsunit:
+ runs-on: ubuntu-latest
+ needs: [versions, changes]
+
+ if: ${{ needs.versions.result != 'failure' && needs.changes.outputs.src != 'false' }}
+
+ env:
+ CYPRESS_INSTALL_BINARY: 0
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4
+
+ - name: Set up node ${{ needs.versions.outputs.nodeVersion }}
+ uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ with:
+ node-version: ${{ needs.versions.outputs.nodeVersion }}
+
+ - name: Set up npm ${{ needs.versions.outputs.npmVersion }}
+ run: npm i -g npm@"${{ needs.versions.outputs.npmVersion }}"
+
+ - name: Install dependencies
+ run: npm ci
+
+ - name: Test
+ run: npm run test:jsunit
+
+ handlebars:
+ runs-on: ubuntu-latest
+ needs: [versions, changes]
+
+ if: ${{ needs.versions.result != 'failure' && needs.changes.outputs.src != 'false' }}
+
+ env:
+ CYPRESS_INSTALL_BINARY: 0
+ PUPPETEER_SKIP_DOWNLOAD: true
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4
+
+ - name: Set up node ${{ needs.versions.outputs.nodeVersion }}
+ uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ with:
+ node-version: ${{ needs.versions.outputs.nodeVersion }}
+
+ - name: Set up npm ${{ needs.versions.outputs.npmVersion }}
+ run: npm i -g npm@"${{ needs.versions.outputs.npmVersion }}"
+
+ - name: Install dependencies
+ run: npm ci
+
+ - name: Run compile
+ run: ./build/compile-handlebars-templates.sh
+
+ summary:
+ permissions:
+ contents: none
+ runs-on: ubuntu-latest-low
+ needs: [changes, test, jsunit, handlebars]
+
+ if: always()
+
+ name: node-test-summary
+
+ steps:
+ - name: Summary status
+ run: if ${{ needs.changes.outputs.src != 'false' && needs.test.result != 'success' && needs.jsunit.result != 'success' && needs.handlebars.result != 'success' }}; then exit 1; fi