Support tests to make esbuild bundles for changed demos #9
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: 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: Install DX packages | |
run: | | |
DX_VERSION=$(cat node_modules/devextreme/package.json | jq -r '.version') | |
DX_DIST_VERSION=$(cat node_modules/devextreme-dist/package.json | jq -r '.version') | |
DX_FRAMEWORK_VERSION=$(cat node_modules/devextreme-${{ matrix.FRAMEWORK }}/package.json | jq -r '.version') | |
jq ".dependencies += {\"devextreme\": \"$DX_VERSION\"}" package.json > package_temp.json && mv package_temp.json package.json | |
jq ".dependencies += {\"devextreme-dist\": \"$DX_DIST_VERSION\"}" package.json > package_temp.json && mv package_temp.json package.json | |
jq ".dependencies += {\"devextreme-${{ matrix.FRAMEWORK }}\": \"$DX_FRAMEWORK_VERSION\"}" package.json > package_temp.json && mv package_temp.json package.json | |
- name: Prepare JS | |
run: npm run prepare-js | |
- 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 }} | |
run: npm run esbuild-bundles-test |