#
# 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: Deploy Camel Kafka Connector Snapshot

env:
  MAVEN_ARGS: -V -ntp -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.httpconnectionManager.ttlSeconds=120

on:
  schedule:
    # Run at 1 during night
    - cron:  '0 1 * * *'
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        java: [ '11' ]
    steps:
      - uses: actions/checkout@v3.4.0
      - name: Set up JDK ${{ matrix.java }}
        uses: AdoptOpenJDK/install-jdk@v1
        with:
          version: ${{ matrix.java }}
      - name: Cache Maven Repository
        uses: actions/cache@v3
        with:
          path: ~/.m2
          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
          restore-keys: ${{ runner.os }}-m2

  deploy:
    runs-on: ubuntu-latest
    needs: build
    if: github.ref == 'refs/heads/main'
    env:
      NEXUS_DEPLOY_USERNAME: ${{ secrets.NEXUS_USER }}
      NEXUS_DEPLOY_PASSWORD: ${{ secrets.NEXUS_PW }}
    steps:
    - uses: actions/checkout@v3.4.0
    - name: Set up JDK 11
      uses: AdoptOpenJDK/install-jdk@v1
      with:
        version: '11'
    - name: Deploy to ASF Snapshots Repository
      run: |
        ./mvnw ${MAVEN_ARGS} \
        -U -B -e -fae -Dnoassembly -Dmaven.compiler.fork=true -Pdeploy -Dmaven.test.skip.exec=true \
        --settings .github/asf-deploy-settings.xml \
        clean deploy


