|
5 | 5 | types: [opened, synchronize, reopened] |
6 | 6 |
|
7 | 7 | jobs: |
8 | | - run-tests: |
| 8 | + # Emit one matrix leg per plugin (any packages/* dir with a `test` script) so the list |
| 9 | + # stays in sync with the workspace with no hard-coded package list. |
| 10 | + discover: |
9 | 11 | runs-on: ubuntu-latest |
| 12 | + outputs: |
| 13 | + packages: ${{ steps.set.outputs.packages }} |
| 14 | + steps: |
| 15 | + - name: Checkout code |
| 16 | + uses: actions/checkout@v4 |
| 17 | + |
| 18 | + - name: Discover plugin packages |
| 19 | + id: set |
| 20 | + run: | |
| 21 | + packages=$(node -e ' |
| 22 | + const fs = require("fs"); |
| 23 | + const out = []; |
| 24 | + for (const d of fs.readdirSync("packages")) { |
| 25 | + const f = "packages/" + d + "/package.json"; |
| 26 | + if (!fs.existsSync(f)) continue; |
| 27 | + const p = JSON.parse(fs.readFileSync(f, "utf8")); |
| 28 | + if (!(p.scripts || {}).test) continue; |
| 29 | + out.push(d); |
| 30 | + } |
| 31 | + process.stdout.write(JSON.stringify(out)); |
| 32 | + ') |
| 33 | + echo "packages=$packages" >> "$GITHUB_OUTPUT" |
| 34 | + echo "Discovered packages: $packages" |
| 35 | +
|
| 36 | + # One check per package (fail-fast: false) so a failure is attributed to a package at a glance. |
| 37 | + test: |
| 38 | + needs: discover |
| 39 | + runs-on: ubuntu-latest |
| 40 | + strategy: |
| 41 | + fail-fast: false |
| 42 | + matrix: |
| 43 | + package: ${{ fromJson(needs.discover.outputs.packages) }} |
| 44 | + name: test (${{ matrix.package }}) |
10 | 45 | steps: |
11 | 46 | - name: Checkout code |
12 | 47 | uses: actions/checkout@v4 |
13 | 48 |
|
14 | 49 | - name: Setup pnpm |
15 | 50 | uses: pnpm/action-setup@v4 |
16 | 51 | with: |
17 | | - version: 10.28.0 # or your local pnpm version |
| 52 | + version: 10.28.0 |
18 | 53 |
|
19 | 54 | - name: Set up Node.js |
20 | 55 | uses: actions/setup-node@v4 |
21 | 56 | with: |
22 | 57 | node-version: '22.x' |
23 | | - cache: 'pnpm' # optional but recommended |
| 58 | + cache: 'pnpm' |
24 | 59 |
|
25 | | - - name: Prune pnpm store |
26 | | - run: pnpm store prune |
27 | 60 | - name: Install Dependencies |
28 | 61 | run: pnpm install --no-frozen-lockfile |
29 | 62 |
|
30 | | - - name: Build all plugins |
31 | | - run: | |
32 | | - NODE_ENV=PREPACK_MODE pnpm -r --sort run build |
33 | | -
|
34 | | - - name: Run tests for Contentstack Import Plugin |
35 | | - working-directory: ./packages/contentstack-import |
36 | | - run: npm run test:unit |
37 | | - |
38 | | - - name: Run tests for Contentstack Export Plugin |
39 | | - working-directory: ./packages/contentstack-export |
40 | | - run: npm run test:unit |
41 | | - |
42 | | - - name: Run tests for Audit plugin |
43 | | - working-directory: ./packages/contentstack-audit |
44 | | - run: npm run test:unit |
45 | | - |
46 | | - - name: Run tests for Contentstack Migration |
47 | | - working-directory: ./packages/contentstack-migration |
48 | | - run: npm run test |
49 | | - |
50 | | - - name: Run tests for Contentstack Export To CSV |
51 | | - working-directory: ./packages/contentstack-export-to-csv |
52 | | - run: npm run test:unit |
53 | | - |
54 | | - - name: Run tests for Contentstack Bootstrap |
55 | | - working-directory: ./packages/contentstack-bootstrap |
56 | | - run: npm run test |
57 | | - |
58 | | - - name: Run tests for Contentstack Branches |
59 | | - working-directory: ./packages/contentstack-branches |
60 | | - run: npm run test:unit |
61 | | - |
62 | | - - name: Run tests for Contentstack Query Export |
63 | | - working-directory: ./packages/contentstack-query-export |
64 | | - run: npm run test:unit |
65 | | - |
66 | | - - name: Run tests for Contentstack Apps CLI |
67 | | - working-directory: ./packages/contentstack-apps-cli |
68 | | - run: npm run test:unit:report |
69 | | - |
70 | | - - name: Run tests for Contentstack Content Type plugin |
71 | | - working-directory: ./packages/contentstack-content-type |
72 | | - run: npm run test:unit |
73 | | - |
74 | | - - name: Run tests for Contentstack Regex Validate plugin |
75 | | - working-directory: ./packages/contentstack-cli-cm-regex-validate |
76 | | - run: npm run test:unit |
77 | | - |
78 | | - - name: Run tests for Contentstack Migrate RTE |
79 | | - working-directory: ./packages/contentstack-migrate-rte |
80 | | - run: npm test |
81 | | - |
82 | | - - name: Run tests for Contentstack Bulk Operations |
83 | | - working-directory: ./packages/contentstack-bulk-operations |
84 | | - run: npm test |
85 | | - |
86 | | - - name: Run tests for Contentstack Variants |
87 | | - working-directory: ./packages/contentstack-variants |
88 | | - run: npm run test |
89 | | - |
90 | | - - name: Run tests for Contentstack Asset Management |
91 | | - working-directory: ./packages/contentstack-asset-management |
92 | | - run: npm run test:unit |
93 | | - |
94 | | - - name: Run tests for Contentstack Clone |
95 | | - working-directory: ./packages/contentstack-clone |
96 | | - run: npm run test:unit |
97 | | - |
98 | | - # - name: Run tests for Contentstack External Migrate |
99 | | - # working-directory: ./packages/contentstack-external-migrate |
100 | | - # run: npm test |
| 63 | + - name: Build ${{ matrix.package }} and its dependencies |
| 64 | + run: NODE_ENV=PREPACK_MODE pnpm --filter "./packages/${{ matrix.package }}..." --sort run build |
101 | 65 |
|
| 66 | + - name: Run ${{ matrix.package }} tests |
| 67 | + run: pnpm --filter "./packages/${{ matrix.package }}" run test |
0 commit comments