Skip to content

feat: publish mailtrap-local to the Snap Store - #53

Merged
leonid-shevtsov merged 1 commit into
mainfrom
feat/snap-store
Aug 26, 2026
Merged

leonid-shevtsov merged 1 commit into
mainfrom
feat/snap-store

Conversation

@leonid-shevtsov

@leonid-shevtsov leonid-shevtsov commented Aug 25, 2026 •

Copy link
Copy Markdown
Contributor

What & why

Ubuntu desktop is a large share of Linux installers, and we had no Snap channel. Goreleaser now packs linux amd64/arm64 snaps and uploads them to the Snap Store on each v* tag (stable only), same pipeline as Docker Hub.

  • Strict core22 snap; DB + secret key under $SNAP_USER_COMMON (~/snap/mailtrap-local/common/).
  • Store icon from the existing logo (snap/gui/icon.png).
  • CI snap job: snapshot pack + snap install --dangerous + SMTP smoke (no store).
    • note that it demonstrates that the pack works end to end

Release environment still needs SNAPCRAFT_STORE_CREDENTIALS. First store upload waits on Canonical review.

How to test

  • After the next v* tag (and Canonical review), sudo snap install mailtrap-local on Ubuntu.
  • mailtrap-local --version; UI at http://127.0.0.1:3550; SMTP at 127.0.0.1:3535.
  • Caught mail persists under ~/snap/mailtrap-local/common/ across a snap refresh.

Summary by CodeRabbit

  • New Features

    • Added Snap package distribution for both AMD64 and ARM64 systems.
    • Snap packages now support persistent database storage and required network access.
  • Documentation

    • Added Snap installation and persistence instructions.
    • Updated distribution channels and release pipeline documentation.
  • Tests

    • Added automated checks for Snap installation, version output, API availability, SMTP functionality, and database persistence.

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

coderabbitai Bot commented Aug 25, 2026 •

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 17829e2e-c296-42f9-9869-eb261f30aebb

📥 Commits

Reviewing files that changed from the base of the PR and between a3b4a80 and 426ac1b.

⛔ Files ignored due to path filters (2)
  • snap/gui/icon.png is excluded by !**/*.png
  • snap/gui/icon.svg is excluded by !**/*.svg
📒 Files selected for processing (4)
  • .github/workflows/ci.yml
  • .github/workflows/release.yml
  • .goreleaser.yaml
  • README.md

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The change adds Snap packaging for amd64 and arm64, CI smoke tests, Snap Store publication, release asset verification, and README installation instructions.

Changes

Snap distribution

Layer / File(s) Summary
Snap package configuration
.goreleaser.yaml
GoReleaser now defines stable mailtrap-local Snap packages with core22, strict confinement, bundled icons, persistent database and secret-key paths, and required plugs.
Snap CI validation
.github/workflows/ci.yml
CI builds and installs an amd64 Snap snapshot, checks API and OpenAPI availability, runs SMTP smoke tests, and verifies the database path.
Snap Store release and documentation
.github/workflows/release.yml, .goreleaser.yaml, README.md
The release workflow publishes and verifies amd64 and arm64 Snap assets. The README documents Snap installation, persistence, repository contents, and release publication.

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

Merge Risk: ⚪ Minimal · up to 426ac

The Snap packaging and release automation change has no identified actionable merge-blocking risk at the current head; it is merge-ready after normal checks and review.

Sequence Diagram(s)

sequenceDiagram
  participant GitHubActions
  participant GoReleaser
  participant Snapcraft
  participant SnapStore
  participant GitHubRelease
  GitHubActions->>GoReleaser: run release with Snapcraft credentials
  GoReleaser->>Snapcraft: publish stable amd64 and arm64 packages
  Snapcraft->>SnapStore: upload Snap packages
  GoReleaser->>GitHubRelease: upload Snap assets
  GitHubActions->>GitHubRelease: verify amd64 and arm64 Snap assets
Loading

Suggested reviewers: sergeykorolev

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly and concisely describes the main change: publishing mailtrap-local to the Snap Store.
Description check ✅ Passed The description explains the motivation, key changes, testing steps, Snap persistence behavior, and release prerequisites. It omits the template's separate Changes and Images and GIFs sections, but th…
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (4 skipped: 4 unsupported.)

Full details: Description check

Explanation

The description explains the motivation, key changes, testing steps, Snap persistence behavior, and release prerequisites. It omits the template's separate Changes and Images and GIFs sections, but the relevant change information is present and the missing images section is non-critical.


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.

@leonid-shevtsov
leonid-shevtsov merged commit d9fa94f into main Aug 26, 2026
6 checks passed
@leonid-shevtsov
leonid-shevtsov deleted the feat/snap-store branch August 26, 2026 08:59
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