# 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: Apache Yetus

on: [push, pull_request]  # yamllint disable-line rule:truthy

permissions:
  statuses: write
  checks: write

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
      - name: checkout
        uses: actions/checkout@v3
        with:
          path: src
          fetch-depth: 0
      - name: maven cache
        uses: actions/cache@v3
        with:
          path: ~/.m2
          key: yetus-m2-${{ hashFiles('**/pom.xml') }}
      - name: test-patch
        run: >-
          "${GITHUB_WORKSPACE}/src/precommit/src/main/shell/test-patch.sh"
          --archive-list="checkstyle-errors.xml,spotbugsXml.xml"
          --basedir="${GITHUB_WORKSPACE}/src"
          --brief-report-file="${GITHUB_WORKSPACE}/out/brief.txt"
          --bugcomments=console,briefreport,github,htmlout,junit
          --console-report-file="${GITHUB_WORKSPACE}/out/console.txt"
          --docker
          --docker-cache-from=ghcr.io/apache/yetus-base:main
          --github-token="${{ secrets.GITHUB_TOKEN }}"
          --html-report-file="${GITHUB_WORKSPACE}/out/report.html"
          --java-home=/usr/lib/jvm/java-11-openjdk-amd64
          --junit-report-xml="${GITHUB_WORKSPACE}/out/junit-report.xml"
          --patch-dir="${GITHUB_WORKSPACE}/out"
          --plugins=all
          --proclimit=2000
          --project=yetus
          --spotbugs-home=/opt/spotbugs
          --tests-filter=checkstyle,javadoc,rubocop,test4tests
      - name: Artifact output
        if: ${{ always() }}
        uses: actions/upload-artifact@v3
        with:
          name: apacheyetuspatchdir
          path: ${{ github.workspace }}/out
