Repository navigation
feat(tile-converter): select nested meshes and add v5 convert CLI #9265
This file contains hidden or 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: test | |
| # On every pull request, but only on push to master | |
| on: | |
| push: | |
| branches: | |
| - master | |
| pull_request: | |
| schedule: | |
| - cron: '17 5 * * *' | |
| workflow_dispatch: | |
| # New revisions replace older PR runs; master and scheduled runs keep their own group. | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.run_id }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| jobs: | |
| tile-converter-tests: | |
| name: Tile converter tests | |
| needs: build | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 20 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v7 | |
| - name: Setup Node (with Corepack) | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: 24 | |
| - name: Enable Corepack / Yarn 4 | |
| run: | | |
| corepack enable | |
| corepack prepare yarn@4.17.1 --activate | |
| yarn -v | |
| - name: Cache Yarn 4 artifacts | |
| uses: actions/cache@v6 | |
| with: | |
| path: | | |
| ~/.yarn/berry/cache | |
| key: yarn-berry-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('yarn.lock') }} | |
| restore-keys: | | |
| yarn-berry-${{ runner.os }}-${{ runner.arch }}- | |
| - name: Install dependencies | |
| run: yarn install --immutable | |
| - name: Download package and worker build | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: package-build | |
| path: ${{ runner.temp }}/package-build | |
| - name: Restore package and worker build | |
| run: tar -xf "$RUNNER_TEMP/package-build/package-build.tar" | |
| - name: Run tile-converter tests | |
| run: yarn test-tile-converter | |
| test: | |
| name: Tests (Node ${{ matrix.node-version }} - ${{ matrix.scope }}) | |
| needs: build | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 15 | |
| strategy: | |
| matrix: | |
| include: | |
| - node-version: 26 | |
| coverage: false | |
| coverage-flag: '' | |
| playwright: false | |
| scope: 'node tests' | |
| test-command: test-node | |
| test-arguments: '' | |
| profile-name: node-26 | |
| - node-version: 24 | |
| coverage: true | |
| coverage-flag: node | |
| playwright: false | |
| scope: 'node tests' | |
| test-command: test-node-cover | |
| test-arguments: '--reporter=blob --outputFile.blob=.vitest-reports/blob-node.json' | |
| profile-name: node-24 | |
| - node-version: 24 | |
| coverage: true | |
| coverage-flag: headless-1 | |
| playwright: true | |
| scope: 'headless tests 1/2' | |
| test-command: test-headless-cover | |
| test-arguments: '--maxWorkers=1 --shard=1/2 --reporter=blob --outputFile.blob=.vitest-reports/blob-headless-1.json' | |
| profile-name: headless-1 | |
| - node-version: 24 | |
| coverage: true | |
| coverage-flag: headless-2 | |
| playwright: true | |
| scope: 'headless tests 2/2' | |
| test-command: test-headless-cover | |
| test-arguments: '--maxWorkers=1 --shard=2/2 --reporter=blob --outputFile.blob=.vitest-reports/blob-headless-2.json' | |
| profile-name: headless-2 | |
| - node-version: 22 | |
| coverage: false | |
| coverage-flag: '' | |
| playwright: false | |
| scope: 'node tests' | |
| test-command: test-node | |
| test-arguments: '' | |
| profile-name: node-22 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v7 | |
| - name: Setup Node (with Corepack) | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| - name: Enable Corepack / Yarn 4 | |
| run: | | |
| corepack enable | |
| corepack prepare yarn@4.17.1 --activate | |
| yarn -v | |
| - name: Cache Yarn 4 artifacts | |
| id: yarn-cache | |
| uses: actions/cache@v6 | |
| with: | |
| path: | | |
| ~/.yarn/berry/cache | |
| key: yarn-berry-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('yarn.lock') }} | |
| restore-keys: | | |
| yarn-berry-${{ runner.os }}-${{ runner.arch }}- | |
| - name: Print versions | |
| run: | | |
| node -v | |
| yarn -v | |
| node -p "process.versions" | |
| - name: Install dependencies | |
| run: yarn install --immutable | |
| - name: Download package and worker build | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: package-build | |
| path: ${{ runner.temp }}/package-build | |
| - name: Restore package and worker build | |
| run: tar -xf "$RUNNER_TEMP/package-build/package-build.tar" | |
| - name: Install Playwright browser dependencies | |
| if: matrix.playwright | |
| run: yarn playwright install --with-deps chromium | |
| - name: Run tests | |
| env: | |
| LOADERS_GL_TEST_PROFILE_OUTPUT: test-results/${{ matrix.profile-name }}.json | |
| run: | | |
| yarn run ${{ matrix.test-command }} ${{ matrix.test-arguments }} --reporter=default --reporter=./scripts/test-profile-reporter.mjs | |
| - name: Upload coverage blob | |
| if: matrix.coverage | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: coverage-blob-${{ matrix.coverage-flag }} | |
| path: .vitest-reports/ | |
| include-hidden-files: true | |
| if-no-files-found: error | |
| - name: Upload test profile | |
| if: always() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: test-profile-${{ matrix.profile-name }} | |
| path: test-results/${{ matrix.profile-name }}.json | |
| if-no-files-found: warn | |
| coverage-finished: | |
| name: Merge and check coverage | |
| needs: [test, slow-tests] | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v7 | |
| - name: Setup Node (with Corepack) | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: 24 | |
| - name: Enable Corepack / Yarn 4 | |
| run: | | |
| corepack enable | |
| corepack prepare yarn@4.17.1 --activate | |
| - name: Cache Yarn 4 artifacts | |
| uses: actions/cache@v6 | |
| with: | |
| path: | | |
| ~/.yarn/berry/cache | |
| key: yarn-berry-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('yarn.lock') }} | |
| restore-keys: | | |
| yarn-berry-${{ runner.os }}-${{ runner.arch }}- | |
| - name: Install dependencies | |
| run: yarn install --immutable | |
| - name: Download browser coverage blobs | |
| uses: actions/download-artifact@v4 | |
| with: | |
| pattern: coverage-blob-headless-* | |
| path: .vitest-reports/browser | |
| merge-multiple: true | |
| - name: Download all coverage blobs | |
| uses: actions/download-artifact@v4 | |
| with: | |
| pattern: coverage-blob-* | |
| path: .vitest-reports/all | |
| merge-multiple: true | |
| - name: Merge browser and Node coverage | |
| run: yarn vitest --config vitest.config.ts --merge-reports=.vitest-reports/all --coverage --coverage.reportsDirectory=coverage | |
| - name: Merge browser coverage | |
| run: yarn vitest --config vitest.config.ts --merge-reports=.vitest-reports/browser --coverage --coverage.reportsDirectory=coverage/browser | |
| - name: Enforce per-package coverage ratchets | |
| run: yarn test-coverage-check | |
| - name: Publish package coverage summary | |
| if: always() | |
| run: yarn test-coverage-summary | |
| - name: Sanitize lcov for Coveralls | |
| run: node ./scripts/sanitize-lcov.mjs coverage/lcov.info | |
| - name: Upload coverage to Coveralls | |
| uses: coverallsapp/github-action@648a8eb78e6d50909eff900e4ec85cab4524a45b # v2.3.6 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| file: coverage/lcov.info | |
| format: lcov | |
| fail-on-error: false | |
| - name: Upload merged coverage | |
| if: always() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: merged-coverage | |
| path: | | |
| coverage/ | |
| test-results/coverage-check.json | |
| test-results/coverage-summary.md | |
| if-no-files-found: warn | |
| slow-tests: | |
| name: Affected hermetic slow tests | |
| needs: build | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v7 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup Node (with Corepack) | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: 24 | |
| - name: Enable Corepack / Yarn 4 | |
| run: | | |
| corepack enable | |
| corepack prepare yarn@4.17.1 --activate | |
| - name: Cache Yarn 4 artifacts | |
| uses: actions/cache@v6 | |
| with: | |
| path: | | |
| ~/.yarn/berry/cache | |
| key: yarn-berry-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('yarn.lock') }} | |
| restore-keys: | | |
| yarn-berry-${{ runner.os }}-${{ runner.arch }}- | |
| - name: Install dependencies | |
| run: yarn install --immutable | |
| - name: Download package and worker build | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: package-build | |
| path: ${{ runner.temp }}/package-build | |
| - name: Restore package and worker build | |
| run: tar -xf "$RUNNER_TEMP/package-build/package-build.tar" | |
| - name: Install Playwright browser dependencies | |
| run: yarn playwright install --with-deps chromium | |
| - name: Run full slow suite for comparable coverage | |
| env: | |
| VITEST_MAX_WORKERS: 1 | |
| run: >- | |
| yarn test-slow-affected-cover | |
| --all | |
| --reporter=default | |
| --reporter=blob | |
| --outputFile.blob=.vitest-reports/blob-slow.json | |
| --coverage.reporter=json | |
| - name: Upload slow coverage blob | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: coverage-blob-slow | |
| path: .vitest-reports/ | |
| include-hidden-files: true | |
| if-no-files-found: warn | |
| external-tests: | |
| name: External service smoke tests | |
| if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' | |
| needs: build | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 20 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v7 | |
| - name: Setup Node (with Corepack) | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: 24 | |
| - name: Enable Corepack / Yarn 4 | |
| run: | | |
| corepack enable | |
| corepack prepare yarn@4.17.1 --activate | |
| - name: Cache Yarn 4 artifacts | |
| uses: actions/cache@v6 | |
| with: | |
| path: | | |
| ~/.yarn/berry/cache | |
| key: yarn-berry-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('yarn.lock') }} | |
| restore-keys: | | |
| yarn-berry-${{ runner.os }}-${{ runner.arch }}- | |
| - name: Install dependencies | |
| run: yarn install --immutable | |
| - name: Download package and worker build | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: package-build | |
| path: ${{ runner.temp }}/package-build | |
| - name: Restore package and worker build | |
| run: tar -xf "$RUNNER_TEMP/package-build/package-build.tar" | |
| - name: Install Playwright browser dependencies | |
| run: yarn playwright install --with-deps chromium | |
| - name: Run external smoke suite | |
| env: | |
| VITEST_MAX_WORKERS: 1 | |
| run: yarn test-external | |
| build: | |
| name: Build | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 15 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v7 | |
| - name: Setup Node (with Corepack) | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: 24 | |
| - name: Enable Corepack / Yarn 4 | |
| run: | | |
| corepack enable | |
| corepack prepare yarn@4.17.1 --activate | |
| yarn -v | |
| - name: Cache Yarn 4 artifacts | |
| id: yarn-cache | |
| uses: actions/cache@v6 | |
| with: | |
| path: | | |
| ~/.yarn/berry/cache | |
| key: yarn-berry-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('yarn.lock') }} | |
| restore-keys: | | |
| yarn-berry-${{ runner.os }}-${{ runner.arch }}- | |
| - name: Cache Nx build artifacts | |
| uses: actions/cache@v6 | |
| with: | |
| path: .nx/cache | |
| key: nx-build-${{ runner.os }}-${{ runner.arch }}-${{ github.sha }} | |
| restore-keys: | | |
| nx-build-${{ runner.os }}-${{ runner.arch }}- | |
| - name: Print versions | |
| run: | | |
| node -v | |
| yarn -v | |
| node -p "process.versions" | |
| - name: Install dependencies | |
| run: yarn install --immutable | |
| - name: Run Vitest async guardrails | |
| run: yarn run test-vitest-async-guardrails | |
| - name: Run test-suite audit | |
| run: yarn run test-audit | |
| - name: Build | |
| run: yarn run build | |
| - name: Build workers | |
| run: yarn run build-workers | |
| # A tar preserves paths and permissions across jobs, including copied runtime libraries. | |
| - name: Archive package and worker build | |
| run: | | |
| find modules apps -mindepth 2 -maxdepth 2 -type d -name dist -print0 | | |
| tar --null -T - -cf "$RUNNER_TEMP/package-build.tar" | |
| - name: Upload package and worker build | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: package-build | |
| path: ${{ runner.temp }}/package-build.tar | |
| retention-days: 7 | |
| overwrite: true | |
| if-no-files-found: error | |
| - name: Run lint | |
| run: yarn run lint | |
| website-build: | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 15 | |
| strategy: | |
| matrix: | |
| node-version: [22] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v7 | |
| - name: Setup Node (with Corepack) | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| - name: Enable Corepack / Yarn 4 | |
| run: | | |
| corepack enable | |
| corepack prepare yarn@4.17.1 --activate | |
| yarn -v | |
| - name: Cache website Yarn artifacts | |
| id: website-yarn-cache | |
| uses: actions/cache@v6 | |
| with: | |
| path: | | |
| ~/.yarn/berry/cache | |
| key: yarn-berry-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('yarn.lock') }} | |
| restore-keys: | | |
| yarn-berry-${{ runner.os }}-${{ runner.arch }}- | |
| - name: Install dependencies | |
| run: yarn install --immutable | |
| - name: Build website | |
| run: | | |
| cd website; yarn build |