diff --git a/.github/workflows/github_actions.yml b/.github/workflows/github_actions.yml index 6d65d25..617f41c 100644 --- a/.github/workflows/github_actions.yml +++ b/.github/workflows/github_actions.yml @@ -15,75 +15,33 @@ 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] - name: Create-Release - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: Set up Java - uses: actions/setup-java@v2 - with: - distribution: 'adopt' - java-version: '11' - check-latest: true - - - name: Create-Jars - run: unset SYSTEM; set +e; ./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: | - chmod +x ./ci/upload_to_maven.sh - ./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 + 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 }} 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() 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 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); } } -