This repository has been archived by the owner on May 26, 2023. It is now read-only.
Initial exclusion of false positive secrets #8
Workflow file for this run
This file contains 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
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 }} |