Include catalog dependency changes when checking for changed packages #1993
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
| # This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node | |
| # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions | |
| name: PR | |
| on: | |
| pull_request: | |
| branches: [main] | |
| push: | |
| branches: [main] | |
| concurrency: | |
| # For PRs, use the ref (branch) in the concurrency group so that new pushes cancel any old runs. | |
| # For pushes to main, ideally we wouldn't set a concurrency group, but github actions doesn't | |
| # support conditional blocks of settings, so we use the SHA so the "group" is unique. | |
| group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && github.sha || github.ref }} | |
| cancel-in-progress: true | |
| permissions: {} | |
| jobs: | |
| build: | |
| strategy: | |
| # Sometimes it can be helpful to see if a failure is specific to a particular environment | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-latest | |
| # npm 6 and 8 have slightly different behavior with verdaccio in publishing tests. | |
| # It's unclear if this translates to meaningful differences in behavior in actual scenarios, | |
| # but test against both versions to be safe. (Only do this on the ubuntu build for speed.) | |
| npm: 6 | |
| node: 14 | |
| # node 14/npm 8 on ubuntu and windows | |
| - os: ubuntu-latest | |
| npm: 8 | |
| node: 14 | |
| - os: windows-latest | |
| npm: 8 | |
| node: 14 | |
| # node 20/npm 11 on ubuntu and windows (can't use 22 for reasons described in release.yml) | |
| - os: ubuntu-latest | |
| npm: 11 | |
| node: 20 | |
| - os: windows-latest | |
| npm: 11 | |
| node: 20 | |
| name: build (${{ matrix.os }}, node ${{ matrix.node }}, npm ${{ matrix.npm }}) | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - run: git --version | |
| - name: Check out code | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 | |
| - name: Install Node.js ${{ matrix.node }} | |
| uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 | |
| with: | |
| cache: yarn | |
| node-version: ${{ matrix.node }} | |
| # Guarantee a predictable version of npm for the first round of tests | |
| - name: Install npm@${{ matrix.npm }} | |
| run: npm install --global npm@${{ matrix.npm }} | |
| - run: yarn --frozen-lockfile | |
| - run: yarn build --verbose | |
| - run: yarn checkchange --verbose | |
| - run: yarn format:check | |
| if: matrix.os == 'ubuntu-latest' && matrix.node == 14 && matrix.npm == 8 | |
| - run: yarn lint:ci | |
| if: matrix.os == 'ubuntu-latest' && matrix.node == 14 && matrix.npm == 8 | |
| - run: yarn test --verbose | |
| id: test | |
| # See packageManager.ts comments... | |
| - name: test publish (Windows bash) | |
| if: matrix.os == 'windows-latest' | |
| shell: bash | |
| run: yarn workspace beachball test packagePublish | |
| # For a few specific test failures, it can be helpful to see npm debug logs | |
| # (usually not relevant, but there's not a good way to distinguish by specific failure) | |
| - name: (on test failure) Get npm cache path | |
| if: failure() && steps.test.outcome == 'failure' | |
| shell: bash | |
| run: echo "NPM_CACHE_DIR=$(npm config get cache)" >> "$GITHUB_ENV" | |
| - name: (on test failure) Upload npm logs as artifact | |
| if: failure() && steps.test.outcome == 'failure' | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 | |
| with: | |
| name: npm-logs-${{ matrix.os }}-node${{ matrix.node }}-npm${{ matrix.npm }} | |
| path: ${{ env.NPM_CACHE_DIR }}/_logs | |
| retention-days: 3 | |
| # The docs have a separate installation using Node 22 due to needing newer dependencies | |
| docs: | |
| name: build docs | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out code | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 | |
| - name: Install Node.js | |
| uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 | |
| with: | |
| cache: yarn | |
| node-version-file: ./docs/.nvmrc | |
| - run: yarn --immutable | |
| working-directory: ./docs | |
| - run: yarn docs:build | |
| working-directory: ./docs |