Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
6337bdc
Switch Arancini container publishing to Harbor
mfreeman451 Apr 2, 2026
077b3f1
Move Arancini CI and publishing to Forgejo
mfreeman451 Apr 2, 2026
bcb9850
Migrated to edition 2024, trimmed unused deps. Bumped up version numb…
marvin-hansen Jul 15, 2026
48d9146
ci: pin rust-cache for Forgejo runner
mfreeman451 Jul 16, 2026
fbcafd3
fix: make arancini crates release-ready
mfreeman451 Jul 16, 2026
3b3d2b5
release: bump version to 0.7.3
mfreeman451 Jul 16, 2026
c89e515
fix(ci): honor non-root Forgejo runner
mfreeman451 Jul 16, 2026
0634f43
fix(ci): pin Arancini job image
mfreeman451 Jul 16, 2026
b5a4c2d
fix(ci): install Rust before cache
mfreeman451 Jul 16, 2026
62d2d06
Merge pull request 'release: arancini v0.7.3' (#2) from release/v0.7.…
mfreeman451 Jul 16, 2026
8182120
fix(ci): install release lint components
mfreeman451 Jul 16, 2026
44fcff3
Merge pull request 'fix(ci): install release lint components' (#3) fr…
mfreeman451 Jul 16, 2026
8ed8621
ci: preflight crates publishing credential
mfreeman451 Jul 16, 2026
e05d099
Merge pull request 'ci: preflight crates publishing credential' (#4) …
mfreeman451 Jul 16, 2026
7fad330
build: adopt Rust 2024 workspace metadata and rand 0.10
marvin-hansen Jul 16, 2026
476045b
Merge pull request 'build: adopt Rust 2024 workspace metadata and ran…
mfreeman451 Jul 16, 2026
f2ba386
release: bump version to 0.7.4
mfreeman451 Jul 16, 2026
90ce0ee
Merge pull request 'release: bump Arancini to v0.7.4' (#5) from relea…
mfreeman451 Jul 16, 2026
274bc79
fix(ci): use Forgejo-compatible artifact actions
mfreeman451 Jul 16, 2026
f91772c
Merge pull request 'fix(ci): use Forgejo-compatible artifact actions'…
mfreeman451 Jul 16, 2026
e089e2a
release: bump version to 0.7.5
mfreeman451 Jul 16, 2026
a7baea5
Merge pull request 'release: bump Arancini to v0.7.5' (#7) from relea…
mfreeman451 Jul 16, 2026
b0fdd5c
chore: bump bgpkit-parser to 0.20 and release 0.7.6
mfreeman451 Aug 24, 2026
c1fd262
ci: run Arancini on GitHub Actions instead of Forgejo
mfreeman451 Aug 24, 2026
cf828e4
Merge GitHub main into the Forgejo release line
mfreeman451 Aug 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 26 additions & 25 deletions .github/workflows/cicd.yml
Original file line number Diff line number Diff line change
@@ -1,55 +1,58 @@
name: CICD

on: [ "push", "pull_request" ]
on: ["push", "pull_request"]

env:
CARGO_TERM_COLOR: always
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
REGISTRY: registry.carverauto.dev
IMAGE_NAME: serviceradar/arancini
CARGO_INCREMENTAL: 0
CARGO_PROFILE_TEST_DEBUG: 0

jobs:
tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: sudo apt install libpcap-dev libsasl2-dev libssl-dev capnproto
- uses: Swatinem/rust-cache@v2
- run: |
cargo check --locked
cargo test --locked --verbose
- uses: actions/checkout@v6
- name: Install native dependencies
run: sudo apt-get update && sudo apt-get install -y libpcap-dev libsasl2-dev libssl-dev capnproto pkg-config
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: |
cargo check --locked
cargo test --locked --verbose
cargo package -p arancini-lib --locked

docker:
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
strategy:
fail-fast: false
matrix:
os: [{name: ubuntu-24.04, arch: amd64}, {name: ubuntu-24.04-arm, arch: arm64}]

os:
- { name: ubuntu-24.04, arch: amd64 }
- { name: ubuntu-24.04-arm, arch: arm64 }
permissions:
contents: read
packages: write
id-token: write

runs-on: ${{ matrix.os.name }}
needs: [ tests ]
needs: [tests]
steps:
- name: Checkout repository
uses: actions/checkout@v6

- name: Prepare
run: |
platform=linux/${{ matrix.os.arch }}
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
echo "PLATFORM_PAIR=${platform//\//-}" >> "$GITHUB_ENV"

- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
username: ${{ secrets.HARBOR_ROBOT_USERNAME }}
password: ${{ secrets.HARBOR_ROBOT_SECRET }}

- name: Extract metadata (tags, labels) for Docker
- name: Extract metadata for Docker
id: meta
uses: docker/metadata-action@v5
with:
Expand Down Expand Up @@ -86,13 +89,12 @@ jobs:
retention-days: 1

manifests:
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
permissions:
contents: read
packages: write
id-token: write

runs-on: ubuntu-latest
needs: [ docker ]
needs: [docker]
steps:
- name: Download digests
uses: actions/download-artifact@v7
Expand All @@ -105,8 +107,8 @@ jobs:
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
username: ${{ secrets.HARBOR_ROBOT_USERNAME }}
password: ${{ secrets.HARBOR_ROBOT_SECRET }}

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
Expand All @@ -117,8 +119,7 @@ jobs:
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=branch
type=ref,event=pr
type=ref,event=tag
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}

Expand Down
7 changes: 3 additions & 4 deletions .github/workflows/clean.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,17 @@ name: Clean Packages

on:
schedule:
- cron: '0 0 * * 0'
- cron: "0 0 * * 0"

jobs:
clean-packages:
permissions:
packages: write

runs-on: ubuntu-latest
steps:
- uses: actions/delete-package-versions@v5
with:
package-name: ${{ github.event.repository.name }}
package-type: 'container'
package-type: "container"
min-versions-to-keep: 20
ignore-versions: '^(main)|(v\d+.\d+.\d+)$'
ignore-versions: "^(main)|(v\\d+.\\d+.\\d+)$"
14 changes: 12 additions & 2 deletions .github/workflows/publish-crates.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,25 @@ jobs:
- name: Checkout
uses: actions/checkout@v6

- name: Install system deps
run: sudo apt-get update && sudo apt-get install -y libpcap-dev libsasl2-dev libssl-dev capnproto
- name: Install native dependencies
run: sudo apt-get update && sudo apt-get install -y libpcap-dev libsasl2-dev libssl-dev capnproto pkg-config

- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy

- name: Cache cargo artifacts
uses: Swatinem/rust-cache@v2

- name: Verify crates.io publishing credential
shell: sh
run: |
if [ -z "${CARGO_REGISTRY_TOKEN:-}" ]; then
echo "CARGO_REGISTRY_TOKEN must be configured as a GitHub Actions secret on the main environment."
exit 1
fi

- name: Validate workspace
run: |
cargo fmt --all -- --check
Expand Down
61 changes: 33 additions & 28 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ resolver = "2"
members = ["arancini", "arancini-lib"]

[workspace.package]
version = "0.7.2"
edition = "2024"
rust-version = "1.93.0"
version = "0.7.6"
license = "MIT"
readme = "README.md"
description = "High-performance BMP collector"
Expand Down
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

**Arancini** is an experimental carrier-grade BGP Monitoring Protocol (BMP) collector designed for ultra-high throughput and sub-millisecond telemetry pipelines. Built on a shared-nothing, thread-per-core architecture, it ingests BMP feeds from routers and streams curated BGP updates to **NATS JetStream**.

Issues, pull requests, and CI live on [GitHub](https://github.com/carverauto/arancini).

Arancini is a high-performance fork of [Risotto](https://github.com/nxthdr/risotto), re-engineered for linear scalability and zero-copy data paths.

## Key Features
Expand All @@ -20,15 +22,15 @@ Arancini is a high-performance fork of [Risotto](https://github.com/nxthdr/risot

The fastest way to deploy Arancini is via Docker. The following command displays the help menu:
```bash
docker run ghcr.io/carverauto/arancini:v0.7.2 --help
docker run registry.carverauto.dev/serviceradar/arancini:v0.7.5 --help
```

To run with default parameters (BMP on `:4000`, Metrics on `:8080`):
```bash
docker run \
-p 4000:4000 \
-p 8080:8080 \
ghcr.io/carverauto/arancini:v0.7.2
registry.carverauto.dev/serviceradar/arancini:v0.7.5
```

Monitoring is available via the Prometheus endpoint at `http://localhost:8080/metrics`.
Expand Down
Loading
Loading