# 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: [18.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