Skip to content

Bump version, add standalone publish.yml #39

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
May 28, 2025
Merged
Show file tree
Hide file tree
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
72 changes: 15 additions & 57 deletions .github/workflows/github_actions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }}
uses: ./.github/workflows/publish.yml
secrets: inherit
48 changes: 48 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -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 }}
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
27 changes: 19 additions & 8 deletions ci/upload_to_maven.sh
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -781,4 +781,3 @@ public String toJson() {
return JSON.getGson().toJson(this);
}
}