diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml deleted file mode 100644 index 534806daffe6..000000000000 --- a/.github/workflows/codeql.yml +++ /dev/null @@ -1,73 +0,0 @@ -name: 'CodeQL' - -on: - schedule: - - cron: '0 1 * * *' - workflow_dispatch: - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - permissions: - actions: read - contents: read - security-events: write - - strategy: - fail-fast: false - matrix: - branch: [ '21_2', '22_1', '22_2' ] - language: [ 'csharp', 'javascript' ] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] - # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - with: - ref: ${{ matrix.branch }} - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - with: - languages: ${{ matrix.language }} - config-file: ./.github/codeql/codeql-config.yml - - - name: Autobuild - uses: github/codeql-action/autobuild@v2 - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 - with: - category: "/language:${{matrix.language}}" - - - name: Get Latest Analysis info - run: | - RESPONSE=$(curl \ - -H "Accept: application/vnd.github+json" \ - -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ - https://api.github.com/repos/${{ github.repository }}/code-scanning/alerts) - echo 'ALERTS<> $GITHUB_ENV - echo $RESPONSE >> $GITHUB_ENV - echo 'EOF' >> $GITHUB_ENV - - - name: Get Date - id: get-date - run: | - echo "::set-output name=date::$(/bin/date -u "+%s")" - shell: bash - - - uses: actions/cache@v3 - id: notify-cache - with: - path: notify.json - key: ${{ runner.os }}-${{ matrix.branch }}-${{ matrix.language }}-${{ steps.get-date.outputs.date }} - restore-keys: ${{ runner.os }}-${{ matrix.branch }}-${{ matrix.language }} - - - name: Teams Notification - uses: DevExpress/github-actions/send-teams-notification@main - with: - hook_url: ${{ secrets.TEAMS_HOOK_TMP }} - alerts: ${{ env.ALERTS }} diff --git a/.github/workflows/devextreme_npm_tests.yml b/.github/workflows/devextreme_npm_tests.yml deleted file mode 100644 index 77b74cfce789..000000000000 --- a/.github/workflows/devextreme_npm_tests.yml +++ /dev/null @@ -1,365 +0,0 @@ -name: DevExtreme package tests - -concurrency: - group: wf-${{github.event.pull_request.number || github.sha}}-${{github.workflow}} - cancel-in-progress: true - -on: - pull_request: - push: - branches: [22_2] - -jobs: - build: - runs-on: devextreme-shr2 - - steps: - - name: Get sources - uses: actions/checkout@v3 - - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: '15' - - - name: Restore npm cache - uses: actions/cache@v3 - with: - path: ./node_modules - key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node-modules - - - name: Restore artifacts cache - uses: actions/cache@v3 - with: - path: ./artifacts - key: build-npm-devextreme-artifacts-${{ github.sha }} - - - name: Install packages in devextreme repo - run: test -d artifacts || npm install --no-audit --no-fund - - - name: Build devextreme repo - run: test -d artifacts || npm run build-npm-devextreme - - - name: Pack devextreme package - working-directory: ./artifacts/npm/devextreme - run: npm pack - - - name: Copy build artifacts - uses: actions/upload-artifact@v3 - with: - name: devextreme-npm - path: ./artifacts/npm/devextreme/devextreme-*.tgz - retention-days: 1 - - test_npm_renovation: - name: Renovated NPM - ${{ matrix.framework }} - needs: build - runs-on: devextreme-shr2 - timeout-minutes: 30 - strategy: - fail-fast: false - matrix: - framework: [react] - - steps: - - name: Get sources - uses: actions/checkout@v3 - - - uses: ./.github/actions/pin-browsers - - - name: Restore npm cache - uses: actions/cache@v3 - with: - path: ./node_modules - key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node-modules - - - name: Install packages in devextreme repo - run: npm install --no-audit --no-fund - - - name: Download DevExtreme package - uses: actions/download-artifact@v3 - with: - name: devextreme-npm - path: ./testing/renovation-npm/${{ matrix.framework }}-app - - - name: Prepare artifacts - run: | - mkdir -p ./artifacts/npm - cp $(ls ./testing/renovation-npm/${{ matrix.framework }}-app/devextreme-*.tgz) ./artifacts/npm/devextreme.tgz - cd ./artifacts/npm - tar -xzf devextreme.tgz - mv package devextreme - - - name: Build Renovated NPM - run: npm run build-npm-renovation:${{ matrix.framework }} - - - name: Prepare test project - working-directory: ./testing/renovation-npm - run: | - npm i - - npm run pack:renovation ${{ matrix.framework }} - npm run install-all ${{ matrix.framework }} - npm run start ${{ matrix.framework }} & - - for i in {1..20}; do - if [ "$(curl -o /dev/null -s -w "%{http_code}\n" http://localhost:3000)" == "200" ]; then - exit 0 - fi - sleep 10 - done - exit 1 - - - name: Run tests - working-directory: ./testing/renovation-npm - run: | - npm run test:${{ matrix.framework }} - - - name: Copy compared screenshot artifacts - if: ${{ failure() }} - uses: actions/upload-artifact@v3 - with: - name: compared-screenshots - path: ${{ github.workspace }}/testing/renovation-npm/tests/artifacts - if-no-files-found: ignore - - test_angular_wrappers: - name: Angular wrapper tests - needs: build - runs-on: devextreme-shr2 - timeout-minutes: 30 - - steps: - - name: Use Node.js v14 - uses: actions/setup-node@v3 - with: - node-version: '14' - - - name: Get sources - uses: actions/checkout@v3 - - - uses: ./.github/actions/pin-browsers - - - name: Create directory link - run: cd ../ && ln -s DevExtreme devextreme - - - name: Restore npm cache - uses: actions/cache@v3 - with: - path: ./node_modules - key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node-modules - - - name: Install packages in devextreme repo - run: npm install --no-audit --no-fund - - - name: Discover declarations in devextreme repo - run: npm run discover-declarations - - - name: Clone devextreme-angular repo from PR author fork - continue-on-error: true - if: github.event_name == 'pull_request' - run: | - REMOTE_URL=https://github.com/${{github.event.pull_request.user.login}}/devextreme-angular - REMOTE_BRANCH=${{github.event.pull_request.head.ref}} - - if [ "$(git ls-remote --heads $REMOTE_URL $REMOTE_BRANCH | wc -l)" == "1" ]; then - git clone -b $REMOTE_BRANCH $REMOTE_URL ../devextreme-angular-repo - fi - - - name: Clone devextreme-angular repo - run: | - test -d ../devextreme-angular-repo || git clone -b master https://github.com/devexpress/devextreme-angular ../devextreme-angular-repo - - - name: Download artifacts - uses: actions/download-artifact@v3 - with: - name: devextreme-npm - path: ../devextreme-angular-repo/devextreme-setup - - - name: Install devextreme package - working-directory: ../devextreme-angular-repo - run: | - pushd devextreme-setup - installerName=$(realpath .)/$(ls *.tgz) - popd - cd ./packages/devextreme-angular - npm install --save-dev $installerName - cd ../sandbox - npm install --save-dev $installerName - cd ../../ - npm install --save-dev $installerName - - - name: Install packages for devextreme-angular - working-directory: ../devextreme-angular-repo - run: npm install --no-audit --no-fund - - - name: Build with Angular 7 - run: | - cd ../devextreme-angular-repo - npm run build - - - name: Run tests with Angular 7 - run: | - cd ../devextreme-angular-repo - npx lerna run --scope devextreme-angular gulp -- run.tests - - test_bundlers: - name: Bundlers tests - needs: build - runs-on: devextreme-shr2 - timeout-minutes: 60 - - steps: - - name: Get sources - uses: actions/checkout@v3 - - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: '15' - - - name: Download artifacts - uses: actions/download-artifact@v3 - with: - name: devextreme-npm - path: ./testing/bundlers - - - name: Install bundlers - working-directory: ./testing/bundlers - run: npm install --no-audit --no-fund - - - name: Install DevExtreme package - working-directory: ./testing/bundlers - run: npm install --save-dev $(find . -maxdepth 1 -name "devextreme-*.tgz") - - - name: Generate entry files - working-directory: ./testing/bundlers - run: npm run generate-entry-files - - - name: Build webpack cjs - working-directory: ./testing/bundlers - run: npm run build:webpack-cjs - - - name: Build browserify cjs - working-directory: ./testing/bundlers - run: npm run build:browserify-cjs - - - name: Build webpack - working-directory: ./testing/bundlers - run: npm run build:webpack - - - name: Build rollup - working-directory: ./testing/bundlers - run: npm run build:rollup - - - name: Build parcel - working-directory: ./testing/bundlers - run: npm run build:parcel - - - name: Build vite - working-directory: ./testing/bundlers - run: npm run build:vite - - test_demos: - needs: build - strategy: - fail-fast: false - matrix: - CONSTEL: [jquery(1/4), jquery(2/4), jquery(3/4), jquery(4/4)] - - runs-on: devextreme-shr2 - name: Demos visual tests ${{ matrix.CONSTEL }} - timeout-minutes: 20 - - steps: - - name: Get sources - uses: actions/checkout@v3 - - - uses: ./.github/actions/pin-browsers - - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: '15' - - - name: Clone devextreme-demos repo from PR author fork - continue-on-error: true - if: github.event_name == 'pull_request' - run: | - REMOTE_URL=https://github.com/${{github.event.pull_request.user.login}}/devextreme-demos - REMOTE_BRANCH=${{github.event.pull_request.head.ref}} - - if [ "$(git ls-remote --heads $REMOTE_URL $REMOTE_BRANCH | wc -l)" == "1" ]; then - git clone -b $REMOTE_BRANCH $REMOTE_URL ./devextreme-demos - fi - - - name: Clone devextreme-demos repo - run: | - BASE_BRANCH=$(node -p -e "require('./package.json').version.slice(0, 4).replace('.', '_')") - test -d ./devextreme-demos || git clone -b $BASE_BRANCH https://github.com/devexpress/devextreme-demos ./devextreme-demos - - - name: Download artifacts - uses: actions/download-artifact@v3 - with: - name: devextreme-npm - path: ./devextreme-demos - - - name: Delete DX packages - working-directory: ./devextreme-demos - run: sed -i '/22.2-next/d' ./package.json - - - name: Install packages for devextreme-demos - working-directory: ./devextreme-demos - run: npm install --no-audit --no-fund - - - name: Install devextreme package - working-directory: ./devextreme-demos - run: npm install --legacy-peer-deps $(find . -maxdepth 1 -name "devextreme-*.tgz") - - - name: Prepare JS - working-directory: ./devextreme-demos - run: npm run prepare-js - - - name: Run Web Server - working-directory: ./devextreme-demos - run: | - python -m http.server 8080 & - python -m http.server 8081 & - python -m http.server 8082 & - python -m http.server 8083 & - - - name: Run TestCafe tests - working-directory: ./devextreme-demos - env: - BROWSERS: chrome:headless --disable-partial-raster --disable-skia-runtime-opts --run-all-compositor-stages-before-draw --disable-new-content-rendering-timeout --disable-threaded-animation --disable-threaded-scrolling --disable-checker-imaging --disable-image-animation-resync --use-gl="swiftshader" --disable-features=PaintHolding --js-flags=--random-seed=2147483647 --font-render-hinting=none --disable-font-subpixel-positioning - CONCURRENCY: 4 - TCQUARANTINE: true - CONSTEL: ${{ matrix.CONSTEL }} - ENABLE_DEMO_TEST_SETTINGS: true - run: npm run test-testcafe - - - name: Copy screenshots artifacts - if: ${{ failure() }} - uses: actions/upload-artifact@v3 - with: - name: screenshots - path: ${{ github.workspace }}/devextreme-demos/testing/artifacts/* - if-no-files-found: ignore - - notify: - runs-on: devextreme-shr2 - name: Send notifications - needs: [build, test_angular_wrappers, test_bundlers, test_demos, test_npm_renovation] - if: always() && contains(needs.*.result, 'failure') - - steps: - - uses: actions/checkout@v3 - - uses: DevExpress/github-actions/send-teams-notification@main - with: - hook_url: ${{secrets.TEAMS_ALERT}} - bearer_token: ${{secrets.GITHUB_TOKEN}} - specific_repo: DevExpress/DevExtreme - specific_branch: 22_2 diff --git a/.github/workflows/lgtm_sync.yml b/.github/workflows/lgtm_sync.yml deleted file mode 100644 index 4fef631be242..000000000000 --- a/.github/workflows/lgtm_sync.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: Sync LGTM.com alerts - -on: - schedule: - - cron: '30 1 * * *' - -jobs: - lgtm-sync: - runs-on: devextreme-shr2 - timeout-minutes: 5 - env: - # NOTE: The LGTM.com doesn't scan forks - # Consider another workflow for forked repository (for example CodeQL) - GITHUB_REPOSITORY: ${{ github.repository }} - steps: - - name: Get Project info - run: | - RESPONSE=$(curl -X GET "https://lgtm.com/api/v1.0/projects/g/${{ env.GITHUB_REPOSITORY }}" -H 'Content-Type: application/json') - echo "PROJECT=$RESPONSE" >> $GITHUB_ENV - - name: Get Latest Analysis info - run: | - RESPONSE=$(curl -X GET 'https://lgtm.com/api/v1.0/analyses/${{ fromJSON(env.PROJECT).id }}/commits/latest' -H 'Accept: application/json') - echo "ANALYSIS=$RESPONSE" >> $GITHUB_ENV - - name: Get SARIF - run: | - curl -X GET "https://lgtm.com/api/v1.0/analyses/${{ fromJSON(env.ANALYSIS).id }}/alerts" -H 'Accept: application/sarif+json' >> lgtm.sarif - - name: Upload SARIF file - uses: github/codeql-action/upload-sarif@v1 - with: - sarif_file: lgtm.sarif - - notify: - runs-on: devextreme-shr2 - name: Send notifications - needs: [lgtm-sync] - if: always() && contains(needs.*.result, 'failure') - - steps: - - uses: actions/checkout@v3 - - uses: DevExpress/github-actions/send-teams-notification@main - with: - hook_url: ${{secrets.TEAMS_ALERT}} - bearer_token: ${{secrets.GITHUB_TOKEN}} - specific_repo: DevExpress/DevExtreme - specific_branch: 22_2 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml deleted file mode 100644 index 93df6dbf0eb9..000000000000 --- a/.github/workflows/lint.yml +++ /dev/null @@ -1,193 +0,0 @@ -name: Lint - -concurrency: - group: wf-${{github.event.pull_request.number || github.sha}}-${{github.workflow}} - cancel-in-progress: true - -on: - pull_request: - push: - branches: [22_2] - -jobs: - Renovation: - runs-on: devextreme-shr2 - timeout-minutes: 60 - steps: - - name: Get sources - uses: actions/checkout@v3 - - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: '15' - - - name: Restore npm cache - uses: actions/cache@v3 - with: - path: ./node_modules - key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node-modules - - - name: Run npm install - run: npm install --no-audit --no-fund - - - name: Compile renovation - run: | - npm i cheerio@1.0.0-rc.10 - npm run compile:r -# Remove package install after upgrade to TypeScript >= 4.6 - - - name: Lint renovation - run: npm run lint-renovation - - TS: - runs-on: devextreme-shr2 - timeout-minutes: 60 - steps: - - name: Get sources - uses: actions/checkout@v3 - - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: '15' - - - name: Restore npm cache - uses: actions/cache@v3 - with: - path: ./node_modules - key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node-modules - - - name: Run npm install - run: npm install --no-audit --no-fund - - - name: Run npm install TS testing - run: | - pushd testing/typescript - npm install --no-audit --no-fund - popd - - - name: Build - run: npm run build - - - name: Lint TS - env: - DEBUG: eslint:cli-engine - run: npm run lint-ts - - - name: Lint .d.ts - env: - DEBUG: eslint:cli-engine - run: npm run lint-dts - - JS: - runs-on: devextreme-shr2 - timeout-minutes: 60 - steps: - - name: Get sources - uses: actions/checkout@v3 - - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: '15' - - - name: Restore npm cache - uses: actions/cache@v3 - with: - path: ./node_modules - key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node-modules - - - name: Run npm install - run: npm install --no-audit --no-fund - - - name: Build - run: npm run build - - - name: Lint JS - env: - DEBUG: eslint:cli-engine - run: npm run lint-js - - CSS: - runs-on: devextreme-shr2 - timeout-minutes: 60 - steps: - - name: Get sources - uses: actions/checkout@v3 - - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: '15' - - - name: Restore npm cache - uses: actions/cache@v3 - with: - path: ./node_modules - key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node-modules - - - name: Run npm install - run: npm install --no-audit --no-fund - - - name: Lint CSS - run: npm run lint-css - - package_lock_npm_6: - runs-on: devextreme-shr2 - timeout-minutes: 10 - steps: - - name: Get sources - uses: actions/checkout@v3 - - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: '14' - - - name: Check package-lock - run: | - node -v - npm -v - npm install --no-audit --no-fund - - - name: Check build - run: npm run build:dev - - package_lock: - runs-on: devextreme-shr2 - timeout-minutes: 10 - steps: - - name: Get sources - uses: actions/checkout@v3 - - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: '16' - - - name: Check package-lock - run: | - node -v - npm -v - npm install --no-audit --no-fund --ignore-scripts - git diff --exit-code package-lock.json - - notify: - runs-on: devextreme-shr2 - name: Send notifications - needs: [Renovation, TS, JS, CSS, package_lock, package_lock_npm_6] - if: always() && contains(needs.*.result, 'failure') - - steps: - - uses: actions/checkout@v3 - - uses: DevExpress/github-actions/send-teams-notification@main - with: - hook_url: ${{secrets.TEAMS_ALERT}} - bearer_token: ${{secrets.GITHUB_TOKEN}} - specific_repo: DevExpress/DevExtreme - specific_branch: 22_2 diff --git a/.github/workflows/qunit_tests-additional-renovation.yml b/.github/workflows/qunit_tests-additional-renovation.yml deleted file mode 100644 index c1fa727e6b0e..000000000000 --- a/.github/workflows/qunit_tests-additional-renovation.yml +++ /dev/null @@ -1,209 +0,0 @@ -name: Additional QUnit - -concurrency: - group: wf-${{github.event.pull_request.number || github.sha}}-${{github.workflow}} - cancel-in-progress: true - -on: - pull_request: - push: - branches: [22_2] - -jobs: - build: - runs-on: devextreme-shr2 - name: Build - timeout-minutes: 15 - - steps: - - name: Get sources - uses: actions/checkout@v3 - - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: '15' - - - name: Restore npm cache - uses: actions/cache@v3 - with: - path: ./node_modules - key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node-modules - - - name: Run npm install - run: npm install --no-audit --no-fund - - - name: Build - env: - DEVEXTREME_TEST_CI: "true" - DOTNET_CLI_TELEMETRY_OPTOUT: "true" - DOTNET_SKIP_FIRST_TIME_EXPERIENCE: "true" - run: npm run build:dev - - - name: Zip artifacts - run: | - 7z a -tzip -mx3 -mmt2 artifacts.zip artifacts scss/bundles testing/tests/Renovation/widgets.json - - - name: Upload build artifacts - uses: actions/upload-artifact@v3 - with: - name: devextreme-artifacts - path: artifacts.zip - retention-days: 1 - - qunit-tests: - needs: build - runs-on: devextreme-shr2 - name: ${{ matrix.envs.name }} - timeout-minutes: 30 - strategy: - fail-fast: false - matrix: - envs: [ - { CONSTEL: "misc", TZ: 'PST8PDT', name: 'misc-PST8PDT' }, - { CONSTEL: "misc", TZ: 'Japan', name: 'misc-Japan' }, - { CONSTEL: "misc", TZ: 'Australia/ACT', name: 'misc-Australia' }, - { CONSTEL: "ui.editors", TZ: 'PST8PDT', name: 'ui.editors-PST8PDT' }, - { CONSTEL: "ui.editors", TZ: 'Japan', name: 'ui.editors-Japan' }, - { CONSTEL: "ui.editors", TZ: 'Australia/ACT', name: 'ui.editors-Australia' }, - { CONSTEL: "ui.editors", TZ: 'Europe/London', name: 'ui.editors-Europe' }, - { CONSTEL: "ui.grid", TZ: 'PST8PDT', name: 'ui.grid-PST8PDT' }, - { CONSTEL: "ui.scheduler", TZ: 'PST8PDT', name: 'ui.scheduler-PST8PDT' }, - { CONSTEL: "ui.scheduler", TZ: 'Japan', name: 'ui.scheduler-Japan' }, - { CONSTEL: "ui.scheduler", TZ: 'Australia/ACT', name: 'ui.scheduler-Australia' }, - { CONSTEL: "ui.scheduler", TZ: 'Europe/London', name: 'ui.scheduler-Europe' }, - { PERF: true, JQUERY: true, NO_HEADLESS: true, name: 'Performance' }, - { MOBILE_UA: "ios10", CONSTEL: "ui", name: 'ui-iOS10' }, - { MOBILE_UA: "ios10", CONSTEL: "ui.widgets(1/3)", NO_HEADLESS: true, name: 'ui.widgets(1/3)-iOS10' }, - { MOBILE_UA: "ios10", CONSTEL: "ui.widgets(2/3)", NO_HEADLESS: true, name: 'ui.widgets(2/3)-iOS10' }, - { MOBILE_UA: "ios10", CONSTEL: "ui.widgets(3/3)", NO_HEADLESS: true, name: 'ui.widgets(3/3)-iOS10' }, - { MOBILE_UA: "ios10", CONSTEL: "ui.editors", NO_HEADLESS: true, name: 'ui.editors-iOS10' }, - { MOBILE_UA: "ios10", CONSTEL: "ui.htmlEditor", NO_HEADLESS: true, name: 'ui.htmlEditor-iOS10' }, - { MOBILE_UA: "ios10", CONSTEL: "ui.grid", NO_HEADLESS: true, name: 'ui.grid-iOS10' }, - { MOBILE_UA: "ios10", CONSTEL: "ui.scheduler", NO_HEADLESS: true, name: 'ui.scheduler-iOS10' }, - { MOBILE_UA: "ios10", CONSTEL: "viz", name: 'viz-iOS10' }, - { MOBILE_UA: "android6", JQUERY: true, CONSTEL: "ui", name: 'ui-android6' }, - { MOBILE_UA: "android6", JQUERY: true, CONSTEL: "ui.widgets(1/3)", NO_HEADLESS: true, name: 'ui.widgets(1/3)-android6' }, - { MOBILE_UA: "android6", JQUERY: true, CONSTEL: "ui.widgets(2/3)", NO_HEADLESS: true, name: 'ui.widgets(2/3)-android6' }, - { MOBILE_UA: "android6", JQUERY: true, CONSTEL: "ui.widgets(3/3)", NO_HEADLESS: true, name: 'ui.widgets(3/3)-android6' }, - { MOBILE_UA: "android6", JQUERY: true, CONSTEL: "ui.editors", NO_HEADLESS: true, name: 'ui.editors-android6' }, - { MOBILE_UA: "android6", JQUERY: true, CONSTEL: "ui.htmlEditor", NO_HEADLESS: true, name: 'ui.htmlEditor-android6' }, - { MOBILE_UA: "android6", JQUERY: true, CONSTEL: "ui.grid", NO_HEADLESS: true, name: 'ui.grid-android6' }, - { MOBILE_UA: "android6", JQUERY: true, CONSTEL: "ui.scheduler", NO_HEADLESS: true, name: 'ui.scheduler-android6' }, - { MOBILE_UA: "android6", JQUERY: true, CONSTEL: "viz", name: 'viz-android6' }, - { SHADOW_DOM: true, CONSTEL: "ui.widgets(1/3)", NO_HEADLESS: true, name: 'ui.widgets(1/3)-shadowdom' }, - { SHADOW_DOM: true, CONSTEL: "ui.widgets(2/3)", NO_HEADLESS: true, name: 'ui.widgets(2/3)-shadowdom' }, - { SHADOW_DOM: true, CONSTEL: "ui.widgets(3/3)", NO_HEADLESS: true, name: 'ui.widgets(3/3)-shadowdom' }, - { SHADOW_DOM: true, CONSTEL: "ui.editors", NO_HEADLESS: true, name: 'ui.editors-shadowdom' }, - { SHADOW_DOM: true, CONSTEL: "ui.htmlEditor", NO_HEADLESS: true, name: 'ui.htmlEditor-shadowdom' }, - { SHADOW_DOM: true, CONSTEL: "ui.grid", NO_HEADLESS: true, name: 'ui.grid-shadowdom' }, - { BROWSER: "firefox", JQUERY: true, CONSTEL: "export", name: 'export-firefox' }, - { BROWSER: "firefox", JQUERY: true, CONSTEL: "misc", name: 'misc-firefox' }, - { BROWSER: "firefox", JQUERY: true, CONSTEL: "ui", name: 'ui-firefox' }, - { BROWSER: "firefox", JQUERY: true, CONSTEL: "ui.editors", name: 'ui.editors-firefox' }, - { BROWSER: "firefox", JQUERY: true, CONSTEL: "ui.htmlEditor", name: 'ui.htmlEditor-firefox' }, - { BROWSER: "firefox", JQUERY: true, CONSTEL: "ui.grid(1/2)", name: 'ui.grid(1/2)-firefox' }, - { BROWSER: "firefox", JQUERY: true, CONSTEL: "ui.grid(2/2)", name: 'ui.grid(2/2)-firefox' }, - { BROWSER: "firefox", JQUERY: true, CONSTEL: "ui.scheduler(1/2)", name: 'ui.scheduler(1/2)-firefox' }, - { BROWSER: "firefox", JQUERY: true, CONSTEL: "ui.scheduler(2/2)", name: 'ui.scheduler(2/2)-firefox' }, - { BROWSER: "firefox", JQUERY: true, CONSTEL: "viz", name: 'viz-firefox' }, - { BROWSER: "firefox", JQUERY: true, CONSTEL: "renovation", name: 'renovation-firefox' } - ] - - steps: - - name: Setup MATRIX_ENVS_NAME_SAFE - run: | - MATRIX_ENVS_NAME_SAFE=$(echo -n "${{ matrix.envs.name }}" | sed 's|/|-|g') - echo "MATRIX_ENVS_NAME_SAFE=$MATRIX_ENVS_NAME_SAFE" - echo "MATRIX_ENVS_NAME_SAFE=$MATRIX_ENVS_NAME_SAFE" >> $GITHUB_ENV - - - name: Setup firefox profile - run: | - mkdir -p /tmp/firefox-profile - for p in \ - '"browser.shell.checkDefaultBrowser", false' \ - '"datareporting.policy.dataSubmissionEnabled", false' \ - '"font.name-list.monospace.x-western", "Liberation Mono"' \ - '"font.name-list.sans-serif.x-western", "Liberation Sans"' \ - '"font.name-list.serif.x-western", "Liberation Serif"' ; do echo "user_pref($p);" >> /tmp/firefox-profile/prefs.js; done - -# - name: Update apt -# run: | -# sudo apt-get update - -# - name: Setup utils -# run: | -# sudo apt-get install -y dbus-x11 httping x11vnc xvfb - - - name: Get sources - uses: actions/checkout@v3 - - - uses: ./.github/actions/pin-browsers - - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: '15' - - - name: Restore npm cache - uses: actions/cache@v3 - with: - path: ./node_modules - key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node-modules - - - name: Run npm install - run: npm install --no-package-lock --no-audit --no-fund - - - name: Download artifacts - uses: actions/download-artifact@v3 - with: - name: devextreme-artifacts - - - name: Unpack artifacts - run: 7z x artifacts.zip - - - name: Build dotnet - run: dotnet build build/build-dotnet.sln - - - name: Run QUnit tests - env: - CONSTEL: ${{ matrix.envs.CONSTEL }} - BROWSER: ${{ matrix.envs.BROWSER }} - JQUERY: ${{ matrix.envs.JQUERY }} - MOBILE_UA: ${{ matrix.envs.MOBILE_UA }} - SHADOW_DOM: ${{ matrix.envs.SHADOW_DOM }} - TZ: ${{ matrix.envs.TZ }} - PERF: ${{ matrix.envs.PERF }} - NO_HEADLESS: ${{ matrix.envs.NO_HEADLESS }} - NORENOVATION: "false" - GITHUBACTION: "true" - TARGET: "test" - DISPLAY: ":99" - run: | - chmod +x ./docker-ci.sh - ./docker-ci.sh - - - name: Copy RawLog.txt - if: ${{ failure() }} - uses: actions/upload-artifact@v3 - with: - name: RawLog-${{ env.MATRIX_ENVS_NAME_SAFE }} - path: ${{ github.workspace }}/testing/RawLog.txt - if-no-files-found: ignore - - notify: - runs-on: devextreme-shr2 - name: Send notifications - needs: [build, qunit-tests] - if: always() && contains(needs.*.result, 'failure') - - steps: - - uses: actions/checkout@v3 - - uses: DevExpress/github-actions/send-teams-notification@main - with: - hook_url: ${{secrets.TEAMS_ALERT}} - bearer_token: ${{secrets.GITHUB_TOKEN}} - specific_repo: DevExpress/DevExtreme - specific_branch: 22_2 diff --git a/.github/workflows/qunit_tests-renovation.yml b/.github/workflows/qunit_tests-renovation.yml index 513dbcb348b6..19b98bea7c1b 100644 --- a/.github/workflows/qunit_tests-renovation.yml +++ b/.github/workflows/qunit_tests-renovation.yml @@ -1,9 +1,5 @@ name: QUnit tests for renovation -concurrency: - group: wf-${{github.event.pull_request.number || github.sha}}-${{github.workflow}} - cancel-in-progress: true - on: pull_request: push: @@ -24,102 +20,7 @@ jobs: with: node-version: '15' - - name: Restore npm cache - uses: actions/cache@v3 - with: - path: ./node_modules - key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node-modules - - - name: Run npm install - run: npm install --no-audit --no-fund - - - name: Build - env: - DEVEXTREME_TEST_CI: "true" - DOTNET_CLI_TELEMETRY_OPTOUT: "true" - DOTNET_SKIP_FIRST_TIME_EXPERIENCE: "true" - run: BUILD_INPROGRESS_RENOVATION=true npm run build:dev - - - name: Zip artifacts - run: | - 7z a -tzip -mx3 -mmt2 artifacts.zip artifacts scss/bundles testing/tests/Renovation/widgets.json - - - name: Upload build artifacts - uses: actions/upload-artifact@v3 - with: - name: devextreme-artifacts - path: artifacts.zip - retention-days: 1 - - qunit-tests: - needs: build - runs-on: devextreme-shr2 - name: Constel ${{ matrix.CONSTEL }} - timeout-minutes: 60 - strategy: - fail-fast: false - matrix: - CONSTEL: [ export, misc, ui, ui.widgets(1/2), ui.widgets(2/2), ui.editors, ui.htmlEditor, ui.grid, ui.scheduler(1/2), ui.scheduler(2/2), viz, renovation ] - - steps: - - name: Get sources - uses: actions/checkout@v3 - - - uses: ./.github/actions/pin-browsers - -# - name: Update apt -# run: | -# sudo apt-get update - -# - name: Setup utils -# run: | -# sudo apt-get install -y dbus-x11 httping x11vnc xvfb - - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: '15' - - - name: Restore npm cache - uses: actions/cache@v3 - with: - path: ./node_modules - key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node-modules - - - name: Download artifacts - uses: actions/download-artifact@v3 - with: - name: devextreme-artifacts - - - name: Unpack artifacts - run: 7z x artifacts.zip - - - name: Build dotnet - run: dotnet build build/build-dotnet.sln - - - name: Run QUnit tests - env: - CONSTEL: ${{ matrix.CONSTEL }} - NORENOVATION: "false" - GITHUBACTION: "true" - TARGET: "test" + - name: Logs run: | - chmod +x ./docker-ci.sh - ./docker-ci.sh - - notify: - runs-on: devextreme-shr2 - name: Send notifications - needs: [build, qunit-tests] - if: always() && contains(needs.*.result, 'failure') - - steps: - - uses: actions/checkout@v3 - - uses: DevExpress/github-actions/send-teams-notification@main - with: - hook_url: ${{secrets.TEAMS_ALERT}} - bearer_token: ${{secrets.GITHUB_TOKEN}} - specific_repo: DevExpress/DevExtreme - specific_branch: 22_2 + npm --version + npm config list diff --git a/.github/workflows/renovate_autoapprove.yml b/.github/workflows/renovate_autoapprove.yml deleted file mode 100644 index 4cedf63f1cbb..000000000000 --- a/.github/workflows/renovate_autoapprove.yml +++ /dev/null @@ -1,13 +0,0 @@ -name: Auto approve renovate bot PR - -on: - pull_request_target - -jobs: - auto-approve: - runs-on: devextreme-shr2 - steps: - - uses: hmarr/auto-approve-action@v2 - if: github.actor == 'renovate-bot' || github.actor == 'renovate[bot]' - with: - github-token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/renovation.yml b/.github/workflows/renovation.yml deleted file mode 100644 index b66b24ca090d..000000000000 --- a/.github/workflows/renovation.yml +++ /dev/null @@ -1,80 +0,0 @@ -name: Renovation - -concurrency: - group: wf-${{github.event.pull_request.number || github.sha}}-${{github.workflow}} - cancel-in-progress: true - -on: - pull_request: - push: - branches: [22_2] - -jobs: - jest-tests: - runs-on: devextreme-shr2 - timeout-minutes: 60 - steps: - - name: Get sources - uses: actions/checkout@v3 - - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: '15' - - - name: Restore npm cache - uses: actions/cache@v3 - with: - path: ./node_modules - key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node-modules - - - name: Run npm install - run: npm install --no-audit --no-fund - - - name: Jest test - run: | - npm i - npx gulp localization - npm run test-jest - generation: - runs-on: devextreme-shr2 - timeout-minutes: 60 - steps: - - name: Get sources - uses: actions/checkout@v3 - - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: '15' - - - name: Restore npm cache - uses: actions/cache@v3 - with: - path: ./node_modules - key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node-modules - - - name: Run npm install - run: npm install --no-audit --no-fund - - - name: Check components generation - run: | - npx gulp localization - npx gulp native-components-compilation-check - - notify: - runs-on: devextreme-shr2 - name: Send notifications - needs: [jest-tests, generation] - if: always() && contains(needs.*.result, 'failure') - - steps: - - uses: actions/checkout@v3 - - uses: DevExpress/github-actions/send-teams-notification@main - with: - hook_url: ${{secrets.TEAMS_ALERT}} - bearer_token: ${{secrets.GITHUB_TOKEN}} - specific_repo: DevExpress/DevExtreme - specific_branch: 22_2 diff --git a/.github/workflows/styles.yml b/.github/workflows/styles.yml deleted file mode 100644 index 9ff36dc1fda8..000000000000 --- a/.github/workflows/styles.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: Styles tests - -concurrency: - group: wf-${{github.event.pull_request.number || github.sha}}-${{github.workflow}} - cancel-in-progress: true - -on: - pull_request: - push: - branches: [22_2] - -jobs: - Tests: - runs-on: devextreme-shr2 - timeout-minutes: 60 - steps: - - name: Get sources - uses: actions/checkout@v3 - - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: '15' - - - name: Restore npm cache - uses: actions/cache@v3 - with: - path: ./node_modules - key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node-modules - - - name: Run npm install - run: npm install --no-audit --no-fund - - - name: Run tests - run: npm run test-styles - - notify: - runs-on: devextreme-shr2 - name: Send notifications - needs: [Tests] - if: always() && contains(needs.*.result, 'failure') - - steps: - - uses: actions/checkout@v3 - - uses: DevExpress/github-actions/send-teams-notification@main - with: - hook_url: ${{secrets.TEAMS_ALERT}} - bearer_token: ${{secrets.GITHUB_TOKEN}} - specific_repo: DevExpress/DevExtreme - specific_branch: 22_2 diff --git a/.github/workflows/testcafe_tests.yml b/.github/workflows/testcafe_tests.yml deleted file mode 100644 index 0a1651b4e25d..000000000000 --- a/.github/workflows/testcafe_tests.yml +++ /dev/null @@ -1,176 +0,0 @@ -name: TestCafe tests - -concurrency: - group: wf-${{github.event.pull_request.number || github.sha}}-${{github.workflow}} - cancel-in-progress: true - -on: - pull_request: - push: - branches: [22_2] - -jobs: - build: - name: build-${{ matrix.ARGS.name }} - strategy: - fail-fast: false - matrix: - ARGS: [ - { name: "wip-renovation", inProgressRenovation: true }, - { name: "default" }, - ] - runs-on: devextreme-shr2 - timeout-minutes: 15 - - steps: - - name: Get sources - uses: actions/checkout@v3 - - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: '15' - - - name: Restore npm cache - uses: actions/cache@v3 - with: - path: ./node_modules - key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node-modules - - - name: Run npm install - run: npm install --no-audit --no-fund - - - name: Build - run: BUILD_INPROGRESS_RENOVATION="${{ matrix.ARGS.inProgressRenovation == true }}" npm run build:dev - - - name: Zip artifacts - run: | - 7z a -tzip -mx3 -mmt2 artifacts.zip artifacts scss/bundles testing/tests/Renovation/widgets.json - - - name: Upload build artifacts - uses: actions/upload-artifact@v3 - with: - name: devextreme-artifacts-renovation-${{ matrix.ARGS.inProgressRenovation == true }} - path: artifacts.zip - retention-days: 1 - - testcafe: - name: ${{ matrix.ARGS.name }} - needs: [build] - strategy: - fail-fast: false - matrix: - ARGS: [ - { componentFolder: "treeList", name: "treeList", quarantineMode: true }, - { componentFolder: "dataGrid", name: "dataGrid (1/3)", quarantineMode: true, indices: "1/3" }, - { componentFolder: "dataGrid", name: "dataGrid (2/3)", quarantineMode: true, indices: "2/3" }, - { componentFolder: "dataGrid", name: "dataGrid (3/3)", quarantineMode: true, indices: "3/3" }, - { componentFolder: "scheduler", name: "scheduler (1/5)", quarantineMode: true, indices: "1/5" }, - { componentFolder: "scheduler", name: "scheduler (2/5)", quarantineMode: true, indices: "2/5" }, - { componentFolder: "scheduler", name: "scheduler (3/5)", quarantineMode: true, indices: "3/5" }, - { componentFolder: "scheduler", name: "scheduler (4/5)", quarantineMode: true, indices: "4/5" }, - { componentFolder: "scheduler", name: "scheduler (5/5)", quarantineMode: true, indices: "5/5" }, - { componentFolder: "editors", name: "editors (1/3)", quarantineMode: false, indices: "1/3" }, - { componentFolder: "editors", name: "editors (2/3)", quarantineMode: false, indices: "2/3" }, - { componentFolder: "editors", name: "editors (3/3)", quarantineMode: false, indices: "3/3" }, - { componentFolder: "htmlEditor", name: "htmlEditor", quarantineMode: false }, - { componentFolder: "navigation", name: "navigation (1/4)", quarantineMode: false, indices: "1/4" }, - { componentFolder: "navigation", name: "navigation (2/4)", quarantineMode: false, indices: "2/4" }, - { componentFolder: "navigation", name: "navigation (3/4)", quarantineMode: false, indices: "3/4" }, - { componentFolder: "navigation", name: "navigation (4/4)", quarantineMode: false, indices: "4/4" }, - { componentFolder: "renovation", name: "renovation (jquery) (1/4)", platform: "jquery", quarantineMode: false, inProgressRenovation: true, indices: "1/4" }, - { componentFolder: "renovation", name: "renovation (jquery) (2/4)", platform: "jquery", quarantineMode: false, inProgressRenovation: true, indices: "2/4" }, - { componentFolder: "renovation", name: "renovation (jquery) (3/4)", platform: "jquery", quarantineMode: false, inProgressRenovation: true, indices: "3/4" }, - { componentFolder: "renovation", name: "renovation (jquery) (4/4)", platform: "jquery", quarantineMode: false, inProgressRenovation: true, indices: "4/4" }, - { componentFolder: "renovation", name: "renovation (react) (1/4)", platform: "react", quarantineMode: false, indices: "1/4" }, - { componentFolder: "renovation", name: "renovation (react) (2/4)", platform: "react", quarantineMode: false, indices: "2/4" }, - { componentFolder: "renovation", name: "renovation (react) (3/4)", platform: "react", quarantineMode: false, indices: "3/4" }, - { componentFolder: "renovation", name: "renovation (react) (4/4)", platform: "react", quarantineMode: false, indices: "4/4" }, - ] - runs-on: devextreme-shr2 - timeout-minutes: 90 - - steps: - - name: Get sources - uses: actions/checkout@v3 - - - uses: ./.github/actions/pin-browsers - - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: '15' - - - name: Restore npm cache - uses: actions/cache@v3 - with: - path: ./node_modules - key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node-modules - - - name: Run npm install - run: npm install --no-audit --no-fund - - - name: Download artifacts - uses: actions/download-artifact@v3 - with: - name: devextreme-artifacts-renovation-${{ matrix.ARGS.inProgressRenovation == true }} - - - name: Prepare localization - run: npx gulp localization - - - name: Unpack artifacts - run: 7z x artifacts.zip -aoa - - - name: Prepare renovation playground - if: matrix.ARGS.componentFolder == 'renovation' - run: | - pushd testing/renovation - npm install --no-audit --no-fund --legacy-peer-deps - popd - npm run build:react - npx gulp build-renovation-testing - - - name: Run TestCafe tests - run: | - [ "${{ matrix.ARGS.inProgressRenovation }}" == "true" ] && META_RENOVATION="--meta renovation" - [ "${{ matrix.ARGS.indices }}" != "" ] && INDICES="--indices ${{ matrix.ARGS.indices }}" - [ "${{ matrix.ARGS.platform }}" != "" ] && PLATFORM="--platform ${{ matrix.ARGS.platform }}" - export TESTCAFE_DASHBOARD_DEVEXTREME_LAYOUT_TESTING_ENABLED=true - export TESTCAFE_DASHBOARD_DEVEXTREME_TOKEN=eyJwcm9qZWN0SWQiOiI3MDEyMTgyZC1iMzliLTQyYWMtYjRlZC02YWY2MWMyZmQyNzgiLCJ0b2tlblNlY3JldCI6ImtUODN0QjU1dFdyeWJva2VsdlpDb051R3pzOFZOYzVuaDI4dXNFb3pFd2hPOUZDZlRVaXh5OXBvVC8wS3hDZFAwd05SKzlmVkk0WWh3dXl2ZkhtZDFudTE0MHJqdEUxVnByTlI4Z1RTRHJwZlRPN1dZZXNEUnovUDRTOFF1L3NPTWNjSXpzWno1Y0ZIY2xVSFZKTVVTRVIxVGtaRlgwZTlhUU5tRTBaY1FPTmVkenovREFseGQ4YVoxZnNkN2dSd2VFNjBhSjNueG1vOHNGbGJwazVsYmlvN2JoVy9VTnBvWSs1Q0tFcVFvQ0JSTHJFSlUybUNxNkdGbmhtbmxUTW9SRXpjWDBjUlMwMk41NWlTakNMMXRxdlpMajc4MnB6ZnFrRWo1d29UT0dLY3V1bThRaXE2L1FnaWR2MFV0VWFTaGZvVW9sazhTWFlXNGtxWVNSalR1QT09In0= - export TESTCAFE_DASHBOARD_DEVEXTREME_URL=https://devextreme.resolve.sh - export TESTCAFE_DASHBOARD_DEVEXTREME_BUILD_ID=${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }} - all_args="--concurrency 2 --browsers=chrome:devextreme-shr2 --componentFolder ${{ matrix.ARGS.componentFolder }} --quarantineMode ${{ matrix.ARGS.quarantineMode}} $META_RENOVATION $INDICES $PLATFORM" - echo "$all_args" - npm run test-testcafe -- $all_args - - - name: Copy compared screenshot artifacts - if: ${{ failure() }} - uses: actions/upload-artifact@v3 - with: - name: compared-screenshots - path: ${{ github.workspace }}/testing/testcafe/artifacts/compared-screenshots/**/* - if-no-files-found: ignore - - name: Copy failed test artifacts - if: ${{ failure() }} - uses: actions/upload-artifact@v3 - with: - name: failed-tests - path: ${{ github.workspace }}/testing/testcafe/artifacts/failedtests/**/* - if-no-files-found: ignore - - notify: - runs-on: devextreme-shr2 - name: Send notifications - needs: [build, testcafe] - if: always() && contains(needs.*.result, 'failure') - - steps: - - uses: actions/checkout@v3 - - uses: DevExpress/github-actions/send-teams-notification@main - with: - hook_url: ${{secrets.TEAMS_ALERT}} - bearer_token: ${{secrets.GITHUB_TOKEN}} - specific_repo: DevExpress/DevExtreme - specific_branch: 22_2 diff --git a/.github/workflows/themebuilder_tests.yml b/.github/workflows/themebuilder_tests.yml deleted file mode 100644 index ff06eb4b1f97..000000000000 --- a/.github/workflows/themebuilder_tests.yml +++ /dev/null @@ -1,65 +0,0 @@ -name: Themebuilder and Styles tests - -concurrency: - group: wf-${{github.event.pull_request.number || github.sha}}-${{github.workflow}} - cancel-in-progress: true - -on: - pull_request: - push: - branches: [22_2] - -jobs: - test: - runs-on: devextreme-shr2 - timeout-minutes: 30 - - steps: - - name: Get sources - uses: actions/checkout@v3 - - - name: Restore npm cache - uses: actions/cache@v3 - with: - path: ./node_modules - key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node-modules - - - name: Run npm install - run: npm install --no-audit --no-fund - - - name: Build etalon bundles - run: npx gulp style-compiler-themes-ci - - - name: Run npm install for themebuilder-scss - run: npm install --no-audit --no-fund - working-directory: ./themebuilder-scss - - - name: Build - run: npm run build - working-directory: ./themebuilder-scss - - - name: Run themebuilder tests (full set, node) - run: npm run test - working-directory: ./themebuilder-scss - - - name: Check styles for duplicate rules (generic) - run: npx stylelint --config testing/styles/bundles-stylelint-config.json "artifacts/**/dx.light.css" - - - name: Check styles for duplicate rules (material) - run: npx stylelint --config testing/styles/bundles-stylelint-config.json "artifacts/**/dx.material.blue.light.css" - - notify: - runs-on: devextreme-shr2 - name: Send notifications - needs: [test] - if: always() && contains(needs.*.result, 'failure') - - steps: - - uses: actions/checkout@v3 - - uses: DevExpress/github-actions/send-teams-notification@main - with: - hook_url: ${{secrets.TEAMS_ALERT}} - bearer_token: ${{secrets.GITHUB_TOKEN}} - specific_repo: DevExpress/DevExtreme - specific_branch: 22_2 diff --git a/.github/workflows/ts_declarations.yml b/.github/workflows/ts_declarations.yml deleted file mode 100644 index 84b11af91de2..000000000000 --- a/.github/workflows/ts_declarations.yml +++ /dev/null @@ -1,117 +0,0 @@ -name: TS Declarations - -concurrency: - group: wf-${{github.event.pull_request.number || github.sha}}-${{github.workflow}} - cancel-in-progress: true - -on: - pull_request: - push: - branches: [22_2] - -jobs: - check-ts-bundle: - runs-on: devextreme-shr2 - timeout-minutes: 60 - steps: - - name: Get sources - uses: actions/checkout@v3 - - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: '15' - - - name: Restore npm cache - uses: actions/cache@v3 - with: - path: ./node_modules - key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node-modules - - - name: Run npm install - run: npm install --no-audit --no-fund - - - name: Check dx.all.d.ts is up-to-date - run: | - target=./ts/dx.all.d.ts - cp $target $target.current - - npm run update-ts - - if ! diff $target.current $target -U 5 > $target.diff; then - echo "FAIL: $target is outdated:" - cat $target.diff | sed "1,2d" - echo "Execute 'npm run update-ts' to update dx.all.d.ts" - exit 1 - else - echo "TS is up-to-date" - fi - - validate-declarations: - runs-on: devextreme-shr2 - timeout-minutes: 60 - steps: - - name: Get sources - uses: actions/checkout@v3 - - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: '15' - - - name: Restore npm cache - uses: actions/cache@v3 - with: - path: ./node_modules - key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node-modules - - - name: Run npm install - run: npm install --no-audit --no-fund - - - name: Validate declarations - run: npm run validate-declarations - - check-ts-compilation: - runs-on: devextreme-shr2 - timeout-minutes: 60 - steps: - - name: Get sources - uses: actions/checkout@v3 - - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: '15' - - - name: Restore npm cache - uses: actions/cache@v3 - with: - path: ./node_modules - key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node-modules - - - name: Run npm install - run: npm install --no-audit --no-fund - - - name: Check sources compilation - run: npm run validate-ts - - - name: Check test cases - run: npm run test-typescript - - notify: - runs-on: devextreme-shr2 - name: Send notifications - needs: [check-ts-bundle, validate-declarations, check-ts-compilation] - if: always() && contains(needs.*.result, 'failure') - - steps: - - uses: actions/checkout@v3 - - uses: DevExpress/github-actions/send-teams-notification@main - with: - hook_url: ${{secrets.TEAMS_ALERT}} - bearer_token: ${{secrets.GITHUB_TOKEN}} - specific_repo: DevExpress/DevExtreme - specific_branch: 22_2