INTO-CPS-Association/DTaaS

View on GitHub
.github/workflows/client.yml

Summary

Maintainability
Test Coverage
name: React website

on:
  push:
    paths:
      - 'client/**'
  pull_request:
    paths:
      - 'client/**'
  workflow_dispatch:
    paths:
      - 'client/**'

jobs:
  client:
    name: Test react website
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup node
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: "yarn"
          cache-dependency-path: "**/yarn.lock"

      - name: Run the linting checks
        run: |
          cd client/    
          yarn install    
          yarn syntax
      - name: Build the React SPA website
        run: |
          cd client/    
          yarn install    
          yarn build
      - name: Run client unit and integration tests
        run: |
          cd client/    
          yarn install    
          yarn config:test
          yarn test:int
          yarn test:unit

      - name: Upload unit and integration test coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          files: client/coverage/clover.xml
          flags: client-unit-integration-tests

  get_version:
    name: Get version
    runs-on: ubuntu-latest
    steps:
        - name: Checkout Repository
          uses: actions/checkout@v4
        - name: Install jq
          run: sudo apt-get install -y jq
        - name: get version
          id: get_version
          run: | 
            version=`cat ./client/package.json | jq -r '.version'`
            echo "version=$version" >> $GITHUB_OUTPUT
    outputs:
      version: ${{ steps.get_version.outputs.version }}

  publish-docker-image:
    if: | 
      github.event_name == 'push' &&
      (startsWith(github.ref, 'refs/heads/feature/') || startsWith(github.ref, 'refs/heads/release-v'))
      
    name: Publish Docker image
    needs: [client, get_version]
    uses: ./.github/workflows/docker.yml
    with: 
      registry: ghcr.io
      image-name: into-cps-association/dtaas-web
      version: ${{ needs.get_version.outputs.version }}
      dockerfile: client.dockerfile