Skip to content

Issue #257: publish PilotDataSync.xpl and relay.exe from CI - #279

Merged
jmacd867 merged 2 commits into
mainfrom
257-release-plugin-and-relay
Nov 13, 2026
Merged

jmacd867 merged 2 commits into
mainfrom
257-release-plugin-and-relay

Conversation

@jmacd867

@jmacd867 jmacd867 commented Nov 13, 2026 •

Copy link
Copy Markdown
Collaborator

Closes #257

Summary

push to any branch, or a PR ─► meson-build.yml
                                  build plugin (Meson) + relay (cargo build --release)
                                  upload artifacts: plugin/PilotDataSync.xpl, relay/relay.exe

push tag v*      ─► release.yml ─► build: calls meson-build.yml (workflow_call)
                                   publish: tag push only, contents: write
                                     gh release create <tag> PilotDataSync.xpl relay.exe

manual run       ─► release.yml ─► build only (dry run, never publishes, even on a tag ref)
 .github/workflows/
 ├── meson-build.yml   # + relay build, + artifact uploads, + workflow_call, push on branches only
+└── release.yml       # v* tag publishes the release; manual run is a dry run
 relay/
+└── .cargo/config.toml  # static C runtime: relay.exe needs no VC++ redistributable
 README.md               # + "Download the built files"
 AGENTS.md               # lists release.yml

Evidence

  • Before: DLLs imported by relay.exe from cargo build --release (objdump):
    VCRUNTIME140.dll, api-ms-win-crt-{math,runtime,string,stdio,locale,heap}-l1-1-0.dll, so the lab PC needs the VC++ redistributable.
    After: DLLs imported by the CI-built relay.exe from this branch's run: Windows system DLLs only (kernel32, user32, gdi32, ws2_32, opengl32, d3dcompiler_47, …), and nothing from the VC++ redistributable.
  • The CI-built PilotDataSync.xpl imports XPLM_64.dll (from X-Plane), OPENGL32, KERNEL32, ntdll and the Universal CRT (api-ms-win-crt-*), which ships with Windows 10 and 11. It doesn't need the VC++ redistributable either.
  • The branch's CI run built both files and uploaded them as the plugin and relay artifacts.
  • Static checks: actionlint is clean, and yamllint finds nothing new. cd relay && cargo test passes 25 tests.

Not verified:

  • release.yml itself. GitHub only allows a manual run of a workflow that is on main, so the dry run can happen only after merge (Actions → Release → Run workflow).
  • relay.exe on a PC without the redistributable, and the CI-built plugin loading in X-Plane, both need the lab PCs. The README carries a note until someone confirms.

Merge Danger

Door: two-way

Nothing is published until someone pushes a v* tag. Merge #275 first, then tag, so the first release's plugin includes the flight-loop fix. Deleting a bad release and its tag undoes it.

Blast Radius: CI

meson-build.yml now also builds the relay, so each run takes longer, and its job is renamed "Build the plugin and relay on Windows" (no branch protection rule requires the old name). Tag pushes no longer trigger meson-build.yml directly; release.yml builds them instead.

meson-build.yml now also builds the relay and keeps both files as
workflow artifacts on every run. release.yml reuses that build; a v* tag
publishes both files to a GitHub Release, and a manual run is a dry run.
relay/.cargo/config.toml links the C runtime statically, so relay.exe
needs no VC++ redistributable (checked locally: no vcruntime140 or
api-ms-win-crt imports). The README says where to download them.
A manual run started on a tag ref no longer publishes: the publish job
needs a tag push. meson-build.yml builds branches only, so a v* tag is
built once, by release.yml. One download step fetches both artifacts,
now named plugin and relay. AGENTS.md lists release.yml, and the README
notes that the no-redistributable claim is unconfirmed on a clean lab PC
and that relay.exe opens a console window.
@sonarqubecloud

Copy link
Copy Markdown

@jmacd867
jmacd867 requested a review from Phlabry November 13, 2026 15:27

@Phlabry Phlabry left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM. relay/.cargo/config.toml is found from the working directory, not the manifest, so cargo build --manifest-path relay/Cargo.toml from the repo root drops the static CRT. CI sets working-directory, so it's fine there.

@jmacd867
jmacd867 merged commit dff0222 into main Nov 13, 2026
12 checks passed
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.

Publish PilotDataSync.xpl and relay.exe as GitHub Release files from CI

2 participants