#
# 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: build

on:
  push:
    branches:
      - "2.x"
      - "release/*"
    paths-ignore:
      - "**.adoc"
      - "**.md"
      - "**.txt"
  pull_request:
    paths-ignore:
      - "**.adoc"
      - "**.md"
      - "**.txt"

permissions: read-all

jobs:

  build:
    if: github.actor != 'dependabot[bot]'
    uses: apache/logging-parent/.github/workflows/build-reusable.yaml@rel/11.0.0
    with:
      java-version: |
        8
        17
      site-enabled: true

  deploy-snapshot:
    needs: build
    if: github.repository == 'apache/logging-log4j2' && github.ref_name == '2.x'
    uses: apache/logging-parent/.github/workflows/deploy-snapshot-reusable.yaml@rel/11.0.0
    # Secrets for deployments
    secrets:
      NEXUS_USERNAME: ${{ secrets.NEXUS_USER }}
      NEXUS_PASSWORD: ${{ secrets.NEXUS_PW }}
    with:
      java-version: |
        8
        17

  deploy-release:
    needs: build
    if: github.repository == 'apache/logging-log4j2' && startsWith(github.ref_name, 'release/')
    uses: apache/logging-parent/.github/workflows/deploy-release-reusable.yaml@rel/11.0.0
    # Secrets for deployments
    secrets:
      GPG_SECRET_KEY: ${{ secrets.LOGGING_GPG_SECRET_KEY }}
      NEXUS_USERNAME: ${{ secrets.LOGGING_STAGE_DEPLOYER_USER }}
      NEXUS_PASSWORD: ${{ secrets.LOGGING_STAGE_DEPLOYER_PW }}
      SVN_USERNAME: ${{ secrets.LOGGING_SVN_DEV_USERNAME }}
      SVN_PASSWORD: ${{ secrets.LOGGING_SVN_DEV_PASSWORD }}
    # Write permissions to allow the Maven `revision` property update, changelog release, etc.
    permissions:
      contents: write
    with:
      java-version: |
        8
        17
      project-id: log4j
