name: Node CI on: push: branches: - main pull_request: branches: - main jobs: skip_run: continue-on-error: true runs-on: ubuntu-latest outputs: should_skip: ${{ steps.skip_check.outputs.should_skip }} steps: - id: skip_check uses: fkirc/skip-duplicate-actions@master with: concurrent_skipping: 'never' skip_after_successful_duplicate: 'true' paths_ignore: '["README.md", "**/README.md", "docs/**"]' do_not_skip: '["workflow_dispatch", "schedule"]' changeset: needs: skip_run # allow skip_run to cancel this job if it’s not needed if: ${{ needs.skip_run.outputs.should_skip != 'true' }} name: Ensure changeset runs-on: ubuntu-latest steps: - name: Check out PR branch uses: actions/checkout@v2 - name: Check out main branch uses: actions/checkout@v2 with: ref: main - name: Set up Node.js 14.x uses: actions/setup-node@v2 with: node-version: 14.x - name: Install dependencies run: yarn --frozen-lockfile --ignore-engines env: CI: true - run: yarn changeset status --since=main test: needs: skip_run # allow skip_run to cancel this job if it’s not needed if: ${{ needs.skip_run.outputs.should_skip != 'true' }} runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest] node-version: [12.x, 14.x, 16.x] steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} - run: yarn --frozen-lockfile --ignore-engines env: CI: true - run: yarn build env: CI: true - run: yarn test env: CI: true # test-templates: # if: ${{ github.head_ref }} == "changeset-release/main" # only run on version PRs (this test is too slow to run every PR) # runs-on: ubuntu-latest # steps: # - uses: actions/checkout@v2 # - uses: actions/setup-node@v2 # with: # node-version: 14.x # - run: yarn --frozen-lockfile --ignore-engines # env: # CI: true # - run: yarn build # env: # CI: true # - run: yarn test:templates # env: # GITHUB_SHA: $GITHUB_SHA # CI: true