binhonglee/GlobeTrotte

View on GitHub
.github/workflows/main.yml

Summary

Maintainability
Test Coverage
name: CI
on: [push, pull_request]
env:
  DISPLAY: :99

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Cache please
      id: cache-please
      uses: actions/cache@v1
      with:
        path: ~/.please
        key: ${{ hashfiles('**/.plzconfig') }}-please
    - name: Cache pnpm-store
      id: cache-pnpm-store
      uses: actions/cache@v1
      with:
        path: ~/.local/share/pnpm/store/v3
        key: ${{ hashfiles('**/package.json') }}-pnpm-store
    - name: Cache node_modules
      id: cache-node-modules
      uses: actions/cache@v1
      with:
        path: node_modules
        key: ${{ hashFiles('**/package.json') }}-pnpm
    - name: Use Node.js
      uses: actions/setup-node@v1
      with:
        node-version: '16.13.1'
    - name: Use Go
      uses: actions/setup-go@v2
      with:
        go-version: 1.15.x

    - run: ./scripts/setup.sh -g -s
    - run: ./pleasew go_mod
    - run: sudo npm i -g pnpm@7.1.6
    - run: cp config/test.kdl config/config.kdl

    - run: ./pleasew build --show_all_output //...
    - run: ./pleasew lint --show_all_output
    - run: git checkout third_party/go/BUILD
    - run: git checkout go.sum
    - run: git checkout pnpm-lock.yaml
      if: github.actor == 'renovate[bot]'

    - run: ./scripts/leftover.sh

    - name: Push commit
      uses: EndBug/add-and-commit@v9
      if: github.actor != 'renovate[bot]'
      with:
        message: 'Push changes into BUILD file'

  e2e:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres
        env:
          POSTGRES_USER: test
          POSTGRES_DB: test
          POSTGRES_PASSWORD: test
        ports:
          - 5432:5432
    steps:
    - uses: actions/checkout@v2
    - run: /usr/bin/Xvfb :99 -screen 0 1920x1080x24+32 &
    - name: Cache please
      id: cache-please
      uses: actions/cache@v1
      with:
        path: ~/.please
        key: ${{ hashFiles('**/.plzconfig') }}-please
    - name: Cache pnpm-store
      id: cache-pnpm-store
      uses: actions/cache@v1
      with:
        path: ~/.local/share/pnpm/store/v3
        key: ${{ hashFiles('**/package.json') }}-pnpm-store
    - name: Cache node_modules
      id: cache-node-modules
      uses: actions/cache@v1
      with:
        path: node_modules
        key: ${{ hashFiles('**/package.json') }}-pnpm
    - name: Use Node.js
      uses: actions/setup-node@v1
      with:
        node-version: '16.13.1'
    - name: Use Go
      uses: actions/setup-go@v2
      with:
        go-version: 1.15.x

    - run: sudo npm i -g pnpm@7.1.6
    # - run: ./scripts/setup.sh -g -s -n
    - run: pnpm i
    - run: ./pleasew go_mod
    - run: cp config/test.kdl config/config.kdl

    - run: ./pleasew build "//src/turbine:main"
    - run: ./pleasew run "//src/turbine:main" -- -toFile=true &
    - run: sleep 3
    - run: pnpm run -r preflight
    - run: pnpm run -r serve:plz &
    - run: sleep 3

    - run: pnpm run install_playwright 
    - run: pnpm run -r test:playwright

    - uses: actions/upload-artifact@v2
      with:
        name: logs
        path: logs
      if: ${{ always() }}
    - uses: actions/upload-artifact@v2
      with:
        name: playwright
        path: 'src/cockpit/playwright/'
      if: ${{ always() }}
    - uses: actions/upload-artifact@v2
      with:
        name: playwright-coverage
        path: 'src/cockpit/playwright_coverage/'
    # - uses: actions/upload-artifact@v2
    #   with:
    #     name: e2e-nyc-output
    #     path: '.nyc_output'
    #   if: ${{ always() }}

  turbine:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres
        env:
          POSTGRES_USER: test
          POSTGRES_DB: test
          POSTGRES_PASSWORD: test
        ports:
          - 5432:5432
    steps:
    - uses: actions/checkout@v2
    - name: Cache please
      id: cache-please
      uses: actions/cache@v1
      with:
        path: ~/.please
        key: ${{ hashfiles('**/.plzconfig') }}-please
    - name: Use Go
      uses: actions/setup-go@v2
      with:
        go-version: 1.15.x

    - run: ./scripts/setup.sh -g
    - run: cp config/test.kdl config/config.kdl
    - run: ./pleasew go_mod
    - run: ./pleasew cover --show_all_output //src/turbine/...
    - uses: actions/upload-artifact@v2
      with:
        name: turbine-output
        path: 'plz-out/log'
      if: ${{ always() }}

  cockpit:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Cache please
      id: cache-please
      uses: actions/cache@v1
      with:
        path: ~/.please
        key: ${{ hashfiles('**/.plzconfig') }}-please
    - name: Cache pnpm-store
      id: cache-pnpm-store
      uses: actions/cache@v1
      with:
        path: ~/.local/share/pnpm/store/v3
        key: ${{ hashfiles('**/package.json') }}-pnpm-store
    - name: Cache node_modules
      id: cache-node-modules
      uses: actions/cache@v1
      with:
        path: node_modules
        key: ${{ hashFiles('**/package.json') }}-pnpm
    - name: Use Node.js
      uses: actions/setup-node@v1
      with:
        node-version: '16.13.1'

    - run: sudo npm i -g pnpm@7.1.6
    - run: pnpm i
    - run: pnpm run test:vitest
    - run: ./pleasew test --show_all_output //src/cockpit:vue_tsc

    - uses: actions/upload-artifact@v2
      with:
        name: vitest-coverage
        path: 'src/cockpit/vitest_coverage/'
      if: ${{ always() }}

  coverage:
    needs: [cockpit, e2e, turbine]
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - run: sudo npm i -g pnpm@7.1.6
    - uses: actions/download-artifact@v2
      with:
        name: vitest-coverage
    - uses: actions/download-artifact@v2
      with:
        name: playwright-coverage
    # - uses: actions/download-artifact@v2
    #   with:
    #     name: e2e-nyc-output
    - uses: actions/download-artifact@v2
      with:
        name: turbine-output

    - uses: codecov/codecov-action@v1
      with:
        verbose: true