diff --git a/.github/workflows/bindings_java.yml b/.github/workflows/bindings_java.yml index 07bc9271ed91..fbcfd42e8ac0 100644 --- a/.github/workflows/bindings_java.yml +++ b/.github/workflows/bindings_java.yml @@ -30,6 +30,8 @@ on: - "core/**" - "bindings/java/**" - ".github/workflows/bindings_java.yml" + schedule: + - cron: '30 1 * * 1' workflow_dispatch: concurrency: @@ -67,3 +69,127 @@ jobs: - name: Build and test working-directory: bindings/java run: mvn clean verify + + stage-snapshot: + runs-on: ${{ matrix.os }} + if: github.event_name == 'push' || !github.event.pull_request.head.repo.fork + strategy: + matrix: + include: + - os: ubuntu-latest + classifier: linux-x86_64 + - os: windows-latest + classifier: windows-x86_64 + - os: macos-latest + classifier: osx-x86_64 + - os: macos-latest + classifier: osx-aarch_64 + steps: + - uses: actions/checkout@v3 + + - name: Load secret + id: op-load-secret + uses: 1password/load-secrets-action@v1 + with: + export-env: true + env: + OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }} + MAVEN_GPG_PRIVATE_KEY: op://services/maven/gpg_private_key + MAVEN_GPG_PASSPHRASE: op://services/maven/gpg_passphrase + + - name: Set up JDK 8 + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '8' + cache: 'maven' + gpg-private-key: ${{ env.MAVEN_GPG_PRIVATE_KEY }} + gpg-passphrase: ${{ env.MAVEN_GPG_PASSPHRASE }} + - uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: Local staging + working-directory: bindings/java + run: mvn -Papache-release package verify org.sonatype.plugins:nexus-staging-maven-plugin:deploy -DjniClassifier=${{ matrix.classifier }} -DskipTests=true -DaltStagingDirectory=local-staging -DskipRemoteStaging=true + env: + MAVEN_GPG_PASSPHRASE: ${{ env.MAVEN_GPG_PASSPHRASE }} + - name: Upload local staging directory + uses: actions/upload-artifact@v3 + with: + name: ${{ matrix.classifier }}-local-staging + path: bindings/java/local-staging + if-no-files-found: error + + deploy-snapshots: + runs-on: ubuntu-latest + if: github.event_name == 'push' || !github.event.pull_request.head.repo.fork + needs: [stage-snapshot] + steps: + - uses: actions/checkout@v3 + - name: Load secret + id: op-load-secret + uses: 1password/load-secrets-action@v1 + with: + export-env: true + env: + OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }} + MAVEN_GPG_PRIVATE_KEY: op://services/maven/gpg_private_key + MAVEN_GPG_PASSPHRASE: op://services/maven/gpg_passphrase + + - name: Set up JDK 8 + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '8' + cache: 'maven' + server-id: apache.snapshots.https + server-username: MAVEN_USERNAME + server-password: MAVEN_CENTRAL_TOKEN + gpg-private-key: ${{ env.MAVEN_GPG_PRIVATE_KEY }} + gpg-passphrase: ${{ env.MAVEN_GPG_PASSPHRASE }} + + - name: Prepare enviroment variables + run: echo "LOCAL_STAGING_DIR=$HOME/local-staging" >> $GITHUB_ENV + + - name: Download windows staging directory + uses: actions/download-artifact@v3 + with: + name: windows-x86_64-local-staging + path: ~/windows-x86_64-local-staging + - name: Download linux staging directory + uses: actions/download-artifact@v3 + with: + name: linux-x86_64-local-staging + path: ~/linux-x86_64-local-staging + - name: Download darwin staging directory + uses: actions/download-artifact@v3 + with: + name: osx-x86_64-local-staging + path: ~/osx-x86_64-local-staging + - name: Download darwin (aarch64) staging directory + uses: actions/download-artifact@v3 + with: + name: osx-aarch_64-local-staging + path: ~/osx-aarch_64-local-staging + + - name: Merge staging repositories + run: | + mkdir -p ~/local-staging/deferred + cat ~/windows-x86_64-local-staging/deferred/.index >> ~/local-staging/deferred/.index + cp -r ~/windows-x86_64-local-staging/deferred/* ~/local-staging/deferred/ + cat ~/linux-x86_64-local-staging/deferred/.index >> ~/local-staging/deferred/.index + cp -r ~/linux-x86_64-local-staging/deferred/* ~/local-staging/deferred/ + cat ~/osx-x86_64-local-staging/deferred/.index >> ~/local-staging/deferred/.index + cp -r ~/osx-x86_64-local-staging/deferred/* ~/local-staging/deferred/ + cat ~/osx-aarch_64-local-staging/deferred/.index >> ~/local-staging/deferred/.index + cp -r ~/osx-aarch_64-local-staging/deferred/* ~/local-staging/deferred/ + + - name: Deploy local staged artifacts + if: ${{ github.event_name != 'pull_request' }} + working-directory: bindings/java + run: mvn org.sonatype.plugins:nexus-staging-maven-plugin:deploy-staged -DaltStagingDirectory=$LOCAL_STAGING_DIR + env: + MAVEN_USERNAME: ${{ secrets.NEXUS_USER }} + MAVEN_CENTRAL_TOKEN: ${{ secrets.NEXUS_PW }} + MAVEN_GPG_PASSPHRASE: ${{ env.MAVEN_GPG_PASSPHRASE }}