Skip to content

Support tests to make esbuild bundles for changed demos #6

Support tests to make esbuild bundles for changed demos

Support tests to make esbuild bundles for changed demos #6

Workflow file for this run

name: ESbuild Tests
concurrency:
group: wf-${{github.event.pull_request.number || github.sha}}-${{github.workflow}}
cancel-in-progress: true
on:
pull_request:
push:
branches:
- "[0-9][0-9]_[0-9]"
workflow_dispatch:
schedule:
- cron: '0 * * * 6,0'
jobs:
build:
runs-on: ubuntu-latest
name: Build DevExtreme
timeout-minutes: 30
steps:
#Git
- name: Get sources
uses: actions/checkout@v3
- name: Clone devextreme repo from PR author fork
continue-on-error: true
if: github.event_name == 'pull_request'
run: git clone -b ${{github.event.pull_request.head.ref}} https://github.com/${{github.event.pull_request.user.login}}/devextreme ./devextreme-repo
- name: Clone devextreme repo
run: |
BASE_BRANCH=$(node -p -e "require('./package.json').version.slice(0, 4).replace('.', '_')")
test -d ./devextreme-repo || git clone -b $BASE_BRANCH https://github.com/devexpress/devextreme ./devextreme-repo
#Build Devextreme
- name: DevExtreme - Restore npm cache
uses: actions/cache@v3
with:
path: 'devextreme-repo/**/node_modules'
key: ${{ runner.os }}-devextreme-node-modules-${{ hashFiles('devextreme-repo/**/package-lock.json') }}
- name: Use Node.js 18
uses: actions/setup-node@v3
with:
node-version: '18.16.1'
- name: DevExtreme - Install packages
working-directory: ./devextreme-repo
run: npm install --no-audit --no-fund
- name: DevExtreme - Build
working-directory: ./devextreme-repo/packages/devextreme
run: npm run build-npm-devextreme
- name: DevExtreme - Pack
working-directory: ./devextreme-repo/packages/devextreme/artifacts/npm/devextreme
run: npm pack
- name: DevExtreme dist - Pack
working-directory: ./devextreme-repo/packages/devextreme/artifacts/npm/devextreme-dist
run: npm pack
#Build Demos
- name: Demos - 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: Delete DX packages
run: sed -i '/23.2-next/d' ./package.json
- name: Demos - Install packages
run: |
npm install --no-audit --no-fund
- name: Demos - Install devextreme package
run: npm install $(find ./devextreme-repo/packages/devextreme/artifacts/npm/devextreme/ -maxdepth 1 -name "devextreme-*.tgz")
- name: Demos - Install devextreme-dist package
run: npm install $(find ./devextreme-repo/packages/devextreme/artifacts/npm/devextreme-dist/ -maxdepth 1 -name "devextreme-*.tgz")
#Publish artifacts
- name: Zip node_modules
run: 7z a -t7z -mx3 -mmt2 node_modules.7z node_modules
- name: Copy build artifacts
uses: actions/upload-artifact@v3
with:
name: devextreme-sources
path: node_modules.7z
retention-days: 1
esbuild:
needs: build
strategy:
fail-fast: false
matrix:
FRAMEWORK: [React, Vue]
runs-on: ubuntu-latest
name: ${{ matrix.FRAMEWORK }}
timeout-minutes: 60
steps:
# - name: Pin Chrome version
# run: |
# CHROME_VERSION=117.0.5938.92
# wget "https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_${CHROME_VERSION}-1_amd64.deb"
# sudo dpkg -i "google-chrome-stable_${CHROME_VERSION}-1_amd64.deb"
- name: Get sources
uses: actions/checkout@v3
- name: Delete DX packages
run: sed -i '/23.2-next/d' ./package.json
- name: Download devextreme sources
uses: actions/download-artifact@v3
with:
name: devextreme-sources
- name: Unpack artifacts
run: 7z x node_modules.7z
# - name: Prepare JS
# run: npm run prepare-js
# - name: Update bundles config
# run: npx gulp update-config
# - name: Run Web Server
# run: |
# python -m http.server 8080 &
# python -m http.server 8081 &
# python -m http.server 8082 &
# python -m http.server 8083 &
- name: Get changed files
uses: ./.github/actions/get-changed-files
if: github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'force all tests')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
path: changed-files.json
- name: Run prepare metadata
run: npm run make-demos-bundle -- --copy-metadata
- name: Run esbuild bundler tests
env:
CHANGEDFILEINFOSPATH: ${{ github.workspace }}/changed-files.json
FRAMEWORK: ${{ matrix.FRAMEWORK }}
CI_ENV: true # The `ignore` field in the visualtestrc.json should be disabled when running test locally
run: npm run esbuild-bundles-test
- name: Copy changed-files artifacts
# if: ${{ failure() }}
uses: actions/upload-artifact@v3
with:
name: changed-files.json
path: ${{ github.workspace }}/changed-files.json
if-no-files-found: ignore
# - name: Get screenshots artifacts name
# if: ${{ failure() }}
# id: screenshotname
# run: echo "value=$(echo "${{ matrix.CONSTEL }}" | grep -oP "^\w+")" >> $GITHUB_OUTPUT
# - name: Copy screenshots artifacts
# if: ${{ failure() }}
# uses: actions/upload-artifact@v3
# with:
# name: screenshots-${{ steps.screenshotname.outputs.value }}
# path: ${{ github.workspace }}/testing/artifacts/compared-screenshots/*
# if-no-files-found: ignore