mirror of
https://github.com/smogon/pokemon-showdown.git
synced 2026-04-13 21:16:30 -05:00
Previous implementation only fetched the latest changes made in the current branch. Since the CI pipeline only triggers on the latest pushed commit, this means linting errors could previously be avoided due to having multiple commits in a single push.
81 lines
2.3 KiB
YAML
81 lines
2.3 KiB
YAML
# This workflow will do an 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: Node.js CI
|
|
|
|
on:
|
|
push:
|
|
branches: [ master ]
|
|
pull_request:
|
|
branches: [ master ]
|
|
workflow_call:
|
|
|
|
jobs:
|
|
build:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
node-version: [16.x]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 100 # assumes PR/push to master is no larger than 100 commits. Other solutions are needlessly complex.
|
|
|
|
- name: Use Node.js ${{ matrix.node-version }}
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ matrix.node-version }}
|
|
cache: 'npm'
|
|
|
|
- run: npm ci
|
|
|
|
- name: Determine which files to lint (if pull request)
|
|
if: ${{ github.event_name == 'pull_request' }}
|
|
id: changed-files
|
|
uses: tj-actions/changed-files@v35
|
|
with:
|
|
files: |
|
|
./config/*.ts
|
|
./data/**/*.ts
|
|
./lib/*.ts
|
|
./server/**/*.ts
|
|
./server/**/*.tsx
|
|
./sim/**/*.ts
|
|
./tools/set-import/*.ts
|
|
files_ignore: |
|
|
./logs/
|
|
./node_modules/
|
|
./dist/
|
|
./data/**/learnsets.ts
|
|
./tools/set-import/importer.js
|
|
./tools/set-import/sets
|
|
./tools/modlog/converter.js
|
|
./server/global-variables.d.ts
|
|
|
|
- name: Determine whether test/sim or test/random-battles need to run (if pull request)
|
|
if: ${{ github.event_name == 'pull_request' }}
|
|
id: changed-directories
|
|
uses: tj-actions/changed-files@v35
|
|
with:
|
|
files: |
|
|
config/formats.ts
|
|
data/**
|
|
sim/**
|
|
|
|
- name: Run selective lint & neccessary tests (if pull request)
|
|
if: ${{ github.event_name == 'pull_request' }}
|
|
run: npm run full-test-ci
|
|
env:
|
|
CI: true
|
|
FILES: ${{ steps.changed-files.outputs.all_changed_and_modified_files }}
|
|
SKIPSIMTESTS: ${{ steps.changed-directories.outputs.all_changed_and_modified_files == '' }}
|
|
|
|
- name: Run full lint & test (if push to master)
|
|
run: npm run full-test
|
|
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
|
|
env:
|
|
CI: true
|