# This workflow will do a clean 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: [ main, 1.x ] pull_request: workflow_dispatch: jobs: build-and-lint: runs-on: ubuntu-latest strategy: matrix: node-version: [14.x] steps: - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} cache: 'npm' - run: npm install -g npm@7 - run: npm ci - run: npm run build - run: npm run lint unit: runs-on: ubuntu-latest strategy: matrix: node-version: [12.x, 14.x, 16.x] steps: - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} cache: 'npm' cache-dependency-path: '**/package-lock.json' - run: npm install -g npm@7 - run: npm ci - run: npm run build - run: npm test integration: runs-on: ubuntu-latest strategy: matrix: node-version: [12.x, 14.x, 16.x] services: rippled: image: natenichols/rippled-standalone:latest ports: - 6006:6006 options: --health-cmd="wget localhost:6006 || exit 1" --health-interval=5s --health-retries=10 --health-timeout=2s steps: - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} cache: 'npm' cache-dependency-path: '**/package-lock.json' - run: npm install -g npm@7 - run: npm ci - run: npm run build - run: npm run test:integration env: HOST: localhost PORT: ${{ job.services.rippled.ports['6006'] }} browser: runs-on: ubuntu-latest strategy: matrix: node-version: [14.x] # This just needs to be compatible w/ puppeteer services: rippled: image: natenichols/rippled-standalone:latest ports: - 6006:6006 options: --health-cmd="wget localhost:6006 || exit 1" --health-interval=5s --health-retries=10 --health-timeout=2s steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} cache: 'npm' cache-dependency-path: '**/package-lock.json' - run: npm install -g npm@7 - run: npm ci - run: npm run build - run: npm run test:browser