GladysProject/Gladys

View on GitHub
.github/workflows/docker-master-test.yml

Summary

Maintainability
Test Coverage
name: Master branch tests

on:
  push:
    branches: [master]

jobs:
  test-front:
    name: Front test
    runs-on: ubuntu-22.04
    steps:
      - name: ⬇️ Checkout Gladys code
        uses: actions/checkout@v3
      - name: 💽 Setup nodejs
        uses: actions/setup-node@v3
        with:
          node-version-file: 'front/package.json'
          cache: 'npm'
          cache-dependency-path: '**/package-lock.json'
      - name: 📦 Install Global NPM Packages
        run: |
          sudo npm install typescript node-gyp npm@latest -g
      - name: 📦 Install NPM front packages
        working-directory: ./front
        run: |
          npm ci
      - name: 🧐 Prettier check
        working-directory: ./front
        run: |
          npm run prettier-check
      - name: 👕 ESlint
        working-directory: ./front
        run: |
          npm run eslint
      - name: 🌐 Integration comparison
        working-directory: ./front
        run: |
          npm run compare-translations
  build-front:
    name: Front build
    runs-on: ubuntu-22.04
    steps:
      - name: ⬇️ Checkout code
        uses: actions/checkout@v3
      - name: 💽 Setup nodejs
        uses: actions/setup-node@v3
        with:
          node-version-file: 'front/package.json'
          cache: 'npm'
          cache-dependency-path: '**/package-lock.json'
      - name: 📦 Install NPM front packages
        working-directory: ./front
        run: |
          npm ci
      - name: 🏗️ Build front
        working-directory: ./front
        run: |
          npm run build-with-stats
      - name: Upload bundle ci
        working-directory: ./front
        run: npx relative-ci-agent
        env:
          RELATIVE_CI_KEY: ${{ secrets.RELATIVE_CI_KEY }}
      - name: ↗️ Upload build artifact
        uses: actions/upload-artifact@v3
        with:
          name: static
          path: front/build
  test-server:
    name: Server test
    runs-on: ubuntu-22.04
    steps:
      - name: ⬇️ Checkout Gladys code
        uses: actions/checkout@v3
        with:
          fetch-depth: 2
      - name: 💽 Setup nodejs
        uses: actions/setup-node@v3
        with:
          node-version-file: 'server/package.json'
          cache: 'npm'
          cache-dependency-path: '**/package-lock.json'
      - name: 💽 Install System Dependencies
        run: |
          sudo apt update
          sudo apt-get install -y libudev-dev sqlite3 openssl python-is-python3
      - name: 📦 Install Global NPM Packages
        run: |
          sudo npm install typescript node-gyp npm@latest -g
      - name: 📦 Install NPM server packages
        working-directory: ./server
        run: |
          npm ci
      - name: 🧐 Prettier check
        working-directory: ./server
        run: |
          npm run prettier-check
      - name: 👕 ESlint
        working-directory: ./server
        run: |
          npm run eslint
      - name: ✅ Test with coverage
        working-directory: ./server
        run: |
          npm run coverage
      - name: 🔐 Dependencies security audit
        working-directory: ./server
        run: npm audit --production --audit-level=critical || true
      - name: 📄 Codecov report upload
        uses: codecov/codecov-action@v4
        with:
          fail_ci_if_error: true
          token: 08cd0d46-0291-42ed-b352-50924cb6cca6

          ## Yes, we are storing the CODECOV token in plain text here and not as a secret.
          ## This is because Codecov report upload keeps failing because of a Github Action rate limit
          ## And as we are an open source project, we need forks to be able to upload reports as well, so
          ## we followed the recommandatiom from CodeCov:
          ## https://community.codecov.com/t/upload-issues-unable-to-locate-build-via-github-actions-api/3954
          ## It's not that dangerous to do it, and it's the best tradeoff we could find