Skip to content

Add Kotlin publishing and shared NuGet/Swift package versions - #319

Merged
follesoe merged 3 commits into
masterfrom
codex/protocol-client-packages
Oct 22, 2026
Merged

follesoe merged 3 commits into
masterfrom
codex/protocol-client-packages

Conversation

@follesoe

@follesoe follesoe commented Oct 21, 2026 •

Copy link
Copy Markdown
Member

Adds a Kotlin/JVM Maven package with the full Protobuf Java and Kotlin runtimes, generated message classes and Kotlin DSLs. Generated Swift sources live in blueye.protocol.swift; this repository dispatches the exact protocol commit and package version to its update/release workflow.

NuGet, Maven, and Swift share one version calculated by the existing ci-dotnet.yaml workflow. version.txt holds the Blueye App major/minor version (6.5); master publishes stable 6.5.<run-number> versions automatically, while other branches use a prerelease suffix. The Python package and its existing release process are unchanged.

Validation:

  • Shared version rules: 7 tests passed, including master, PR, rerun, and numeric branch cases.
  • Kotlin: 5 protocol tests passed; the separate consumer resolved the local Maven publication and exercised the DSL, full runtime, and transitive dependencies.
  • NuGet and Maven package metadata both verified as 6.5.815 in a local test build.
  • Workflow lint and whitespace checks passed.

The downstream Swift receiver is committed, its dispatch variable is configured, and macOS/Linux CI passes. GitHub Actions also successfully published the same feature-branch version, 6.5.815-branch-codex-protocol-client-packages, to NuGet and Maven. Stable releases and the matching Swift tag are triggered after merging to master.

@follesoe
follesoe requested review from jp-pino and sindrehan and a balanced review from Copilot and removed request for Copilot October 21, 2026 14:33
@follesoe follesoe self-assigned this Oct 21, 2026
@follesoe follesoe added dotnet Issues related to the dotnet libraries kotlin swift labels Oct 21, 2026
@follesoe
follesoe requested a balanced review from Copilot October 21, 2026 14:35

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🔵 Needs a closer look

Required downstream Swift CI remains in progress, and version-calculation failures still need to propagate correctly.

1 open issue
What changed in this PR

Adds Kotlin/JVM packaging and coordinates NuGet, Maven, and downstream Swift releases using one shared version.

Changes:

  • Adds Kotlin generation, publishing, protocol tests, and a separate consumer smoke test.
  • Centralizes package version calculation and release coordination.
  • Documents package consumption and publishing workflows.
File Description
version.txt Defines the shared major/minor version.
scripts/​test_package_version.py Tests shared version rules.
scripts/​package-version.py Calculates release and prerelease versions.
README.md Documents packages and release coordination.
protobuf.version Pins the Kotlin Protobuf toolchain version.
protobuf_definitions/​telemetry.proto Enables separate Java message classes.
protobuf_definitions/​req_rep.proto Enables separate Java message classes.
protobuf_definitions/​mission_planning.proto Enables separate Java message classes.
protobuf_definitions/​message_formats.proto Enables separate Java message classes.
protobuf_definitions/​control.proto Enables separate Java message classes.
protobuf_definitions/​aquatroll.proto Enables separate Java message classes.
kotlin/​src/​test/​kotlin/​blueye/​protocol/​ProtocolTest.kt Tests serialization and full-runtime capabilities.
kotlin/​smoke-test/​src/​main/​kotlin/​Consumer.kt Exercises the published package.
kotlin/​smoke-test/​settings.gradle.kts Names the consumer project.
kotlin/​smoke-test/​build.gradle.kts Configures publication consumption.
kotlin/​settings.gradle.kts Names the library project.
kotlin/​README.md Documents Kotlin usage and publishing.
kotlin/​gradlew.bat Adds the Windows Gradle launcher.
kotlin/​gradlew Adds the POSIX Gradle launcher.
kotlin/​gradle/​wrapper/​gradle-wrapper.properties Pins the Gradle distribution and checksum.
kotlin/​gradle.properties Configures Gradle and Kotlin defaults.
kotlin/​build.gradle.kts Configures generation, testing, and Maven publishing.
Directory.Build.props Derives the local .NET version.
Blueye.Protocol.Protobuf.csproj Uses shared versioning and narrows schema inclusion.
.gitignore Ignores Gradle and Kotlin state.
.github/​workflows/​ci-swift.yaml Dispatches the protocol revision and version.
.github/​workflows/​ci-kotlin.yaml Builds, verifies, and publishes Maven packages.
.github/​workflows/​ci-dotnet.yaml Coordinates versioning and package releases.

Review effort: Balanced

Comment thread .github/workflows/ci-dotnet.yaml Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

Out-of-order releases can leave published NuGet and Maven versions without matching Swift tags.

1 open issue
1 resolved since last review

Review effort: Balanced

Comment thread .github/workflows/ci-dotnet.yaml
@follesoe
follesoe merged commit 8187f91 into master Oct 22, 2026
14 checks passed
@follesoe
follesoe deleted the codex/protocol-client-packages branch October 22, 2026 07:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dotnet Issues related to the dotnet libraries kotlin swift

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants