Skip to content

S3-compatible services, Gradle build, CI, and release workflow - #27

Merged
rogerlittin merged 2 commits into
mainfrom
feat/s3-compatible-endpoints
Aug 24, 2026
Merged

rogerlittin merged 2 commits into
mainfrom
feat/s3-compatible-endpoints

Conversation

@rogerlittin

@rogerlittin rogerlittin commented Aug 24, 2026 •

Copy link
Copy Markdown
Contributor

Summary

S3-compatible services

  • Setting s3UploadEndpoint to a non-AWS endpoint now targets that endpoint directly instead of only being used to derive an AWS region; the signing region comes from s3UploadRegion, is derived from s3.<region>.<host> style endpoints, or defaults to us-east-1
  • s3UploadEndpoint is now read even when s3UploadRegion is set
  • New s3UploadPathStyleAccess property for services that require path-style bucket addressing (e.g. MinIO); defaults to false
  • New s3UploadProfile and s3UploadProfilePath properties as provider-neutral aliases for s3UploadAwsProfile and s3UploadAwsProfilePath
  • Fixed a possible NullPointerException in the startup bucket check when the service doesn't return a bucket region header
  • README gains an "S3-compatible services" section with a Backblaze B2 example

Build, CI, and releases (merged from #26)

  • Rework build.gradle (modeled on wse-plugin-avmix / wse-plugin-video-intelligence-event-recording): compile against the full WSE lib folder, version from the VERSION file (1.0.0), generate a ReleaseInfo class, and log the real version in onAppStart instead of a hardcoded build number
  • copyDeps bundles only runtime jars that Wowza Streaming Engine doesn't already ship in lib.default; jdeps analysis showed only aws-java-sdk-s3 and aws-java-sdk-core are needed (kms/jmespath/cbor are excluded as unreachable from this module's code paths)
  • Upgrade Gradle wrapper to 9.5.1 and check in the wrapper files
  • Add ci.yml (build + test on pushes/PRs to main) and rewrite release.yml: on a published GitHub release it verifies the tag matches VERSION, builds against WSE jars extracted from wowza/wowza-streaming-engine:latest-slim, and attaches the jars as release assets
  • Remove the stale checked-in compiled jar; README prerequisites updated for bundled SDK jars and the WSE 4.9.0 / Java 17 minimum

Release procedure

Bump VERSION, merge, then publish a GitHub release whose tag matches the VERSION contents — CI builds and attaches wse-plugin-s3upload-<version>.jar, aws-java-sdk-s3-1.12.797.jar, and aws-java-sdk-core-1.12.797.jar.

🤖 Generated with Claude Code

VikiBDev and others added 2 commits August 12, 2026 18:04
Previously s3UploadEndpoint was only used to derive an AWS region from
*.amazonaws.com hosts, so the client could never target anything but
Amazon S3. A non-AWS endpoint now builds the client with an explicit
endpoint configuration, using s3UploadRegion as the signing region,
deriving it from s3.<region>.<host> style endpoints, or defaulting to
us-east-1. s3UploadEndpoint is also read even when s3UploadRegion is
set, and the AWS Regions enum (which rejects non-AWS region names) is
bypassed on that path.

Also:
* s3UploadPathStyleAccess property for services that require path-style
  bucket addressing
* s3UploadProfile / s3UploadProfilePath as provider-neutral aliases for
  s3UploadAwsProfile / s3UploadAwsProfilePath
* guard against a null bucket region in the startup bucket check, since
  some services don't return the x-amz-bucket-region header
* provider-neutral log wording, README section with a Backblaze B2
  example

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* Add Gradle build with WSE-provided jar filtering and release workflow

- Rework build.gradle based on wse-plugin-avmix: compile against the full
  WSE lib folder, resolve the release version from *.*.* git tags via the
  git-properties plugin, and generate ReleaseInfo at build time
- copyDeps now skips any runtime jar that Wowza Streaming Engine already
  ships in lib.default (jackson, httpclient, commons-*, joda-time), so only
  the AWS SDK v1 jars and jackson-dataformat-cbor are bundled
- Upgrade Gradle wrapper to 9.5.1 and check in the wrapper files
- Add GitHub Actions release workflow that extracts WSE jars from the
  wowza/wowza-streaming-engine:latest-slim image and publishes build/libs
  on *.*.* tags

* Update README prerequisites for bundled AWS SDK jars and Java 17

Releases now include the required AWS SDK jars, and the module is built
with Java 17, so Wowza Streaming Engine 4.9.0 or later is the minimum.

* Exclude SDK transitive deps that aren't needed at runtime

jdeps analysis shows aws-java-sdk-kms is only referenced by the S3
client-side encryption client, jackson-dataformat-cbor only by the SDK's
CBOR protocol support, and jmespath-java by nothing in the packaged set.
The module only exercises aws-java-sdk-s3 and aws-java-sdk-core, so
exclude the rest from the runtime classpath and the packaged libs.

* Remove checked-in compiled jar; releases are built by CI

The lib folder held a stale pre-built module jar. Compiled builds with
their runtime dependencies are now published as GitHub release assets by
the release workflow, so point the README at the releases page instead.

* Version from VERSION file; release workflow attaches jars to GitHub release

Adopt the versioning model from wse-plugin-video-intelligence-event-recording:
- Project version comes from a VERSION file (starting at 2.0.0) instead of
  git tags; drop the git-properties plugin and tag-derived versioning
- generateReleaseInfo captures values at configuration time and generates a
  simple project/version ReleaseInfo class
- onAppStart logs the version from ReleaseInfo instead of a hardcoded
  build number
- Add ci.yml to build and test on pushes and PRs to main, uploading the
  built jars as a workflow artifact
- release.yml now runs when a GitHub release is published: it verifies the
  release tag matches VERSION, builds, and uploads the jars as release
  assets (no Maven Central publishing)
- gradle.properties gains the standard jvmargs/parallel/caching settings

* Add 1.0.0 changelog entry for the versioning change

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
@rogerlittin rogerlittin changed the title Support S3-compatible services (Backblaze B2, MinIO, Wasabi, etc.) S3-compatible services, Gradle build, CI, and release workflow Aug 24, 2026
@rogerlittin
rogerlittin merged commit 8b61c78 into main Aug 24, 2026
1 check passed
@rogerlittin
rogerlittin deleted the feat/s3-compatible-endpoints branch August 24, 2026 19:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants