Skip to content

[ci] several more tweaks to compat check workflow #944

[ci] several more tweaks to compat check workflow

[ci] several more tweaks to compat check workflow #944

Workflow file for this run

name: PR
on:
pull_request:
types: [opened, synchronize]
jobs:
install:
name: Install
runs-on: ubuntu-latest
steps:
- name: Cancel Previous Runs
uses: styfle/[email protected]
with:
access_token: ${{ github.token }}
- name: Checkout Code
uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
cache: yarn
- name: Cache node modules
id: cache-modules
uses: actions/cache@v4
with:
path: |
**/node_modules
key: modules-${{ github.sha }}
- uses: actions/cache@v4
with:
path: |
~/.cache/Cypress
key: cypress-${{ runner.os }}-${{ hashFiles('yarn.lock') }}
- run: yarn install --frozen-lockfile --immutable
build:
name: Build
runs-on: ubuntu-latest
needs: [install]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- id: cache-modules
uses: actions/cache@v4
with:
path: |
**/node_modules
key: modules-${{ github.sha }}
- run: yarn build
- uses: actions/cache@v4
with:
key: build-${{ github.sha }}
path: ${{ env.BUILD-CACHE-LIST }}
cspell:
name: CSpell
runs-on: ubuntu-latest
needs: [install]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- id: cache-modules
uses: actions/cache@v4
with:
path: |
**/node_modules
key: modules-${{ github.sha }}
- run: yarn lint-cspell
prettier:
name: Prettier
runs-on: ubuntu-latest
needs: [install]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- id: cache-modules
uses: actions/cache@v4
with:
path: |
**/node_modules
key: modules-${{ github.sha }}
- run: yarn pretty-check
jest:
name: Jest Unit & Integration Tests
runs-on: ubuntu-latest
needs: [install]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- id: cache-modules
uses: actions/cache@v4
with:
path: |
**/node_modules
key: modules-${{ github.sha }}
- run: yarn test --coverage
- uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: coverage/lcov.info
fail_ci_if_error: true
verbose: true
vitest:
name: Vitest Unit Tests
runs-on: ubuntu-latest
needs: [build]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- id: cache-modules
uses: actions/cache@v4
with:
path: |
**/node_modules
key: modules-${{ github.sha }}
- uses: actions/cache@v4
with:
key: build-${{ github.sha }}
path: ${{ env.BUILD-CACHE-LIST }}
- run: yarn vitest
eslint:
name: ESLint
runs-on: ubuntu-latest
needs: [build]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- id: cache-modules
uses: actions/cache@v4
with:
path: |
**/node_modules
key: modules-${{ github.sha }}
- uses: actions/cache@v4
with:
key: build-${{ github.sha }}
path: ${{ env.BUILD-CACHE-LIST }}
- run: yarn eslint
e2e:
name: Cypress
runs-on: ubuntu-latest
needs: [build]
steps:
- uses: actions/checkout@v4
- id: cache-modules
uses: actions/cache@v4
with:
path: |
**/node_modules
key: modules-${{ github.sha }}
- uses: actions/cache@v4
with:
key: build-${{ github.sha }}
path: ${{ env.BUILD-CACHE-LIST }}
- uses: actions/cache@v4
with:
path: |
~/.cache/Cypress
key: cypress-${{ runner.os }}-${{ hashFiles('yarn.lock') }}
- name: Cypress run
uses: cypress-io/github-action@v6
with:
install: false
command: yarn e2e
- uses: actions/upload-artifact@v4
if: failure()
with:
name: cypress-screenshots
path: packages/graphiql/cypress/screenshots
if-no-files-found: ignore
- uses: actions/upload-artifact@v4
if: failure()
with:
name: cypress-videos
path: packages/graphiql/cypress/videos
if-no-files-found: ignore
canary:
name: Canary
runs-on: ubuntu-latest
# ensure the basic checks pass before running the canary
needs: [build, jest, eslint, vitest, e2e]
if: github.event.pull_request.head.repo.full_name == github.repository
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
- id: cache-modules
uses: actions/cache@v4
with:
path: |
**/node_modules
key: modules-${{ github.sha }}
- uses: actions/cache@v4
with:
key: build-${{ github.sha }}
path: ${{ env.BUILD-CACHE-LIST }}
- name: Setup NPM credentials
run: echo "//registry.npmjs.org/:_authToken=$NODE_AUTH_TOKEN" >> ~/.npmrc
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Release Canary
id: canary
uses: 'kamilkisiela/release-canary@master'
with:
npm-token: ${{ secrets.NPM_TOKEN }}
npm-script: 'yarn release:canary'
changesets: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Publish a message
if: steps.canary.outputs.released == 'true'
uses: 'dotansimha/pr-comment@master'
with:
commentKey: canary
message: |
The latest changes of this PR are available as canary in npm (based on the declared `changesets`):
```
${{ steps.canary.outputs.changesetsPublishedPackages}}
```
bot-token: ${{ secrets.GITHUB_TOKEN }}
bot: 'github-actions[bot]'
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Publish an empty message
if: steps.canary.outputs.released == 'false'
uses: 'dotansimha/pr-comment@master'
with:
commentKey: canary
message: |
The latest changes of this PR are not available as canary, since there are no linked `changesets` for this PR.
bot-token: ${{ secrets.GITHUB_TOKEN }}
bot: 'github-actions[bot]'
github-token: ${{ secrets.GITHUB_TOKEN }}
license-check:
name: Check Licenses
runs-on: ubuntu-latest
needs: [install]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- id: cache-modules
uses: actions/cache@v4
with:
path: |
**/node_modules
key: modules-${{ github.sha }}
- run: yarn install --frozen-lockfile --immutable
- name: License Check
run: yarn license-check
env:
BUILD-CACHE-LIST: |
packages/**/dist/**/*
packages/**/cjs/**/*
packages/**/esm/**/*
packages/**/types/**/*
packages/codemirror-graphql/*.js*
packages/codemirror-graphql/*.d.ts
packages/codemirror-graphql/cm6-legacy/**/*
packages/codemirror-graphql/results/**/*
packages/codemirror-graphql/variables/**/*
packages/codemirror-graphql/utils/**/*
!**/node_modules