name: functionnal-tests

on:
  push:
    branches-ignore: [ main, dev ]
  pull_request:
    branches-ignore: [ main, dev ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
      - name: build engine
        run: |
          export PATH=$GITHUB_WORKSPACE/bin:$PATH
          export RUSTC_WRAPPER=$GITHUB_WORKSPACE/bin/sccache
          export SCCACHE_REDIS=${{ secrets.SCCACHE_REDIS }}
          mkdir -p $GITHUB_WORKSPACE/bin
          sccache_release=$(curl --silent "https://github.com/Qovery/sccache-bin/releases/latest" | sed -r 's/^.+tag\/(.+)">.+/\1/')
          curl -sLo $GITHUB_WORKSPACE/bin/sccache https://github.com/Qovery/sccache-bin/releases/download/${sccache_release}/sccache
          chmod 755 $GITHUB_WORKSPACE/bin/sccache
          echo "########## SHARED CACHE STATUS ##########"
          sccache --version
          sccache --show-stats
          echo "########## START BUILD ##########"
          cargo build --release --all-features
          sccache --show-stats
  functionnal-tests:
    runs-on: ubuntu-latest
    if: github.event.pull_request.draft == false
    needs: build
    steps:
      - uses: actions/checkout@v1
      - name: Run a multi-line script
        timeout-minutes: 60
        env:
          GITLAB_PROJECT_ID: ${{ secrets.GITLAB_PROJECT_ID }}
          GITLAB_TOKEN: ${{ secrets.GITLAB_TOKEN }}
          GITLAB_PERSONAL_TOKEN: ${{ secrets.GITLAB_PERSONAL_TOKEN }}
        run: |
          branch=$(echo ${{github.ref}} | sed -r 's/^refs\/heads\/(.+)/\1/')
          echo "Branch name: $branch"
          export GITHUB_BRANCH=$branch
          export GITHUB_COMMIT_ID=$GITHUB_SHA
          gh_json=$(curl -s -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/Qovery/engine/pulls?state=open")
          gh_pr=$(echo $gh_json | jq --compact-output '.[] | {labels, ref: .head.ref}' | grep "$branch")
          echo "Pull request info: $(echo $gh_pr)"
          num_labels=$(echo $gh_pr | jq '.labels | length')
          tests_type="fast_tests"
          if [ $num_labels -gt 0 ] ; then
            if [ $(echo $gh_pr | grep -c 'full-tests') -eq 1 ] ; then
              tests_type="full_tests"
            fi
          fi
          echo $tests_type
          ./helper.sh $tests_type