Skip to content

fix(deploy): resolve releases without the GitHub API in install.sh#383

Merged
shiv-tyagi merged 1 commit into
ROCm:mainfrom
shiv-tyagi:fix/install-latest-resolution
Jul 4, 2026
Merged

fix(deploy): resolve releases without the GitHub API in install.sh#383
shiv-tyagi merged 1 commit into
ROCm:mainfrom
shiv-tyagi:fix/install-latest-resolution

Conversation

@shiv-tyagi

Copy link
Copy Markdown
Member

What

curl ... install.sh | bash failed with No releases found. Two causes:

  1. The unauthenticated GitHub API is rate-limited to 60 req/hr per IP; shared egress IPs hit 403, which surfaced as the misleading error.
  2. /releases/latest ignores pre-releases, and every Spur release is a pre-release, so it returns 404 even when authenticated.

Fix

Drop the GitHub API. Resolve the latest tag from the releases.atom feed (newest-first, first non-nightly tag) and the nightly asset from expanded_assets. Both are served by github.com with no rate limit and include pre-releases.

Testing

Ran install.sh for both latest (resolves v0.3.0) and nightly from a previously rate-limited IP. Both download, verify checksum, and install cleanly.

Copilot AI review requested due to automatic review settings July 4, 2026 16:43
@shiv-tyagi shiv-tyagi force-pushed the fix/install-latest-resolution branch from 670be23 to 8d9efeb Compare July 4, 2026 16:46
@shiv-tyagi shiv-tyagi force-pushed the fix/install-latest-resolution branch from 8d9efeb to 6a37f30 Compare July 4, 2026 16:46

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.

Pull request overview

This PR broadens beyond the stated deploy/install fix by (a) changing install.sh release resolution to avoid GitHub API rate limits and pre-release handling issues, and (b) introducing node drain/removal and agent deregistration plumbing across the controller/agent/proto/CLI plus new E2E + unit coverage for node-down eviction behavior.

Changes:

  • Update install.sh to resolve latest via releases.atom and resolve nightly assets via expanded_assets (no GitHub API usage).
  • Add node drain/remove and agent self-deregistration APIs (proto + spurctld server + spur-cli), including eviction/job finalization on node down/remove and a configurable heartbeat timeout.
  • Add new E2E tests and expand unit tests around eviction and node state transitions.

Reviewed changes

Copilot reviewed 1 out of 1 changed files in this pull request and generated no comments.

Show a summary per file
File Description
tests/native_host/e2e/test_deregistration.py Adds E2E coverage for drain/remove, forced eviction, agent SIGTERM deregistration, and down-node job failure.
tests/native_host/e2e/conftest.py Introduces cluster_config_overrides fixture and threads overrides into cluster deployment fixtures.
tests/native_host/e2e/cluster.py Broadens stale-agent cleanup to also kill any process holding the agent port.
proto/slurm.proto Adds controller RPCs for draining/removing nodes and agent-triggered deregistration.
install.sh Removes GitHub API calls for resolving latest/nightly release artifacts.
crates/spurd/src/reporter.rs Adds agent-side deregistration RPC call into the controller.
crates/spurd/src/main.rs Handles SIGTERM to attempt deregistration before process exit.
crates/spurctld/src/server.rs Implements new gRPC endpoints for drain/remove/deregister flows and forwards to leader when needed.
crates/spurctld/src/raft.rs Changes Raft client response from single finalized job to a list of finalized jobs.
crates/spurctld/src/main.rs Makes node heartbeat timeout configurable and triggers cancel + finalize steps for evictions.
crates/spurctld/src/cluster.rs Implements drain/remove operations, eviction logic, and multi-job finalization side effects.
crates/spur-core/src/wal.rs Adds WAL op for node removal + serde round-trip tests.
crates/spur-core/src/job.rs Allows Completing -> NodeFail transition.
crates/spur-core/src/config.rs Adds controller.heartbeat_timeout_secs configuration and tests.
crates/spur-cli/src/node.rs Adds spur node drain and spur node remove commands.
.github/workflows/ci.yml Changes Trivy scan severities and makes scans non-blocking via exit-code: "0".

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@shiv-tyagi shiv-tyagi merged commit bc3ac1c into ROCm:main Jul 4, 2026
11 of 13 checks passed
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #383      +/-   ##
==========================================
- Coverage   68.21%   68.21%   -0.00%     
==========================================
  Files         134      134              
  Lines       36088    36098      +10     
==========================================
+ Hits        24615    24621       +6     
- Misses      11473    11477       +4     
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

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.

3 participants