# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: Playground PreCommit

on:
  workflow_dispatch:
  pull_request_target:
    paths:
      - .github/workflows/beam_Playground_Precommit.yml
      - playground/backend/**
  schedule:
    - cron: '10 2/6 * * *'

env:
  DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
  GRADLE_ENTERPRISE_CACHE_USERNAME: ${{ secrets.GE_CACHE_USERNAME }}
  GRADLE_ENTERPRISE_CACHE_PASSWORD: ${{ secrets.GE_CACHE_PASSWORD }}

jobs:
  beam_Playground_PreCommit:
    if: |
      github.event_name == 'workflow_dispatch' ||
      github.event_name == 'pull_request_target' ||
      github.event.comment.body == 'Run Playground PreCommit'
    name: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
    runs-on: [self-hosted, ubuntu-20.04, main]
    strategy:
      fail-fast: false
      matrix:
        job_name: [beam_Playground_PreCommit]
        job_phrase: [Run Playground PreCommit]
    env:
      DATASTORE_EMULATOR_VERSION: '423.0.0'
      PYTHON_VERSION: '3.10'
      JAVA_VERSION: '11'
    steps:
      - uses: actions/checkout@v4
      - name: Setup repository
        uses: ./.github/actions/setup-action
        with:
          comment_phrase: ${{ matrix.job_phrase }}
          github_token: ${{ secrets.GITHUB_TOKEN }}
          github_job: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
      - name: Setup environment
        uses: ./.github/actions/setup-environment-action
        with:
          java-version: '${{ env.JAVA_VERSION }}'
          python-version: '${{ env.PYTHON_VERSION }}'

      - name: Add GOPATH/bin to PATH
        run: echo "PATH=$PATH:$(go env GOPATH)/bin" >> $GITHUB_ENV

      - name: Install sbt for running SCIO tests
        run: |
          sudo apt-get update --yes
          sudo apt-get install apt-transport-https curl gnupg -yqq
          echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.list
          echo "deb https://repo.scala-sbt.org/scalasbt/debian /" | sudo tee /etc/apt/sources.list.d/sbt_old.list
          curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | sudo -H gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/scalasbt-release.gpg --import
          sudo chmod 644 /etc/apt/trusted.gpg.d/scalasbt-release.gpg
          sudo apt-get update --yes
          sudo apt-get install sbt --yes
          sudo wget https://codeload.github.com/spotify/scio.g8/zip/7c1ba7c1651dfd70976028842e721da4107c0d6d -O scio.g8.zip && unzip scio.g8.zip && sudo mv scio.g8-7c1ba7c1651dfd70976028842e721da4107c0d6d /opt/scio.g8
      - name: Set up Cloud SDK and its components
        uses: google-github-actions/setup-gcloud@v3
        with:
          install_components: 'beta,cloud-datastore-emulator'
          version: '${{ env.DATASTORE_EMULATOR_VERSION }}'
      - name: Run PreCommit
        run: ./gradlew playground:backend:precommit
