fix(deploy): resolve releases without the GitHub API in install.sh#383
Merged
Merged
Conversation
670be23 to
8d9efeb
Compare
8d9efeb to
6a37f30
Compare
Contributor
There was a problem hiding this comment.
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.shto resolvelatestviareleases.atomand resolvenightlyassets viaexpanded_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.
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:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
curl ... install.sh | bashfailed withNo releases found. Two causes:403, which surfaced as the misleading error./releases/latestignores pre-releases, and every Spur release is a pre-release, so it returns404even when authenticated.Fix
Drop the GitHub API. Resolve the latest tag from the
releases.atomfeed (newest-first, first non-nightly tag) and the nightly asset fromexpanded_assets. Both are served by github.com with no rate limit and include pre-releases.Testing
Ran
install.shfor bothlatest(resolvesv0.3.0) andnightlyfrom a previously rate-limited IP. Both download, verify checksum, and install cleanly.