name: CI Pipeline for the Backend and Frontend on: pull_request: types: [opened, review_requested, synchronize] jobs: backend: if: "!contains(github.event.pull_request.labels.*.name, 'ops') && !contains(github.head_ref, 'ops/')" strategy: matrix: node: ["16", "17", "18", "20"] flavor: ["dev", "prod"] fail-fast: false runs-on: "ubuntu-latest" name: Backend (${{ matrix.flavor }}) - node ${{ matrix.node }} steps: - name: Checkout uses: actions/checkout@v3 with: path: ${{ matrix.node }}/${{ matrix.flavor }} - name: Setup Node uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} registry-url: "https://registry.npmjs.org" - name: Install 1.70.x Rust toolchain uses: dtolnay/rust-toolchain@1.70 - name: Install if: ${{ matrix.flavor == 'dev'}} run: npm ci working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/backend - name: Install (Prod dependencies only) if: ${{ matrix.flavor == 'prod'}} run: npm ci --omit=dev --omit=optional working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/backend - name: Lint if: ${{ matrix.flavor == 'dev'}} run: npm run lint working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/backend - name: Unit Tests if: ${{ matrix.flavor == 'dev'}} run: npm run test working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/backend - name: Build run: npm run build working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/backend frontend: if: "!contains(github.event.pull_request.labels.*.name, 'ops') && !contains(github.head_ref, 'ops/')" strategy: matrix: node: ["16", "17", "18", "20"] flavor: ["dev", "prod"] fail-fast: false runs-on: "ubuntu-latest" name: Frontend (${{ matrix.flavor }}) - node ${{ matrix.node }} steps: - name: Checkout uses: actions/checkout@v3 with: path: ${{ matrix.node }}/${{ matrix.flavor }} - name: Setup Node uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} registry-url: "https://registry.npmjs.org" - name: Install (Prod dependencies only) run: npm ci --omit=dev --omit=optional if: ${{ matrix.flavor == 'prod'}} working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/frontend - name: Install if: ${{ matrix.flavor == 'dev'}} run: npm ci working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/frontend - name: Lint if: ${{ matrix.flavor == 'dev'}} run: npm run lint working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/frontend # - name: Test # run: npm run test - name: Build run: npm run build working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/frontend env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}