Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 126 additions & 0 deletions .github/workflows/bindings_java.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ on:
- "core/**"
- "bindings/java/**"
- ".github/workflows/bindings_java.yml"
schedule:
- cron: '30 1 * * 1'
workflow_dispatch:

concurrency:
Expand Down Expand Up @@ -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 }}