You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opendal.apache.org by ti...@apache.org on 2023/06/24 07:13:06 UTC

[incubator-opendal] branch main updated: ci(bindings/java): auto release snapshot (#2521)

This is an automated email from the ASF dual-hosted git repository.

tison pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-opendal.git


The following commit(s) were added to refs/heads/main by this push:
     new be3957d89 ci(bindings/java): auto release snapshot  (#2521)
be3957d89 is described below

commit be3957d892ad54c550e53e8ab4f13d8ed3316709
Author: tison <wa...@gmail.com>
AuthorDate: Sat Jun 24 15:13:02 2023 +0800

    ci(bindings/java): auto release snapshot  (#2521)
    
    Signed-off-by: tison <wa...@gmail.com>
    Co-authored-by: Xuanwo <gi...@xuanwo.io>
---
 .github/workflows/bindings_java.yml | 126 ++++++++++++++++++++++++++++++++++++
 1 file changed, 126 insertions(+)

diff --git a/.github/workflows/bindings_java.yml b/.github/workflows/bindings_java.yml
index 07bc9271e..fbcfd42e8 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 }}