name: Tests on: [push, pull_request] jobs: changes: name: Detect changes runs-on: ubuntu-latest outputs: packages: ${{ steps.filter.outputs.changes }} steps: - name: Checkout repository uses: actions/checkout@v3 - uses: dorny/paths-filter@v2 id: filter with: filters: | shared: &shared - '!(packages)**' '@discordjs/actions': - *shared - 'packages/actions' '@discordjs/builders': - *shared - 'packages/builders' '@discordjs/collection': - *shared - 'packages/collection' 'discord.js': - 'packages/discord.js' '@discordjs/docgen': - *shared - 'packages/docgen' '@discordjs/proxy': - *shared - 'packages/proxy' '@discordjs/proxy-container': - *shared - 'packages/proxy-container' '@discordjs/rest': - *shared - 'packages/rest' '@discordjs/scripts': - *shared - 'packages/scripts' '@discordjs/voice': - *shared - 'packages/voice' '@discordjs/website': - *shared - 'packages/website' '@discordjs/ws': - *shared - 'packages/ws' tests: name: Tests needs: changes strategy: matrix: package: ${{ fromJSON(needs.changes.outputs.packages) }} exclude: - package: shared runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Install node.js v16 uses: actions/setup-node@v3 with: node-version: 16 cache: 'yarn' - name: Install dependencies run: yarn install --immutable - name: Build dependencies run: | yarn workspace @discordjs/docgen build yarn workspaces foreach --parallel --topological --recursive --from ${{ matrix.package }} build - name: ESLint run: yarn workspace ${{ matrix.package }} lint - name: Tests run: yarn workspace ${{ matrix.package }} test - name: Upload Coverage uses: ./packages/actions/src/uploadCoverage if: github.repository_owner == 'discordjs'