# 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: [master] pull_request: branches: [master] permissions: contents: read env: CI: true TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} TURBO_TEAM: ${{ secrets.TURBO_TEAM }} jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: [12, 14, 16, 18] 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' - name: Cache node_modules uses: actions/cache@v3 with: path: node_modules key: ${{ runner.os }}-${{ matrix.node-version }}-node_modules-${{ hashFiles('**/package-lock.json') }} # Cargo already skips downloading dependencies if they already exist - name: Cache cargo uses: actions/cache@v3 with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ key: ${{ runner.os }}-cargo-${{ hashFiles('./oxide/**/Cargo.lock') }} - name: Install dependencies run: npm install - name: Build Tailwind CSS run: npx turbo run oxide:build --filter=// - name: Test (default) run: npx turbo run test --filter=// - name: Test (oxide) run: OXIDE=1 npx turbo run test --filter=// lint: runs-on: ubuntu-latest strategy: matrix: node-version: [16] 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' - name: Cache node_modules uses: actions/cache@v3 with: path: node_modules key: ${{ runner.os }}-${{ matrix.node-version }}-node_modules-${{ hashFiles('**/package-lock.json') }} - name: Install dependencies run: npm install - name: Lint run: npx turbo run style --filter=//