Skip to content
This repository has been archived by the owner on May 26, 2023. It is now read-only.

Add Gitleaks allowlist file #7

Add Gitleaks allowlist file

Add Gitleaks allowlist file #7

Workflow file for this run

name: CI
on: [push, pull_request]
env:
NODE_VERSION_USED_FOR_DEVELOPMENT: 17
jobs:
lint:
name: Lint source files
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
cache: npm
node-version: ${{ env.NODE_VERSION_USED_FOR_DEVELOPMENT }}
- name: Install Dependencies
run: npm ci --ignore-scripts
- name: Lint ESLint
run: npm run lint
- name: Check Types
run: npm run check
- name: Lint Prettier
run: npm run prettier:check
- name: Spellcheck
run: npm run check:spelling
checkForCommonlyIgnoredFiles:
name: Check for commonly ignored files
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Check if commit contains files that should be ignored
run: |
git clone --depth 1 https://github.com/github/gitignore.git &&
cat gitignore/Node.gitignore $(find gitignore/Global -name "*.gitignore" | grep -v ModelSim) > all.gitignore &&
if [[ "$(git ls-files -iX all.gitignore)" != "" ]]; then
echo "::error::Please remove these files:"
git ls-files -iX all.gitignore
exit 1
fi
checkPackageLock:
name: Check health of package-lock.json file
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
cache: npm
node-version: ${{ env.NODE_VERSION_USED_FOR_DEVELOPMENT }}
- name: Run npm install
run: npm install --ignore-scripts --engine-strict --strict-peer-deps
- name: Check that package-lock.json is in sync with package.json
run: git diff --exit-code package-lock.json
- name: Run npm dedupe
run: npm dedupe
- name: Check that package-lock.json doesn't contain unnecessary duplicates
run: git diff --exit-code package-lock.json
- name: Check that package-lock.json doesn't have conflicts
run: npm ls --depth 999
integrationTests:
name: Run integration tests
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ env.NODE_VERSION_USED_FOR_DEVELOPMENT }}
# We install bunch of packages during integration tests without locking them
# so we skip cache action to not pollute cache for other jobs.
- name: Install Dependencies
run: npm ci --ignore-scripts
- name: Run Integration Tests
run: npm run check:integrations
fuzz:
name: Run fuzzing tests
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
cache: npm
node-version: ${{ env.NODE_VERSION_USED_FOR_DEVELOPMENT }}
- name: Install Dependencies
run: npm ci --ignore-scripts
- name: Run Tests
run: npm run fuzzonly
coverage:
name: Measure test coverage
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
cache: npm
node-version: ${{ env.NODE_VERSION_USED_FOR_DEVELOPMENT }}
- name: Install Dependencies
run: npm ci --ignore-scripts
- name: Run tests and measure code coverage
run: npm run testonly:cover
- name: Upload coverage to Codecov
if: ${{ always() }}
uses: codecov/codecov-action@v1
with:
file: ./coverage/coverage-final.json
fail_ci_if_error: true
test:
name: Run tests on Node v${{ matrix.node_version_to_setup }}
runs-on: ubuntu-latest
strategy:
matrix:
node_version_to_setup: [12, 14, 16, 17]
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Setup Node.js v${{ matrix.node_version_to_setup }}
uses: actions/setup-node@v2
with:
cache: npm
node-version: ${{ matrix.node_version_to_setup }}
- name: Install Dependencies
run: npm ci --ignore-scripts
- name: Run Tests
run: npm run testonly
benchmark:
name: Run benchmark
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v2
with:
fetch-depth: 2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
cache: npm
node-version: ${{ env.NODE_VERSION_USED_FOR_DEVELOPMENT }}
- name: Install Dependencies
run: npm ci --ignore-scripts
- name: Run Benchmark
run: 'npm run benchmark -- --revs HEAD HEAD~1'
diff-npm-package:
name: Diff content of NPM package
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v2
with:
fetch-depth: 2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
cache: npm
node-version: ${{ env.NODE_VERSION_USED_FOR_DEVELOPMENT }}
- name: Install Dependencies
run: npm ci --ignore-scripts
- name: Generate report
run: 'node resources/diff-npm-package.js $BASE_COMMIT HEAD'
env:
BASE_COMMIT: ${{ github.event.pull_request.base.sha || 'HEAD~1' }}
- name: Upload generated report
uses: actions/upload-artifact@v2
with:
name: npm-dist-diff.html
path: ./npm-dist-diff.html
if-no-files-found: ignore
deploy-to-npm-branch:
name: Deploy to `npm` branch
runs-on: ubuntu-latest
if: |
github.event_name == 'push' &&
github.repository == 'graphql/graphql-js' &&
github.ref == 'refs/heads/main'
needs: [test, fuzz, lint, checkForCommonlyIgnoredFiles, integrationTests]
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
cache: npm
node-version: ${{ env.NODE_VERSION_USED_FOR_DEVELOPMENT }}
- name: Install Dependencies
run: npm ci --ignore-scripts
- name: Build NPM package
run: npm run build:npm
- name: Deploy to `npm` branch
run: npm run gitpublish:npm
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
deploy-to-deno-branch:
name: Deploy to `deno` branch
runs-on: ubuntu-latest
if: |
github.event_name == 'push' &&
github.repository == 'graphql/graphql-js' &&
github.ref == 'refs/heads/main'
needs: [test, fuzz, lint, checkForCommonlyIgnoredFiles, integrationTests]
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
cache: npm
node-version: ${{ env.NODE_VERSION_USED_FOR_DEVELOPMENT }}
- name: Install Dependencies
run: npm ci --ignore-scripts
- name: Build Deno package
run: npm run build:deno
- name: Deploy to `deno` branch
run: npm run gitpublish:deno
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}