name: UI Storybook on: push: branches: [master] pull_request: branches: [master] defaults: run: working-directory: packages/ui jobs: files-changed: name: Detect File Changes runs-on: ubuntu-latest outputs: ui: ${{ steps.changes.outputs.ui }} steps: - name: Checkout uses: actions/checkout@v6 - 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: name: Build Storybook if: needs.files-changed.outputs.ui == 'true' needs: files-changed runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v6 - name: Setup Node.js uses: actions/setup-node@v6 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 Storybook run: npm run storybook:build - name: Verify build output run: | echo "Checking Storybook build output..." if [ ! -d "storybook-static" ]; then echo "::error::storybook-static directory not found" exit 1 fi if [ ! -f "storybook-static/index.html" ]; then echo "::error::index.html not found in storybook-static" exit 1 fi echo "✓ Storybook build verified!" - name: Upload Storybook artifacts uses: actions/upload-artifact@v6 with: name: storybook-static path: packages/ui/storybook-static/ retention-days: 7