Skip to content

Fix installer script merge and serve setup EXE from VM disk. - #9

Merged
baasith6 merged 1 commit into
mainfrom
azure-mvp-deploy
Jul 28, 2026
Merged

Fix installer script merge and serve setup EXE from VM disk.#9
baasith6 merged 1 commit into
mainfrom
azure-mvp-deploy

Conversation

@baasith6

@baasith6 baasith6 commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Remove large installer binaries from git (GitHub 100MB limit); build via scripts/build-installer.ps1 instead.

Summary by CodeRabbit

  • New Features

    • Added configurable connector installer download handling.
    • Simplified installer-generated configuration with clearer setup details and selected source information.
    • Improved “keep existing” installations by applying only the necessary source updates.
  • Bug Fixes

    • Corrected installer validation flow for RTSP sources.
    • Improved handling when no valid RTSP sources are provided.

Remove large installer binaries from git (GitHub 100MB limit); build via scripts/build-installer.ps1 instead.

Co-authored-by: Cursor <cursoragent@cursor.com>
@cursor

cursor Bot commented Jul 28, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@baasith6
baasith6 merged commit 15c4d94 into main Jul 28, 2026
0 of 4 checks passed
@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 8d61840e-777e-4185-9b54-3eb8cf4fa14c

📥 Commits

Reviewing files that changed from the base of the PR and between b7cc2b5 and 19a1da7.

⛔ Files ignored due to path filters (1)
  • installer-site/ONEVO-Connector-Setup-1.1.0.exe is excluded by !**/*.exe
📒 Files selected for processing (4)
  • .gitignore
  • backend/appsettings.json
  • connector/installer/onevo-connector.iss
  • docker-compose.yml

📝 Walkthrough

Walkthrough

The installer’s RTSP validation scope is corrected, generated configuration is simplified around sources, and preserved configurations use source-update.json. Backend deployment configuration now passes the connector installer download URL, while installer executables are ignored by Git.

Changes

Connector installer configuration

Layer / File(s) Summary
Installer validation and configuration serialization
connector/installer/onevo-connector.iss, .gitignore
The RTSP validation branch is properly closed, install-time config.json output uses simplified setup and source fields, preserved configurations write a source overlay, and installer executables are ignored.
Installer distribution configuration wiring
backend/appsettings.json, docker-compose.yml
Connector installer settings retain the local path and receive ConnectorInstaller__DownloadUrl from CONNECTOR_INSTALLER_URL.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

Suggested reviewers: kirusthiya

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch azure-mvp-deploy

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Fix installer wizard and serve generated EXE from VM disk

🐞 Bug fix ⚙️ Configuration changes 🕐 10-20 Minutes

Grey Divider

AI Description

• Fix installer wizard merge damage and remove duplicated legacy configuration generation.
• Exclude generated setup executables from Git to avoid repository size limits.
• Serve installers from VM-mounted disk while retaining an optional external download URL.
Diagram

graph TD
  A["Build Script"] --> B[("VM EXE Directory")] --> C["Docker Bind Mount"] --> D["Installer Service"] --> E["Download API"] --> F["Windows User"]
  G["HTTPS URL Config"] -.-> D
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Object storage or CDN
  • ➕ Avoids consuming backend bandwidth
  • ➕ Supports scalable and geographically distributed downloads
  • ➕ Separates installer releases from VM lifecycle
  • ➖ Requires additional infrastructure and access configuration
  • ➖ Adds release upload and metadata synchronization steps
2. GitHub Releases
  • ➕ Keeps large binaries outside repository history
  • ➕ Provides versioned release artifacts and stable download links
  • ➖ May expose artifacts publicly or require authenticated downloads
  • ➖ Couples deployment automation to GitHub release management

Recommendation: Use the PR's VM-disk approach for the MVP because it avoids Git's binary limits while reusing the existing installer service and Docker mount. Retaining the optional HTTPS URL provides a low-friction migration path to object storage or a CDN when availability or download volume increases.

Files changed (4) +4 / -39

Bug fix (1) +1 / -35
onevo-connector.issRepair wizard flow and configuration generation +1/-35

Repair wizard flow and configuration generation

• Closes the RTSP validation block correctly after the installer-script merge. Removes duplicated legacy single-source configuration generation so the current multi-source JSON remains authoritative.

connector/installer/onevo-connector.iss

Other (3) +3 / -4
.gitignoreExclude generated installer executables +1/-0

Exclude generated installer executables

• Ignores setup executables placed under 'installer-site', preventing large generated binaries from entering Git history.

.gitignore

appsettings.jsonDefault installer delivery to local disk +1/-4

Default installer delivery to local disk

• Removes the stale hosted download URL and hard-coded size and checksum. The backend now defaults to the configured installer directory and derives metadata from the local executable.

backend/appsettings.json

docker-compose.ymlSupport optional external installer downloads +1/-0

Support optional external installer downloads

• Maps 'CONNECTOR_INSTALLER_URL' into backend configuration while preserving the VM-backed installer directory mount. An empty value keeps downloads served from the mounted executable.

docker-compose.yml

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (2) 📘 Rule violations (0) 📜 Skill insights (0)

Grey Divider


Action required

1. Disk fallback mounts wrong directory 🐞 Bug ≡ Correctness
Description
When CONNECTOR_INSTALLER_URL is unset, the backend uses disk fallback, but Compose mounts
./installer-site while the production workflow copies the generated EXE to
/opt/onevo/connector/dist. Consequently, the installer metadata and download endpoints return 404
after an otherwise successful production deployment.
Code

docker-compose.yml[88]

+      ConnectorInstaller__DownloadUrl: ${CONNECTOR_INSTALLER_URL:-}
Relevance

⭐⭐⭐ High

Deterministic mount/deployment path mismatch breaks the PR’s stated disk-serving intent.

PR-#7

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The blank URL selects TryGetInfo, which resolves the configured container path. Compose backs that
path with ./installer-site, but the deployment workflow places the built EXE in
/opt/onevo/connector/dist, so the container cannot see it.

backend/Services/ConnectorInstallerService.cs[89-110]
docker-compose.yml[86-103]
.github/workflows/deploy-mvp.yml[180-192]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The disk-backed installer deployment copies the generated EXE to a different host directory than the one mounted into the backend container, leaving the backend unable to find the installer.

## Issue Context
The installer workflow uploads to `/opt/onevo/connector/dist`, while Compose mounts `./installer-site` at `/app/connector-dist`. Make these paths identical, either by changing the volume source or the workflow upload destination.

## Fix Focus Areas
- docker-compose.yml[86-103]
- .github/workflows/deploy-mvp.yml[180-192]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

2. External installer metadata disappears 🐞 Bug ≡ Correctness
Description
The PR removes the configured size and SHA-256 while the new Compose override forwards only
CONNECTOR_INSTALLER_URL. When that URL is configured without another provider supplying metadata,
InstallerInfo returns size 0 and an empty hash, producing incorrect download metadata and
removing the published integrity value.
Code

backend/appsettings.json[L52-53]

-    "SizeBytes": 98067717,
-    "Sha256": "4612e540532d54ae5940e24e62d207a60e4d3d1cc74bcad14f91c6b5e86cb7c4"
+    "Path": "../installer-site"
Relevance

⭐⭐⭐ High

PR #7 later restores and forwards the exact missing installer metadata fields.

PR-#7

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The environment template defines URL, size, and SHA values, but Compose forwards only the URL. In
external mode the service returns configured size and hash directly rather than deriving them from
disk, so the removed defaults become zero and empty string.

.env.example[31-35]
docker-compose.yml[86-88]
backend/Services/ConnectorInstallerService.cs[89-100]
backend/appsettings.json[48-50]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
External installer mode no longer supplies the configured artifact size and SHA-256 to the backend.

## Issue Context
The environment template already defines `CONNECTOR_INSTALLER_SIZE_BYTES` and `CONNECTOR_INSTALLER_SHA256`. Map these variables to the corresponding ASP.NET configuration keys alongside the external download URL.

## Fix Focus Areas
- docker-compose.yml[86-88]
- backend/appsettings.json[48-50]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

To customize comments, go to the Qodo configuration screen, or learn more in the docs.

Qodo Logo

Comment thread docker-compose.yml
Pilot__AlertVisibilityMode: ${ALERT_VISIBILITY_MODE}
ConnectorInstaller__Version: ${CONNECTOR_INSTALLER_VERSION:-1.1.5}
ConnectorInstaller__Path: /app/connector-dist
ConnectorInstaller__DownloadUrl: ${CONNECTOR_INSTALLER_URL:-}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Action required

1. Disk fallback mounts wrong directory 🐞 Bug ≡ Correctness

When CONNECTOR_INSTALLER_URL is unset, the backend uses disk fallback, but Compose mounts
./installer-site while the production workflow copies the generated EXE to
/opt/onevo/connector/dist. Consequently, the installer metadata and download endpoints return 404
after an otherwise successful production deployment.
Agent Prompt
## Issue description
The disk-backed installer deployment copies the generated EXE to a different host directory than the one mounted into the backend container, leaving the backend unable to find the installer.

## Issue Context
The installer workflow uploads to `/opt/onevo/connector/dist`, while Compose mounts `./installer-site` at `/app/connector-dist`. Make these paths identical, either by changing the volume source or the workflow upload destination.

## Fix Focus Areas
- docker-compose.yml[86-103]
- .github/workflows/deploy-mvp.yml[180-192]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread backend/appsettings.json
Comment on lines -52 to -53
"SizeBytes": 98067717,
"Sha256": "4612e540532d54ae5940e24e62d207a60e4d3d1cc74bcad14f91c6b5e86cb7c4"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

2. External installer metadata disappears 🐞 Bug ≡ Correctness

The PR removes the configured size and SHA-256 while the new Compose override forwards only
CONNECTOR_INSTALLER_URL. When that URL is configured without another provider supplying metadata,
InstallerInfo returns size 0 and an empty hash, producing incorrect download metadata and
removing the published integrity value.
Agent Prompt
## Issue description
External installer mode no longer supplies the configured artifact size and SHA-256 to the backend.

## Issue Context
The environment template already defines `CONNECTOR_INSTALLER_SIZE_BYTES` and `CONNECTOR_INSTALLER_SHA256`. Map these variables to the corresponding ASP.NET configuration keys alongside the external download URL.

## Fix Focus Areas
- docker-compose.yml[86-88]
- backend/appsettings.json[48-50]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

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