From 97b928a8cc3ca830df45f18b0bdc32bb49089d23 Mon Sep 17 00:00:00 2001 From: Miroslav Bauer Date: Thu, 30 Apr 2026 17:20:20 +0200 Subject: [PATCH] ci: migrate to shared workflows * Replaces js-tests with shared inveniosoftware/workflows * Updates Node test matrix to 22.x, 24.x, 26.x * Adds run-js-linter.sh and run-js-tests.sh scripts * Updates Node requirement to >=22.0.0 --- .github/workflows/js-tests.yml | 58 +++++++++++++++++----------------- package.json | 2 +- run-js-linter.sh | 32 +++++++++++++++++++ run-js-tests.sh | 29 +++++++++++++++++ 4 files changed, 91 insertions(+), 30 deletions(-) create mode 100755 run-js-linter.sh create mode 100755 run-js-tests.sh diff --git a/.github/workflows/js-tests.yml b/.github/workflows/js-tests.yml index f6ac4e6b..78c96122 100644 --- a/.github/workflows/js-tests.yml +++ b/.github/workflows/js-tests.yml @@ -1,36 +1,36 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024-2026 CERN. +# +# React-Invenio-Forms is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. + name: CI on: push: - branches: [master] + branches: + - master + - "feature/*" + - "maint-**" pull_request: - branches: [master] + branches: + - master + - "maint-**" + - "feature/*" + schedule: + # * is a special character in YAML so you have to quote this string + - cron: "0 2 * * 5" + workflow_dispatch: + inputs: + reason: + description: "Reason" + required: false + default: "Manual trigger" jobs: - Tests: - runs-on: ubuntu-24.04 - - strategy: - matrix: - node-version: [18.x, 16.x] - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - - - name: Install - run: npm ci - - - name: Run linter - run: npm run lint - - - name: Test - run: npm test - - - name: Test build - run: npm run build + JS: + uses: inveniosoftware/workflows/.github/workflows/tests-js.yml@master + with: + js-working-directory: ./ + node-version: '["22.x", "24.x", "26.x"]' diff --git a/package.json b/package.json index b869ca4b..1ede117d 100644 --- a/package.json +++ b/package.json @@ -111,6 +111,6 @@ ] }, "engines": { - "node": ">=16.0.0" + "node": ">=22.0.0" } } diff --git a/run-js-linter.sh b/run-js-linter.sh new file mode 100755 index 00000000..3f2734de --- /dev/null +++ b/run-js-linter.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +# -*- coding: utf-8 -*- +# +# Copyright (C) 2026 CERN. +# +# React-Invenio-Forms is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. + +# Usage: +# ./run-js-linter.sh [args] + +# Arguments +# -i|--install: installs dependencies +GREEN='\033[0;32m' +RED='\033[0;31m' +NC='\033[0m' # No Color + +for arg in $@; do + case ${arg} in + -i|--install) + npm ci;; + -f|--fix) + printf "${GREEN}Run eslint${NC}\n"; + npx eslint -c .eslintrc.yml src/ --ext .js --fix;; + *) + printf "Argument ${RED}$arg${NC} not supported\n" + exit 1;; + esac +done + +printf "${GREEN}Run eslint${NC}\n" +npx eslint -c .eslintrc.yml src/ --ext .js diff --git a/run-js-tests.sh b/run-js-tests.sh new file mode 100755 index 00000000..4be87b33 --- /dev/null +++ b/run-js-tests.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +# -*- coding: utf-8 -*- +# +# Copyright (C) 2026 CERN. +# +# React-Invenio-Forms is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. + +# Usage: +# ./run-js-tests.sh [args] + +# Arguments +# -i|--install: installs dependencies +GREEN='\033[0;32m' +RED='\033[0;31m' +NC='\033[0m' # No Color + +for arg in $@; do + case ${arg} in + -i|--install) + npm ci;; + *) + printf "Argument ${RED}$arg${NC} not supported\n" + exit 1;; + esac +done + +printf "${GREEN}Run tests${NC}\n" +CI=true npm test