mirror of
https://github.com/smogon/pokemon-showdown.git
synced 2026-03-21 17:25:10 -05:00
89 lines
2.9 KiB
YAML
89 lines
2.9 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:
|
|
# Testing multiple Node versions makes CI take forever, and basically
|
|
# never actually finds anything we care about. Testing one is enough.
|
|
#
|
|
# This number should be left at the oldest Node LTS version capable of
|
|
# running Node without errors (it doesn't matter if it's unsupported).
|
|
# Please freely bump this version (and the check in `pokemon-showdown`
|
|
# and `server/index.ts`) if you want to use features from newer versions;
|
|
# this is purely for our own reference, not to constrain programmers.
|
|
node-version: ['18.x']
|
|
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
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@v6
|
|
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@v47
|
|
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@v47
|
|
with:
|
|
files: |
|
|
config/formats.ts
|
|
data/**
|
|
sim/**
|
|
|
|
- name: Run selective lint & necessary 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
|