name: Milestone Worker

on:
  workflow_dispatch:
    inputs:
      milestoneVersion:
        description: "Milestone version (ex: '-M1')"
        required: true

env:
  MAVEN_THREADS: '-T 0.5C'

jobs:
  build:
    if: ${{ github.repository == 'spring-cloud/stream-applications' }}
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: spring-cloud-dataflow-apps-plugin
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-java@v3
      with:
        java-version: '8'
        distribution: 'liberica'
    - uses: jvalkeal/setup-maven@v1
      with:
        maven-version: 3.8.8
        maven-mirror: 'https://dlcdn.apache.org/maven/maven-3/'
    - uses: jfrog/setup-jfrog-cli@v1
      with:
        version: 1.46.4
      env:
        JF_ARTIFACTORY_SPRING: ${{ secrets.JF_ARTIFACTORY_SPRING }}
    - uses: actions/cache@v2
      with:
        path: ~/.m2/repository
        key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
        restore-keys: |
          ${{ runner.os }}-m2-
    - name: Configure JFrog Cli
      run: |
        jfrog rt mvnc \
          --server-id-resolve=repo.spring.io \
          --server-id-deploy=repo.spring.io \
          --repo-resolve-releases=libs-milestone \
          --repo-resolve-snapshots=libs-snapshot \
          --repo-deploy-releases=libs-milestone-local \
          --repo-deploy-snapshots=libs-snapshot-local
        echo JFROG_CLI_BUILD_NAME=spring-cloud-dataflow-apps-plugin-main-milestone >> $GITHUB_ENV
        echo JFROG_CLI_BUILD_NUMBER=$GITHUB_RUN_NUMBER >> $GITHUB_ENV
    - name: Build and Publish
      run: |
        jfrog rt mvn build-helper:parse-version versions:set \
          -gs settings.xml \
          -Pstagingmilestone \
          -DprocessAllModules=true \
          -DgenerateBackupPoms=false \
          -Dartifactory.publish.artifacts=false \
          -DnewVersion='${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}-'${milestoneVersion} \
          -B
        jfrog rt build-clean
        jfrog rt mvn -gs settings.xml -Pstagingmilestone,full,deploymentfiles -B install -DskipTests
        jfrog rt build-publish
        echo spring_cloud_dataflow_apps_plugin_version=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) >> $GITHUB_ENV
    - name: Tag Release
      uses: jvalkeal/build-zoo-handler@v0.0.4
      with:
        tag-release-branch: ${{ env.spring_cloud_dataflow_apps_plugin_version }}
        tag-release-tag: ${{ env.spring_cloud_dataflow_apps_plugin_version }}
        tag-release-tag-prefix: v
    - name: Clean cache
      run: |
        find ~/.m2/repository -type d -name '*SNAPSHOT' | xargs rm -fr
