diff options
author | Ferdinand Thiessen <opensource@fthiessen.de> | 2024-05-03 20:23:46 +0200 |
---|---|---|
committer | Ferdinand Thiessen <opensource@fthiessen.de> | 2024-05-03 20:23:46 +0200 |
commit | 3d533d2f51e23bf72bb0816d3489e903b106d07f (patch) | |
tree | 849f7bf3945f89436c51d4863d3380afceb405f0 /.github/workflows/node-test.yml | |
parent | 5682456b14b5a686e309f932ed651c19a863f2aa (diff) | |
download | nextcloud-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.yml | 173 |
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 |