Skip to content

fix: repair the release pipeline and publish the media module - #299

Merged
devopvoid merged 3 commits into
mainfrom
fix/release-ffmpeg-submodule
Sep 27, 2026
Merged

devopvoid merged 3 commits into
mainfrom
fix/release-ffmpeg-submodule

Conversation

@devopvoid

Copy link
Copy Markdown
Owner

The last Release run (36277592533) failed in "Prepare release", and the media module would not have been published even if it had got further. v0.18.0 predates the media module, so none of the CI changes since #291 had been through a release yet.

Changes

  • Check out the FFmpeg submodule before release:prepare. It runs clean verify over the whole reactor, which now includes the media module, whose CMake configure stops with "The FFmpeg submodule is not checked out". The failure came before any commit or tag, so nothing needs undoing. FFmpeg builds out of tree, so the submodule stays clean for the release plugin.
  • Publish webrtc-java-media with a release. The release jobs uploaded only webrtc-jni's natives, and publish-central deployed only .,webrtc.
    • Both release actions now also upload the media classifier jar, as natives-media-<platform>, which the existing natives-* download merges into the same flat directory.
    • publish-central checks that all seven media jars are present and deploys .,webrtc,webrtc-java-media.
    • The media pom gets the same attach-natives-all profile webrtc has, activated by natives.dir. It attaches the seven jars and turns off the CMake build and the host natives jar.
  • Docs: the media guide used a hard-coded 0.19.0-SNAPSHOT; it now uses {{ VERSION }} like the get-started guide.

Verification

  • The three changed workflow/action files parse as YAML.
  • I simulated publish-central's build locally: mvn package -pl .,webrtc,webrtc-java-media -DskipTests -Dnatives.dir=<dir> with placeholder jars for all 7 classifiers. It succeeded, and the media module ran attach-natives without any CMake or natives-jar execution.
  • The real workflow has not run yet. Before cutting 0.19.0, run Release with dryRun: this is the first time the media module goes through the release profile (sources, javadoc, signing).

release:prepare runs "clean verify" over the whole reactor, which now
includes the media module. Its CMake configure stops when the FFmpeg
submodule is missing, and the prepare-release job never checked it out,
so the release failed before any commit or tag was made.
The media module became part of the normal build, and snapshot builds
deploy it, but the release workflow never learned about it: the release
jobs uploaded only webrtc-jni's natives, and publish-central deployed
only the parent and webrtc. A release would have shipped without the
artifact the media guide tells applications to depend on.

The release jobs now also upload the media module's classifier jar,
under a name the natives-* download already merges into the same flat
directory. publish-central checks that every platform's media jar is
there and deploys the module alongside webrtc.

The media module gets the attach-natives-all profile webrtc already
has, activated the same way by natives.dir. It attaches the seven
downloaded jars and turns off the CMake build and the host natives jar,
so publish-central neither needs the FFmpeg submodule nor builds a
second, host-only natives jar.
The media guide spelled out 0.19.0-SNAPSHOT, which stops resolving once
0.19.0 is released and the snapshot moves on. It now uses {{ VERSION }}
like the get-started guide, which the release workflow keeps current.
@devopvoid
devopvoid merged commit c497ee7 into main Sep 27, 2026
11 checks passed
@devopvoid
devopvoid deleted the fix/release-ffmpeg-submodule branch September 27, 2026 12:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant