name: Check-in tests

on:
  push:
    branches:
      - 'main'
      - 'releases-**'
  pull_request:
  workflow_dispatch:

env:
 BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
 EXCLUDE_ENTERPRISE: true

jobs:

  ci-ubuntu-server:
    runs-on: ubuntu-20.04

    strategy:
      matrix:
        db:
          - sqlite
          - mysql
          - mariadb
          - postgres

    steps:
    - name: Checkout
      uses: actions/checkout@v3
      with:
        path: "focalboard"
    - name: Set up Go
      uses: actions/setup-go@v3
      with:
        go-version: 1.21

    - name: "Test server: ${{matrix['db']}}"
      run: cd focalboard; make server-test-${{matrix['db']}}

  ci-ubuntu-webapp:
    runs-on: ubuntu-20.04
    steps:
    - name: Checkout
      uses: actions/checkout@v3
      with:
        path: "focalboard"
    - name: npm ci
      run: |
        cd focalboard/webapp && npm ci && cd -
        cd focalboard/mattermost-plugin/webapp && npm ci

    - name: Set up Go
      uses: actions/setup-go@v3
      with:
        go-version: 1.21

    - name: Setup Node
      uses: actions/setup-node@v3
      with:
        node-version: 20.11.0

    - name: Build Linux server
      run: cd focalboard; make server-linux-package

    - name: Copy server binary for Cypress
      run: cp focalboard/bin/linux/focalboard-server focalboard/bin/

    - name: Upload server package
      uses: actions/upload-artifact@v1
      with:
        name: focalboard-server-linux-amd64.tar.gz
        path: ${{ github.workspace }}/focalboard/dist/focalboard-server-linux-amd64.tar.gz

    - name: Lint & test webapp
      run: cd focalboard; make webapp-ci

  ci-windows-server:
    runs-on: windows-2022

    strategy:
      matrix:
        db:
          - sqlite

    steps:
    - name: Checkout
      uses: actions/checkout@v3
      with:
        path: "focalboard"

    - name: Set up Go
      uses: actions/setup-go@v3
      with:
        go-version: 1.21

    - name: "Test server (minimum): ${{matrix['db']}}"
      run: cd focalboard; make server-test-mini-${{matrix['db']}}

  ci-mac-server:
    runs-on: macos-11

    strategy:
      matrix:
        db:
          - sqlite

    steps:
    - name: Checkout
      uses: actions/checkout@v3
      with:
        path: "focalboard"

    - name: Set up Go
      uses: actions/setup-go@v3
      with:
        go-version: 1.21

    - name: "Test server (minimum): ${{matrix['db']}}"
      run: cd focalboard; make server-test-mini-${{matrix['db']}}
