From c655ca545a5ee2aca98b3458060ae5fe9222ed45 Mon Sep 17 00:00:00 2001 From: Ryan Williams Date: Thu, 15 May 2025 23:21:27 -0400 Subject: [PATCH 1/4] Bump version to `1.0.0-SNAPSHOT` --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8cb838c..beaee7e 100644 --- a/build.gradle +++ b/build.gradle @@ -27,7 +27,7 @@ apply plugin: 'java' apply plugin: 'com.diffplug.spotless' group 'io.tiledb' -version = '0.5.0' +version = '1.0.0-SNAPSHOT' repositories { mavenCentral() From c2521d2fc0e41a5804fd76ca05a5217cf9e46271 Mon Sep 17 00:00:00 2001 From: Ryan Williams Date: Fri, 23 May 2025 10:43:25 -0400 Subject: [PATCH 2/4] GHA updates, lint nit, JVM >15 workaround See: - https://arrow.apache.org/docs/java/install.html - https://github.com/snowflakedb/snowflake-jdbc/issues/589 - https://github.com/snowflakedb/snowpark-java-scala/issues/82 --- .github/workflows/github_actions.yml | 52 +++++++++---------- .../cloud/rest_api/model/TaskGraphLog.java | 1 - 2 files changed, 25 insertions(+), 28 deletions(-) diff --git a/.github/workflows/github_actions.yml b/.github/workflows/github_actions.yml index 6d65d25..a7db171 100644 --- a/.github/workflows/github_actions.yml +++ b/.github/workflows/github_actions.yml @@ -15,36 +15,31 @@ jobs: runs-on: ubuntu-latest steps: - name: checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Java - uses: actions/setup-java@v2 + uses: actions/setup-java@v4 with: distribution: 'adopt' - java-version: '11' + java-version: 17 check-latest: true - - run: | - unset SYSTEM - ./gradlew assemble; + - name: assemble shell: bash - name: assemble + run: | + unset SYSTEM + ./gradlew assemble - name: Run examples env: API_TOKEN: ${{ secrets.API_TOKEN }} run: | - cd build/libs - rm *javadoc* *sources* *default* - p=$(readlink -f *.jar) - cd ../../src/main/java/examples - javac -cp $p *.java - for x in $(ls -1 *.java | sed 's/.java//'); - do - echo $x; - class_name=examples.$x; - java -cp $p $class_name; - done + jar_relpath="$(find build/libs -type f | grep -v -e javadoc -e sources -e default)" + jar="$(readlink -f "$jar_relpath")" + cd src/main/java/examples + javac -cp "$jar" Examples.java + # arrow-java requires the --add-opens flag in Java ≥16; see https://arrow.apache.org/docs/java/install.html#id3 + java --add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED -cp "$jar" examples.Examples Release: if: startsWith(github.ref, 'refs/tags/') needs: [Examples] @@ -52,17 +47,22 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Set up Java - uses: actions/setup-java@v2 + uses: actions/setup-java@v4 with: distribution: 'adopt' - java-version: '11' + java-version: 17 check-latest: true - - name: Create-Jars - run: unset SYSTEM; set +e; ./gradlew assemble; ./gradlew shadowJar; mkdir jars/; cp ./build/libs/*.jar jars/ + - name: Create JARs + run: | + unset SYSTEM + ./gradlew assemble + ./gradlew shadowJar + mkdir jars/ + cp ./build/libs/*.jar jars/ - name: Create Release id: create_release @@ -77,13 +77,11 @@ jobs: prerelease: false - name: Upload to maven - run: | - chmod +x ./ci/upload_to_maven.sh - ./ci/upload_to_maven.sh + run: ./ci/upload_to_maven.sh shell: bash env: GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }} GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} GPG_SECRET_KEYS_ENC: ${{ secrets.GPG_SECRET_KEYS_ENC }} SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} - SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} \ No newline at end of file + SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} diff --git a/src/main/java/io/tiledb/cloud/rest_api/model/TaskGraphLog.java b/src/main/java/io/tiledb/cloud/rest_api/model/TaskGraphLog.java index 7801e40..70d11c0 100644 --- a/src/main/java/io/tiledb/cloud/rest_api/model/TaskGraphLog.java +++ b/src/main/java/io/tiledb/cloud/rest_api/model/TaskGraphLog.java @@ -781,4 +781,3 @@ public String toJson() { return JSON.getGson().toJson(this); } } - From 125e562fc23d1a52e9ccf901fa15b6d0aa4cfffa Mon Sep 17 00:00:00 2001 From: Ryan Williams Date: Fri, 23 May 2025 10:58:37 -0400 Subject: [PATCH 3/4] `ci/upload_to_maven.sh` tweaks --- ci/upload_to_maven.sh | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/ci/upload_to_maven.sh b/ci/upload_to_maven.sh index d4bebc7..a4fd108 100755 --- a/ci/upload_to_maven.sh +++ b/ci/upload_to_maven.sh @@ -1,14 +1,25 @@ #!/usr/bin/env bash -export GPG_KEY_LOCATION=$(pwd)/encrypted.key +set -e + +export GPG_KEY_LOCATION="$(pwd)/encrypted.key" echo "Starting upload to maven" -echo "${GPG_SECRET_KEYS_ENC}" | base64 --decode > $GPG_KEY_LOCATION -./gradlew properties -q | grep "version:" | awk '{print $2}' -export PROJECT_VERSION=$(./gradlew properties -q | grep "version:" | awk '{print $2}') -# Upload only snapshots to sonatype oss so it can make its way to maven central +echo "$GPG_SECRET_KEYS_ENC" | base64 --decode > "$GPG_KEY_LOCATION" +export PROJECT_VERSION="$(./gradlew properties -q | grep "^version: " | awk '{print $2}')" +echo "\$PROJECT_VERSION: $PROJECT_VERSION" >&2 +# Upload only snapshots to Sonatype OSS so it can make its way to Maven Central +# https://oss.sonatype.org/content/repositories/snapshots/io/tiledb/tiledb-cloud-java/ ./gradlew publishMavenJavaPublicationToMavenRepository -# Only non-snapshot can be pushed as maven releases -if [[ ! $(echo "${PROJECT_VERSION}" | grep "SNAPSHOT") ]]; then - ./gradlew closeAndReleaseRepository +# Only non-snapshot can be pushed as Maven releases +if ! echo "$PROJECT_VERSION" | grep -q "SNAPSHOT"; then + tag="$(git tag --points-at HEAD)" + if [ -z "$tag" ]; then + echo "Error: expected tag $PROJECT_VERSION" >&2 + exit 1 + elif [ "$tag" != "$PROJECT_VERSION" ]; then + echo "Error: tag $tag != version $PROJECT_VERSION" >&2 + exit 1 + fi + ./gradlew closeAndReleaseRepository fi From 4332035ecd7a72fe461ffee1039cab16f6d4c411 Mon Sep 17 00:00:00 2001 From: Ryan Williams Date: Fri, 23 May 2025 10:41:56 -0400 Subject: [PATCH 4/4] SNAPSHOT publish GHA --- .github/workflows/github_actions.yml | 44 ++----------------------- .github/workflows/publish.yml | 48 ++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 42 deletions(-) create mode 100644 .github/workflows/publish.yml diff --git a/.github/workflows/github_actions.yml b/.github/workflows/github_actions.yml index a7db171..617f41c 100644 --- a/.github/workflows/github_actions.yml +++ b/.github/workflows/github_actions.yml @@ -43,45 +43,5 @@ jobs: Release: if: startsWith(github.ref, 'refs/tags/') needs: [Examples] - name: Create-Release - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Set up Java - uses: actions/setup-java@v4 - with: - distribution: 'adopt' - java-version: 17 - check-latest: true - - - name: Create JARs - run: | - unset SYSTEM - ./gradlew assemble - ./gradlew shadowJar - mkdir jars/ - cp ./build/libs/*.jar jars/ - - - name: Create Release - id: create_release - uses: softprops/action-gh-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - files: jars/*.jar - tag_name: ${{ github.event.release.tag_name }} - name: ${{ github.event.release.tag_name }} - draft: false - prerelease: false - - - name: Upload to maven - run: ./ci/upload_to_maven.sh - shell: bash - env: - GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }} - GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} - GPG_SECRET_KEYS_ENC: ${{ secrets.GPG_SECRET_KEYS_ENC }} - SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} - SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + uses: ./.github/workflows/publish.yml + secrets: inherit diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..1dd4256 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,48 @@ +name: Publish snapshot to Maven Central +on: + workflow_call: + workflow_dispatch: +jobs: + Release: + name: 'Publish snapshot to Maven Central' + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Java + uses: actions/setup-java@v4 + with: + distribution: 'adopt' + java-version: 17 + check-latest: true + + - name: Create-Jars + run: | + unset SYSTEM + ./gradlew assemble + ./gradlew shadowJar + mkdir jars/ + cp ./build/libs/*.jar jars/ + + - name: Create Release + id: create_release + uses: softprops/action-gh-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + files: jars/*.jar + tag_name: ${{ github.event.release.tag_name }} + name: ${{ github.event.release.tag_name }} + draft: false + prerelease: false + + - name: Upload to maven + run: ./ci/upload_to_maven.sh + shell: bash + env: + GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }} + GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + GPG_SECRET_KEYS_ENC: ${{ secrets.GPG_SECRET_KEYS_ENC }} + SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} + SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}