Skip to content
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

Add release automation workflow #384

Merged
merged 2 commits into from Jan 28, 2023
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
37 changes: 37 additions & 0 deletions .github/workflows/release.yml
@@ -0,0 +1,37 @@
name: Release

on:
push:
tags:
- v*
workflow_dispatch:

jobs:
publish_jvm:
name: Publish
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 10000
# Fetch all tags so that sbt-dynver can find the previous release version
- run: git fetch --tags -f
# Install OpenJDK 11
- uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: '11'

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi ~ @xerial, 1.19.0 was compiled and released using Java 11, will Java 8 no longer be supported after 1.19.0? I didn't find relevant information in the release notes.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, please ignore my comment temporarily

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The build target is 1.8, so it should work with Java 8 https://github.com/xerial/snappy-java/blob/master/build.sbt#L30

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks very much for your reply.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@xerial I'm very sorry, but I still need to bother you
I wrote a simple demo to reproduce this issue, the demo is in https://github.com/LuciferYang/snappy-java-test

@Test
 public void testCompress() throws IOException {
        ByteBuffer src = ByteBuffer.allocateDirect(1024);
        src.put("hello world".getBytes());
        src.flip();
        ByteBuffer dest = ByteBuffer.allocateDirect(1024);
        int maxCompressedLen = Snappy.compress(src, dest);
        Assert.assertEquals(maxCompressedLen, 13);
    }

run the above case with zulu 8u352

java -version
openjdk version "1.8.0_352"
OpenJDK Runtime Environment (Zulu 8.66.0.15-CA-macos-aarch64) (build 1.8.0_352-b08)
OpenJDK 64-Bit Server VM (Zulu 8.66.0.15-CA-macos-aarch64) (build 25.352-b08, mixed mode)

with snappy-java 1.1.8.4 the test passed

mvn clean test -Dsnappy-java.version=1.1.8.4

with snappy-java 1.1.9.0

mvn clean test -Dsnappy-java.version=1.1.9.0

the test failed as follows:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.example.SnappyJavaTest
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.374 sec <<< FAILURE!
testCompress(org.example.SnappyJavaTest)  Time elapsed: 0.345 sec  <<< ERROR!
java.lang.NoSuchMethodError: java.nio.ByteBuffer.limit(I)Ljava/nio/ByteBuffer;
	at org.xerial.snappy.Snappy.compress(Snappy.java:157)
	at org.example.SnappyJavaTest.testCompress(SnappyJavaTest.java:17)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And if I run the mvn test with zulu 11, there is no above issue

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I create a issue #389 for this

- name: Setup GPG
env:
PGP_SECRET: ${{ secrets.PGP_SECRET }}
run: echo $PGP_SECRET | base64 --decode | gpg --import --batch --yes
- name: Build bundle
env:
PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
run: |
./sbt publishSigned
- name: Release to Sonatype
env:
SONATYPE_USERNAME: '${{ secrets.SONATYPE_USER }}'
SONATYPE_PASSWORD: '${{ secrets.SONATYPE_PASS }}'
run: ./sbt sonatypeBundleRelease
5 changes: 4 additions & 1 deletion Makefile
Expand Up @@ -140,7 +140,10 @@ NATIVE_DIR:=src/main/resources/org/xerial/snappy/native/$(OS_NAME)/$(OS_ARCH)
NATIVE_TARGET_DIR:=$(TARGET)/classes/org/xerial/snappy/native/$(OS_NAME)/$(OS_ARCH)
NATIVE_DLL:=$(NATIVE_DIR)/$(LIBNAME)

snappy-jar-version:=snappy-java-$(shell cat version.sbt | cut -d'=' -f2 | sed 's/[ \"]//g')
snappy-jar-version:=snappy-java-$(shell ./script/dynver.sh | cut -d'=' -f2 | sed 's/[ \"]//g')

jar-version:
echo $(snappy-jar-version)

native: jni-header snappy-header $(NATIVE_DLL)
native-nocmake: jni-header $(NATIVE_DLL)
Expand Down
56 changes: 21 additions & 35 deletions build.sbt
@@ -1,14 +1,14 @@
Global / onChangedBuildSource := ReloadOnSourceChanges

name := "snappy-java"
organization := "org.xerial.snappy"
name := "snappy-java"
organization := "org.xerial.snappy"
organizationName := "xerial.org"
description := "snappy-java: A fast compression/decompression library"
description := "snappy-java: A fast compression/decompression library"

sonatypeProfileName := "org.xerial"
sonatypeProfileName := "org.xerial"
ThisBuild / publishTo := sonatypePublishToBundle.value
licenses := Seq("Apache-2.0" -> url("https://www.apache.org/licenses/LICENSE-2.0.html"))
homepage := Some(url("https://github.com/xerial/snappy-java"))
licenses := Seq("Apache-2.0" -> url("https://www.apache.org/licenses/LICENSE-2.0.html"))
homepage := Some(url("https://github.com/xerial/snappy-java"))
scmInfo := Some(
ScmInfo(
browseUrl = url("https://github.com/xerial/snappy-java"),
Expand All @@ -19,6 +19,11 @@ developers := List(
Developer(id = "leo", name = "Taro L. Saito", email = "leo@xerial.org", url = url("http://xerial.org/leo"))
)

// Use dynamic snapshot version strings for non tagged versions
ThisBuild / dynverSonatypeSnapshots := true
// Use coursier friendly version separator
ThisBuild / dynverSeparator := "-"

ThisBuild / scalaVersion := "2.12.11"

// For building jars for JDK8
Expand Down Expand Up @@ -57,27 +62,27 @@ testOptions += Tests.Argument(TestFrameworks.JUnit, "-q", "-v")
Test / parallelExecution := false

autoScalaLibrary := false
crossPaths := false
crossPaths := false

libraryDependencies ++= Seq(
"junit" % "junit" % "4.13.2" % "test",
"org.codehaus.plexus" % "plexus-classworlds" % "2.7.0" % "test",
"org.xerial.java" % "xerial-core" % "2.1" % "test",
"junit" % "junit" % "4.13.2" % "test",
"org.codehaus.plexus" % "plexus-classworlds" % "2.7.0" % "test",
"org.xerial.java" % "xerial-core" % "2.1" % "test",
"org.wvlet.airframe" %% "airframe-log" % "22.12.6" % "test",
"org.osgi" % "org.osgi.core" % "4.3.0" % "provided",
"com.github.sbt" % "junit-interface" % "0.13.3" % "test",
"org.osgi" % "org.osgi.core" % "4.3.0" % "provided",
"com.github.sbt" % "junit-interface" % "0.13.3" % "test",
"org.apache.hadoop" % "hadoop-common" % "2.10.2" % "test" exclude ("org.xerial.snappy", "snappy-java")
)

enablePlugins(SbtOsgi)

osgiSettings

OsgiKeys.exportPackage := Seq("org.xerial.snappy", "org.xerial.snappy.buffer", "org.xerial.snappy.pool")
OsgiKeys.exportPackage := Seq("org.xerial.snappy", "org.xerial.snappy.buffer", "org.xerial.snappy.pool")
OsgiKeys.bundleSymbolicName := "org.xerial.snappy.snappy-java"
OsgiKeys.bundleActivator := Option("org.xerial.snappy.SnappyBundleActivator")
OsgiKeys.importPackage := Seq("""org.osgi.framework;version="[1.5,2)"""")
OsgiKeys.requireCapability := """osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.7))""""
OsgiKeys.bundleActivator := Option("org.xerial.snappy.SnappyBundleActivator")
OsgiKeys.importPackage := Seq("""org.osgi.framework;version="[1.5,2)"""")
OsgiKeys.requireCapability := """osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.7))""""

OsgiKeys.additionalHeaders := Map(
"Bundle-NativeCode" -> Seq(
Expand Down Expand Up @@ -108,22 +113,3 @@ OsgiKeys.additionalHeaders := Map(
"Bundle-ActivationPolicy" -> "lazy",
"Bundle-Name" -> "snappy-java: A fast compression/decompression library"
)

import ReleaseTransformations._

releaseTagName := { (ThisBuild / version).value }

releaseProcess := Seq[ReleaseStep](
checkSnapshotDependencies,
inquireVersions,
runClean,
runTest,
setReleaseVersion,
commitReleaseVersion,
tagRelease,
releaseStepCommand("publishSigned"),
releaseStepCommand("sonatypeBundleRelease"),
setNextVersion,
commitNextVersion,
pushChanges
)
1 change: 0 additions & 1 deletion project/plugins.sbt
@@ -1,4 +1,3 @@
addSbtPlugin("com.github.sbt" % "sbt-release" % "1.1.0")
addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.17")
addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.2.1")
addSbtPlugin("com.typesafe.sbt" % "sbt-osgi" % "0.9.6")
Expand Down
1 change: 0 additions & 1 deletion version.sbt

This file was deleted.