Page:
ADR 0010 automated multi platform forgejo release workflow
Pages
0001 deepen classification safety auditor
0002 deepen rules registry
0003 prune legacy script shims
0004 decouple rfc codecs from mailbox gateway
0005 collapse workflow into mailbox pipeline
0006 decouple gateway orchestration into pipeline
0007 incremental scan cache and progress feedback
0008 port mailsweep to synchronous rust
0009 retire python baseline and complete rust cutover
0010 automated multi platform forgejo release workflow
ADR 0001 deepen classification safety auditor
ADR 0002 deepen rules registry
ADR 0003 prune legacy script shims
ADR 0004 decouple rfc codecs from mailbox gateway
ADR 0005 collapse workflow into mailbox pipeline
ADR 0006 decouple gateway orchestration into pipeline
ADR 0007 incremental scan cache and progress feedback
ADR 0008 port mailsweep to synchronous rust
ADR 0009 retire python baseline and complete rust cutover
ADR 0010 automated multi platform forgejo release workflow
ADRs
CLI Reference
Domain Context
FAQ
Home
Internals
Python API
Rules Schema
Rust API
No results
1
ADR 0010 automated multi platform forgejo release workflow
MailSweep Doc Bot edited this page 2026-08-30 17:03:42 +00:00
Table of Contents
10. Automated Multi-Platform Forgejo Release Workflow
Date: 2026-08-30
Status
Accepted
Context
With MailSweep implemented as a single, synchronous Rust codebase, distribution requires automated continuous integration to cross-compile, package, checksum, and publish standalone binaries for multiple platforms whenever a new version tag (v*) is pushed.
Our CI infrastructure runs on Forgejo Actions with Ubuntu-based container runners (ubuntu-latest). We need cross-platform binary distribution without requiring dedicated physical Windows runners.
Decision
We will implement an automated release workflow in .forgejo/workflows/release.yml with the following architectural decisions:
-
Target Compilation Matrix:
x86_64-unknown-linux-gnu: Standard Linux x86_64 (native runner toolchain).aarch64-unknown-linux-gnu: Linux ARM64 (cross-compiled withgcc-aarch64-linux-gnu).x86_64-pc-windows-gnu: Windows x86_64 (cross-compiled on Linux usingmingw-w64).
-
Dual-Binary Packaging:
- Package both compiled binary entrypoints (
mailsweepandforgejo) into each release archive. - Include
README.md,LICENSE,rules.json, andsources.jsonin the archive root.
- Package both compiled binary entrypoints (
-
Archive Packaging & Cryptographic Integrity:
- Package
.tar.gzarchives for Linux targets and.ziparchives for Windows targets. - Archive naming format:
mailsweep-${VERSION}-${TARGET}.(tar.gz|zip). - Compute standalone SHA-256 digest files (
.sha256) for every archive.
- Package
-
Trigger & Publishing Semantics:
- Triggers on git tags matching
v*(e.g.v0.1.0) and manualworkflow_dispatch. - Automatically publishes release assets to the matching Forgejo release via the Forgejo REST API.
- Triggers on git tags matching
Consequences
- End users on Windows and Linux can download pre-compiled, standalone MailSweep binaries with verified checksums.
- Eliminates the need for end users or server operators to install Cargo/Rust toolchains.
- Cross-compiles all target architectures inside unified Linux container runners.