mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2026-02-15 09:12:39 +00:00
122 lines
2.9 KiB
YAML
122 lines
2.9 KiB
YAML
name: UI Compatibility
|
|
|
|
on:
|
|
push:
|
|
branches: [master]
|
|
pull_request:
|
|
branches: [master]
|
|
|
|
jobs:
|
|
files-changed:
|
|
name: Detect File Changes
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
ui: ${{ steps.changes.outputs.ui }}
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Check for file changes
|
|
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
|
id: changes
|
|
with:
|
|
token: ${{ github.token }}
|
|
filters: .github/file-filters.yml
|
|
|
|
build-library:
|
|
name: Build Library
|
|
if: needs.files-changed.outputs.ui == 'true'
|
|
needs: files-changed
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: packages/ui
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: 'packages/ui/.tool-versions'
|
|
cache: 'npm'
|
|
cache-dependency-path: packages/ui/package-lock.json
|
|
|
|
- name: Install dependencies
|
|
run: npm ci
|
|
|
|
- name: Build library
|
|
run: npm run build
|
|
|
|
- name: Upload build artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ui-dist
|
|
path: packages/ui/dist/
|
|
retention-days: 1
|
|
|
|
test-compatibility:
|
|
name: Test Compatibility
|
|
if: needs.files-changed.outputs.ui == 'true'
|
|
needs: [files-changed, build-library]
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
example:
|
|
- vue3-tailwind
|
|
- vue3-css
|
|
- vue2-tailwind
|
|
- vue2-css
|
|
defaults:
|
|
run:
|
|
working-directory: packages/ui/examples/${{ matrix.example }}
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Download build artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: ui-dist
|
|
path: packages/ui/dist/
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: 'packages/ui/.tool-versions'
|
|
cache: 'npm'
|
|
cache-dependency-path: packages/ui/examples/${{ matrix.example }}/package-lock.json
|
|
|
|
- name: Install dependencies
|
|
run: npm install
|
|
|
|
- name: Lint
|
|
run: npm run lint
|
|
|
|
- name: Run tests
|
|
run: npm test
|
|
|
|
- name: Build example app
|
|
run: npm run build
|
|
|
|
compatibility-result:
|
|
name: Compatibility Result
|
|
if: always()
|
|
needs: [files-changed, test-compatibility]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Skip if no UI changes
|
|
if: needs.files-changed.outputs.ui != 'true'
|
|
run: echo "No UI changes detected, skipping."
|
|
|
|
- name: Check matrix results
|
|
if: needs.files-changed.outputs.ui == 'true'
|
|
run: |
|
|
if [ "${{ needs.test-compatibility.result }}" != "success" ]; then
|
|
echo "Compatibility tests failed"
|
|
exit 1
|
|
fi
|