Skip to content

ci: publish an unsigned tunnel-enabled runner with every release - #37

Merged
Timo972 merged 1 commit into
masterfrom
timo/unsigned-tunnel-prebuild
Sep 29, 2026
Merged

Timo972 merged 1 commit into
masterfrom
timo/unsigned-tunnel-prebuild

Conversation

@Timo972

@Timo972 Timo972 commented Sep 29, 2026

Copy link
Copy Markdown

Why

The release prebuild (prebuild.yml) only ships the plain WebDriverAgentRunner scheme, which contains the broadcast extension but not the WebDriverAgentTunnel packet-tunnel extension. The tunnel build exists only as the CI-signed WebDriverAgentRunnerTunnel.ipa on R2. That IPA is signed with provisioning profiles stored as repository secrets, so it only installs on devices already listed in them.

mobilerun-ios's install-time signers (ASC and Xcode backends) already provision a packet-tunnel extension when the artifact contains one. Because no unsigned tunnel artifact is published, phones signed at install time never get the extension, and ConnectProxy (SOCKS5) cannot work on them. Seen on the demo host droidrun-ios-host-1, where an iOS 26 phone could not set a proxy.

What

  • prebuild.yml: new build-real matrix leg for the WebDriverAgentRunnerTunnel scheme. It builds unsigned like the others, with submodules checked out and Scripts/build-hev-socks5-tunnel.sh run first, and is attached to the release as WebDriverAgentRunnerTunnel-Runner.zip. It is also covered by SHA256SUMS and reachable via releases/latest/download/WebDriverAgentRunnerTunnel-Runner.zip.
  • A verification step fails the leg if WebDriverAgentTunnel.appex or WebDriverAgentBroadcast.appex is missing from the zip.
  • Scripts/ci/build-real.sh: optional APP_NAME (defaults to $SCHEME-Runner.app), because the Tunnel scheme still produces WebDriverAgentRunner-Runner.app. The existing legs are unchanged.

The existing plain zips and the signed R2 workflow are untouched.

Verification

I ran the leg's commands locally (Xcode 27.0, arm64 Mac): submodule init, build-hev-socks5-tunnel.sh, then build-real.sh with this leg's matrix values. Result:

  • WebDriverAgentRunnerTunnel-Runner.zip, 1.5 MB, containing WebDriverAgentRunner-Runner.app:
    • com.facebook.WebDriverAgentRunner.xctrunner
    • PlugIns/WebDriverAgentBroadcast.appex: …xctrunner.broadcast, com.apple.broadcast-services-upload
    • PlugIns/WebDriverAgentTunnel.appex: …xctrunner.tunnel, com.apple.networkextension.packet-tunnel
  • The verification step's check passes against that zip.

Not verified yet:

  • The workflow run itself. It only triggers on a published release, and CI uses Xcode 16.4 while I built locally with Xcode 27.0.
  • Signing this zip with mobilerun-ios's ASC backend and connecting a proxy on hardware. That needs the Network Extensions capability on the signing team.

Consumer

After the next release, mobilerun-ios hosts that need the proxy set:

wda:
  unsigned_url: https://github.com/droidrun/WebDriverAgent/releases/latest/download/WebDriverAgentRunnerTunnel-Runner.zip

and reinstall the runner once per phone (mobilerun-ios setup <udid> --reinstall).

🤖 Generated with Claude Code

The release prebuild only ships the plain WebDriverAgentRunner scheme, which
embeds the broadcast extension but not the WebDriverAgentTunnel packet-tunnel
extension. The tunnel build existed only as the CI-signed IPA on R2, locked
to the devices in the stored provisioning profiles, so install-time signers
(mobilerun-ios ASC/Xcode backends) had no tunnel artifact to sign for new
phones and the SOCKS5 proxy was unavailable on them.

Build the WebDriverAgentRunnerTunnel scheme unsigned next to the plain runner
and attach it as WebDriverAgentRunnerTunnel-Runner.zip. The tunnel leg checks
out submodules and builds the hev-socks5-tunnel engine first, and fails if
either extension is missing from the zip. build-real.sh takes an APP_NAME
override because this scheme still produces WebDriverAgentRunner-Runner.app.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@Timo972
Timo972 requested a review from sleynsol September 29, 2026 13:05
@Timo972
Timo972 merged commit b79c2b8 into master Sep 29, 2026
4 checks passed
@Timo972
Timo972 deleted the timo/unsigned-tunnel-prebuild branch September 29, 2026 13:28
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.

2 participants