Skip to content

Conversation

@sgammon
Copy link
Member

@sgammon sgammon commented Jul 21, 2025

Ready for review Powered by Pull Request Badge

Summary

Adds support for standard Linux distribution formats during our release process, including .deb (Debian/Ubuntu), .rpm (CentOS/Fedora), and .apk (Alpine). Codifies much of our manual release process into scripts where we can hook in a build flow for these packages as well.

  • CLI Accoutrements
    • Shell completions script
    • Generate completions via elide completions
    • Generate CLI docs
    • Render CLI docs as HTML
    • Render CLI docs as manpages
  • Release Automation
    • Assembly of pub dist structure
    • Assembly of GitHub release structure
    • Container image build/release script
    • New dependencies in CI (fpm, debsigs, rclone, gh, etc.)
    • Doc, completions, sources.zip, and resources.tgz (needed for various packages)
    • Build GitHub release root
    • Build dist-pub release root
    • Build Linux packages in CI
    • Build and publish dists in CI
  • Linux Packages
    • Debian
      • Build deb
      • Test deb
      • Sign deb
    • Fedora
      • Build rpm
      • Test rpm
      • Sign rpm
    • Alpine
      • Build apk
      • Test apk
      • Sign apk

Note

Manpages don't ship within package distributions yet.

@sgammon sgammon added this to the Release R18: Beta milestone Jul 21, 2025
@sgammon sgammon requested review from a team and Copilot July 21, 2025 23:57
@sgammon sgammon self-assigned this Jul 21, 2025
@sgammon sgammon added enhancement New feature or request module:cli CLI module issues and features labels Jul 21, 2025
@sgammon sgammon added this to Elide Jul 21, 2025
@sgammon sgammon added the platform:linux Issues relating to Linux label Jul 21, 2025
@sgammon sgammon moved this to In Progress in Elide Jul 21, 2025
This was linked to issues Jul 21, 2025

This comment was marked as outdated.

@sgammon sgammon linked an issue Jul 22, 2025 that may be closed by this pull request
@codecov
Copy link

codecov bot commented Jul 22, 2025

Codecov Report

Attention: Patch coverage is 83.33333% with 1 line in your changes missing coverage. Please review.

Project coverage is 39.82%. Comparing base (153171f) to head (9bc68eb).
Report is 11 commits behind head on main.

Files with missing lines Patch % Lines
...ckages/cli/src/main/kotlin/elide/tool/cli/Elide.kt 66.66% 1 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #1576      +/-   ##
==========================================
- Coverage   39.83%   39.82%   -0.01%     
==========================================
  Files         769      769              
  Lines       37015    37010       -5     
  Branches     5234     5234              
==========================================
- Hits        14746    14741       -5     
  Misses      20500    20500              
  Partials     1769     1769              
Flag Coverage Δ
jvm 39.82% <83.33%> (-0.01%) ⬇️
lib 39.82% <83.33%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...c/main/kotlin/elide/tool/cli/cmd/dev/LspCommand.kt 2.02% <100.00%> (-0.50%) ⬇️
...c/main/kotlin/elide/tool/cli/cmd/dev/McpCommand.kt 12.90% <100.00%> (-2.73%) ⬇️
...kotlin/elide/tool/cli/cmd/repl/ToolShellCommand.kt 31.53% <100.00%> (-0.21%) ⬇️
...ckages/cli/src/main/kotlin/elide/tool/cli/Elide.kt 33.03% <66.66%> (+0.60%) ⬆️

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 153171f...9bc68eb. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@sgammon sgammon force-pushed the feat/deb-rpm-dists branch from e762cee to 8d583d9 Compare July 22, 2025 01:43
@sgammon sgammon requested a review from Copilot July 22, 2025 01:43

This comment was marked as outdated.

@sgammon sgammon moved this from In Progress to Done in Elide Jul 22, 2025
@sgammon sgammon force-pushed the feat/deb-rpm-dists branch from 8d583d9 to 6f60a21 Compare July 22, 2025 02:38
@sgammon sgammon requested a review from Copilot July 22, 2025 02:38
sgammon added 3 commits July 21, 2025 19:39
feat(cli): add task to generate picocli asciidoc
feat(cli): add task to generate manpages from asciidoc
feat(cli): add task to generate shell completions
feat(cli): add `elide completions` command
chore(cli): hook new docs tasks to `assemble`
chore(cli): update reachability metadata

Signed-off-by: Sam Gammon <sam@elide.dev>
Signed-off-by: Sam Gammon <sam@elide.dev>
feat: add packaging configuration/srcs for deb builds
chore: add deb build/sign/test commands to makefile
chore: move release scripts to `tools/scripts/release`
chore: add deb sign script
chore: add deb build script

Signed-off-by: Sam Gammon <sam@elide.dev>

This comment was marked as outdated.

sgammon added 6 commits July 21, 2025 19:43
feat: add packaging configuration/srcs for rpm builds
chore: add rpm build/sign/test commands to makefile
chore: add rpm sign script
chore: add rpm build script

Signed-off-by: Sam Gammon <sam@elide.dev>
Signed-off-by: Sam Gammon <sam@elide.dev>
feat: add packaging configuration/srcs for apk builds
chore: add apk build/sign/test commands to makefile
chore: add apk sign script
chore: add apk build script

Signed-off-by: Sam Gammon <sam@elide.dev>
Signed-off-by: Sam Gammon <sam@elide.dev>
Signed-off-by: Sam Gammon <sam@elide.dev>
Signed-off-by: Sam Gammon <sam@elide.dev>
sgammon added 2 commits July 21, 2025 19:43
Signed-off-by: Sam Gammon <sam@elide.dev>
@sgammon sgammon force-pushed the feat/deb-rpm-dists branch from 6f60a21 to 9bc68eb Compare July 22, 2025 02:44
@sgammon sgammon requested a review from Copilot July 22, 2025 02:44
Copy link

Copilot AI left a comment

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 adds comprehensive Linux distribution support for Elide's release process, implementing packaging for Debian (.deb), RPM (.rpm), and Alpine (.apk) formats. The changes automate much of the manual release workflow and introduce CLI completions generation.

Key changes include:

  • Automated Linux package building (deb, rpm, apk) with FPM integration
  • Shell completions and CLI documentation generation
  • Release automation scripts with shared configuration
  • Package signing infrastructure and testing containers

Reviewed Changes

Copilot reviewed 28 out of 31 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
tools/scripts/release/*.sh New release automation scripts for building, signing, and publishing distributions
packages/cli/packaging/ Package installation scripts and test containers for each distribution format
packages/cli/build.gradle.kts Build system updates for CLI docs, completions, and package resources
Makefile New targets for building and testing Linux distributions
packages/cli/src/main/kotlin/elide/tool/cli/ Constructor injection refactoring and completions command addition

@sgammon sgammon merged commit d6ddd22 into main Jul 22, 2025
18 checks passed
@sgammon sgammon mentioned this pull request Sep 21, 2025
31 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request module:cli CLI module issues and features platform:linux Issues relating to Linux

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Paths break for Kotlin resources outside of $HOME Ship .deb and .rpm dists

2 participants