INTO-CPS-Association/DTaaS

View on GitHub
.github/workflows/runner.yml

Summary

Maintainability
Test Coverage
name: Digital twin runner

on:
  push:
    paths:
      - 'servers/execution/**'
  pull_request:
    paths:
      - 'servers/execution/**'
  workflow_dispatch:

jobs:
  test-runner:
    name: Test digital twin runner
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: servers/execution/runner/

    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 linting and formatting checks on runner
        run: |
          npm install -g prettier
          yarn install
          yarn syntax
          prettier -c --ignore-path ../.gitignore "**/*.{ts,tsx,css,scss}"

      - name: Build the runner
        if: success() || failure()
        run: |
          yarn build

      - name: Run tests
        if: success() || failure()
        run: |
          yarn test

      - name: Upload test coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          files: servers/execution/runner/coverage/clover.xml
          flags: dt-runner

  publish-package:

    if: | 
      github.event_name == 'push' &&
      (startsWith(github.ref, 'refs/heads/feature/') || startsWith(github.ref, 'refs/heads/release-v'))

    name: Publish to GitHub Packages
    runs-on: ubuntu-latest
    needs: test-runner
    permissions:
      packages: write
      contents: read

    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"
          always-auth: true
          registry-url: 'https://npm.pkg.github.com/'

      - name: Publish npm package
        run: |
          # copy README.md to project root
          cp servers/execution/runner/README.md .
          cd servers/execution/runner
          yarn install
          yarn build
          yarn publish --access public
        env:
          NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}