#
# 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 Karaf Snapshot

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

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        java: [ '1.8' ]
    steps:
      - uses: actions/checkout@v2
        with:
          persist-credentials: false
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v1
        with:
          java-version: ${{ matrix.java }}
      - name: Cache Maven Repository
        uses: actions/cache@v1
        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@v2
      with:
        persist-credentials: false
    - name: Set up JDK 11
      uses: AdoptOpenJDK/install-jdk@v1
      with:
        version: '11'
    - name: Deploy to ASF Snapshots Repository
      run: ./mvnw -U -B -e -fae -V -Dnoassembly -Dmaven.compiler.fork=true -Pdeploy -Parchetypes-skip-tests -Dmaven.test.skip.exec=true -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 --no-transfer-progress clean deploy --settings .github/asf-deploy-settings.xml


