#
# 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: Website PR validation

on:
  pull_request:
    branches:
      - master
      - branch-*
    paths:
      - 'site3/**'
      - '.github/workflows/website-pr-validation.yaml'
    workflow_dispatch:

jobs:
  website-pull-validation:
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      - name: Checkout
          uses: actions/checkout@v2

            - name: Set up JDK 11
              uses: actions/setup-java@v2
              with:
                distribution: 'temurin'
                java-version: 11

            - name: Setup NodeJS
              uses: actions/setup-node@v2
              with:
                node-version: '14'

            - name: Setup yarn
              run: npm install -g yarn

            - name: Build website
              run: |
                ./site3/website/scripts/build-website.sh
