Skip to content

Update download server to serve raw binaries and drop ppc64le/s390x#174

Merged
openshift-merge-bot[bot] merged 2 commits intomigtools:oadp-devfrom
Joeavaikath:server-updates
Apr 1, 2026
Merged

Update download server to serve raw binaries and drop ppc64le/s390x#174
openshift-merge-bot[bot] merged 2 commits intomigtools:oadp-devfrom
Joeavaikath:server-updates

Conversation

@Joeavaikath
Copy link
Copy Markdown
Contributor

@Joeavaikath Joeavaikath commented Apr 1, 2026

Summary

  • Serve raw binaries instead of tar.gz archives on the download server so users
    can directly curl/wget the binary without extracting. Binaries use clean names
    without version/commit hashes (e.g. kubectl-oadp_linux_amd64). LICENSE is
    served as a separate downloadable file.
  • Drop ppc64le and s390x architecture support from build platforms, CI matrix,
    multi-arch manifests, and release notes.
  • Remove konflux-onboarding documentation (moved to oadp-operator wiki).

Test plan

  • Build container image with docker build -f Containerfile.download -t oadp-downloads .
  • Run container and verify download page renders correctly at /
  • Verify binaries are directly downloadable via curl at /download/<binary-name>
  • Verify LICENSE is accessible at /download/LICENSE
  • Confirm only amd64 and arm64 binaries are built (no ppc64le/s390x)

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • License file now available for download with releases
  • Chores

    • Removed support for ppc64le and s390x architectures; amd64 and arm64 are now the only supported platforms
    • Changed distribution format from compressed archives to pre-built binaries
    • Updated installation instructions to reflect new binary-based delivery method

Replace tar.gz archives with direct binary downloads so users can
curl or wget the binary directly without extracting. Binaries use
clean names without version/commit hashes (e.g. kubectl-oadp_linux_amd64).
LICENSE is served as a separate file. Adds release-binaries Makefile
target for the download server pipeline while keeping release-archives
for GitHub releases and krew.

Signed-off-by: Joseph <jvaikath@redhat.com>
Remove ppc64le and s390x from build platforms, CI matrix, and
multi-arch manifests. Also removes konflux-onboarding docs.

Signed-off-by: Joseph <jvaikath@redhat.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 1, 2026

📝 Walkthrough

Walkthrough

The pull request transitions the build and distribution system from archive-based (tar.gz) to binary-based delivery. This includes removing ppc64le and s390x architecture support, updating build targets in the Makefile, modifying container build configurations, adapting the download server to serve binaries instead of archives, and removing architecture-specific workflow steps and documentation.

Changes

Cohort / File(s) Summary
Workflow Configuration
.github/workflows/quay_binaries_push.yml, .github/workflows/release.yml
Removed ppc64le and s390x from build matrix and manifest creation; updated release documentation to list only amd64 and arm64 as supported Linux architectures.
Build Targets
Makefile
Removed linux/ppc64le and linux/s390x from PLATFORMS list; added new .PHONY target release-binaries that compiles platform binaries without compression, generates per-binary checksums, and includes LICENSE file.
Container Build Stages
Containerfile.download, konflux.Dockerfile
Updated builder stages to invoke make release-binaries instead of make release-archives; changed artifact copying from /archives to /app/release-binaries in final stage; simplified cache cleanup logic.
Download Server
cmd/downloads/server.go, cmd/downloads/templates/index.html
Refactored server to serve binaries from binaryDir instead of archives; renamed metadata struct from archiveFile to binaryFile; updated file discovery to match kubectl-oadp_ prefix; added LICENSE file handling; modified template to conditionally display license download link and updated installation instructions to handle binary filenames.
Documentation
docs/konflux-onboarding.md
Removed entire Konflux onboarding guide document covering image component registration, build configuration, and multi-architecture setup procedures.

Sequence Diagram

sequenceDiagram
    actor Developer
    participant BuildSystem as Build System<br/>(Make)
    participant Container as Container Image<br/>(Konflux/Quay)
    participant Server as Download Server
    participant Client as End User

    Developer->>BuildSystem: Trigger build
    BuildSystem->>BuildSystem: make release-binaries
    BuildSystem->>BuildSystem: Generate per-binary SHA256
    BuildSystem->>Container: Push binary artifacts
    
    Client->>Server: Request download index
    Server->>Server: Scan release-binaries dir
    Server->>Server: Discover binaries & LICENSE
    Server->>Client: Return listing with<br/>platform binaries
    
    Client->>Server: Download kubectl-oadp_<br/>for platform
    Server->>Container: Fetch binary
    Server->>Client: Serve binary
    
    Client->>Server: Download LICENSE
    Server->>Container: Fetch LICENSE
    Server->>Client: Serve LICENSE (text/plain)
Loading

Estimated Code Review Effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly Related PRs

Suggested Labels

approved, lgtm

Suggested Reviewers

  • mpryc
  • kaovilai
  • sseago

Poem

🐰 A binary hop, no archives in sight,
From tarballs we leap to swift binaries bright,
ppc64le and s390x bid their goodbye,
amd64 and arm64 reach toward the sky! 📦✨

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 14.29% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the two main changes: serving raw binaries from the download server and dropping ppc64le/s390x architecture support.
Description check ✅ Passed The description includes a comprehensive summary of changes and a detailed test plan, though it does not follow the required template structure with 'Why the changes were made' and 'How to test the changes made' sections.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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 and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
cmd/downloads/templates/index.html (1)

120-128: Glob pattern assumes single binary download.

The installation commands use kubectl-oadp_* which will work correctly when users download a single binary for their platform. If a user downloads multiple binaries to the same directory, the glob would match multiple files, causing mv to fail or behave unexpectedly.

This is a reasonable UX assumption for typical usage, but consider noting in the instructions to download to an empty directory or specifying the exact filename.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@cmd/downloads/templates/index.html` around lines 120 - 128, The install
instructions use a glob "kubectl-oadp_*" for chmod and mv which can match
multiple downloaded binaries and break the rename step; update the text and
commands around the code lines showing "chmod +x kubectl-oadp_*" and "sudo mv
kubectl-oadp_* /usr/local/bin/kubectl-oadp" to either instruct users to run the
steps from an empty/download-specific directory or to use the explicit
downloaded filename (e.g., the platform-specific kubectl-oadp_<platform> name)
so the mv targets a single file; ensure the copy-button data-cmd values and
visible comment line are updated to match the chosen safer approach.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@cmd/downloads/templates/index.html`:
- Around line 120-128: The install instructions use a glob "kubectl-oadp_*" for
chmod and mv which can match multiple downloaded binaries and break the rename
step; update the text and commands around the code lines showing "chmod +x
kubectl-oadp_*" and "sudo mv kubectl-oadp_* /usr/local/bin/kubectl-oadp" to
either instruct users to run the steps from an empty/download-specific directory
or to use the explicit downloaded filename (e.g., the platform-specific
kubectl-oadp_<platform> name) so the mv targets a single file; ensure the
copy-button data-cmd values and visible comment line are updated to match the
chosen safer approach.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 7e74a115-9500-411e-bba5-be53716a511e

📥 Commits

Reviewing files that changed from the base of the PR and between 2658d40 and 51b3950.

📒 Files selected for processing (8)
  • .github/workflows/quay_binaries_push.yml
  • .github/workflows/release.yml
  • Containerfile.download
  • Makefile
  • cmd/downloads/server.go
  • cmd/downloads/templates/index.html
  • docs/konflux-onboarding.md
  • konflux.Dockerfile
💤 Files with no reviewable changes (1)
  • docs/konflux-onboarding.md

mpryc added a commit to migtools/oadp-vmdp that referenced this pull request Apr 1, 2026
Replace versioned binary names (oadp-vmdp_${VERSION}_${os}_${arch})
with clean names (oadp-vmdp_${os}_${arch}) so users can directly
curl/wget binaries without version/commit hash in the filename.
Switch from single sha256sum.txt to per-file .sha256 sidecar checksums.
Add LICENSE as a downloadable file on the download server page.

Similar to migtools/oadp-cli#174

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Michal Pryc <mpryc@redhat.com>
mpryc added a commit to migtools/oadp-vmdp that referenced this pull request Apr 1, 2026
Replace versioned binary names (oadp-vmdp_${VERSION}_${os}_${arch})
with clean names (oadp-vmdp_${os}_${arch}) so users can directly
curl/wget binaries without version/commit hash in the filename.
Switch from single sha256sum.txt to per-file .sha256 sidecar checksums.
Add LICENSE as a downloadable file on the download server page.

Similar to migtools/oadp-cli#174

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Michal Pryc <mpryc@redhat.com>
mpryc added a commit to migtools/oadp-vmdp that referenced this pull request Apr 1, 2026
Replace versioned binary names (oadp-vmdp_${VERSION}_${os}_${arch})
with clean names (oadp-vmdp_${os}_${arch}) so users can directly
curl/wget binaries without version/commit hash in the filename.
Switch from single sha256sum.txt to per-file .sha256 sidecar checksums.
Add LICENSE as a downloadable file on the download server page.

Similar to migtools/oadp-cli#174

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Michal Pryc <mpryc@redhat.com>
@mpryc
Copy link
Copy Markdown
Contributor

mpryc commented Apr 1, 2026

/lgtm

@openshift-ci openshift-ci bot added the lgtm label Apr 1, 2026
@openshift-ci
Copy link
Copy Markdown

openshift-ci bot commented Apr 1, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: Joeavaikath, kaovilai, mpryc

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:
  • OWNERS [Joeavaikath,kaovilai,mpryc]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-merge-bot openshift-merge-bot bot merged commit 3e19186 into migtools:oadp-dev Apr 1, 2026
15 checks passed
@Joeavaikath
Copy link
Copy Markdown
Contributor Author

/cherry-pick oadp-1.6

@openshift-cherrypick-robot
Copy link
Copy Markdown

@Joeavaikath: new pull request created: #175

Details

In response to this:

/cherry-pick oadp-1.6

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants