Skip to content

Commit e860ef2

Browse files
authored
feat: add cargo binstall support (#261)
* fix(viewer): exclude dev-server binary from published crate * feat(viewer): add release binaries and cargo-binstall support
1 parent 75d1abe commit e860ef2

3 files changed

Lines changed: 93 additions & 0 deletions

File tree

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# Builds cross-platform binaries and uploads to GitHub Releases.
2+
# Binaries are discoverable by cargo-binstall (https://github.com/cargo-bins/cargo-binstall).
3+
# Triggered automatically when release-plz publishes a dial9-viewer release.
4+
name: Build Binaries
5+
6+
on:
7+
release:
8+
types: [published]
9+
10+
permissions:
11+
contents: write
12+
13+
jobs:
14+
build:
15+
name: Build ${{ matrix.target }}
16+
runs-on: ${{ matrix.os }}
17+
if: startsWith(github.event.release.tag_name, 'dial9-viewer-v')
18+
strategy:
19+
fail-fast: false
20+
matrix:
21+
include:
22+
- target: x86_64-unknown-linux-gnu
23+
os: ubuntu-latest
24+
archive: tar.gz
25+
- target: aarch64-unknown-linux-gnu
26+
os: ubuntu-24.04-arm
27+
archive: tar.gz
28+
- target: x86_64-apple-darwin
29+
os: macos-latest
30+
archive: tar.gz
31+
- target: aarch64-apple-darwin
32+
os: macos-latest
33+
archive: tar.gz
34+
- target: x86_64-pc-windows-msvc
35+
os: windows-latest
36+
archive: zip
37+
38+
steps:
39+
- uses: actions/checkout@v4
40+
with:
41+
persist-credentials: false
42+
43+
- uses: dtolnay/rust-toolchain@stable
44+
with:
45+
targets: ${{ matrix.target }}
46+
47+
- run: cargo build --release --target ${{ matrix.target }} -p dial9-viewer
48+
env:
49+
RUSTFLAGS: "--cfg tokio_unstable"
50+
51+
- name: Determine version
52+
id: version
53+
shell: bash
54+
run: |
55+
TAG="${{ github.event.release.tag_name }}"
56+
# Strip package name prefix (e.g. "dial9-viewer-v0.3.1" -> "v0.3.1")
57+
VERSION="${TAG##*-v}"
58+
echo "version=v${VERSION}" >> "$GITHUB_OUTPUT"
59+
60+
- name: Package (Unix)
61+
if: ${{ matrix.archive == 'tar.gz' }}
62+
shell: bash
63+
run: |
64+
cd target/${{ matrix.target }}/release
65+
tar -czvf ../../../dial9-viewer-${{ matrix.target }}-${{ steps.version.outputs.version }}.tar.gz dial9-viewer
66+
67+
- name: Package (Windows)
68+
if: ${{ matrix.archive == 'zip' }}
69+
shell: pwsh
70+
run: |
71+
cd target/${{ matrix.target }}/release
72+
Compress-Archive -Path dial9-viewer.exe -DestinationPath ../../../dial9-viewer-${{ matrix.target }}-${{ steps.version.outputs.version }}.zip
73+
74+
- name: Upload release asset
75+
uses: softprops/action-gh-release@v2
76+
with:
77+
files: dial9-viewer-${{ matrix.target }}-${{ steps.version.outputs.version }}.${{ matrix.archive }}

dial9-viewer/Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ license.workspace = true
66
repository.workspace = true
77
description = "CLI trace viewer and S3 browser for dial9-tokio-telemetry"
88
default-run = "dial9-viewer"
9+
exclude = ["src/bin/dev_server.rs"]
10+
11+
[package.metadata.binstall]
12+
pkg-url = "{ repo }/releases/download/{ name }-v{ version }/{ name }-{ target }-v{ version }{ archive-suffix }"
913

1014
[features]
1115
dev-server = ["dep:s3s", "dep:s3s-fs", "dep:s3s-aws", "dep:tempfile"]

dial9-viewer/README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@
22

33
CLI tool that serves a web UI for browsing and viewing [dial9-tokio-telemetry](../dial9-tokio-telemetry) trace files stored in S3 or on the local filesystem.
44

5+
## Installation
6+
7+
Pre-built binaries are available from [GitHub Releases](https://github.com/dial9-rs/dial9-tokio-telemetry/releases) for Linux (x86_64, aarch64), macOS (x86_64, aarch64), and Windows (x86_64).
8+
9+
```bash
10+
# From source via crates.io
11+
cargo install dial9-viewer
12+
13+
# Or with cargo-binstall (downloads a pre-built binary, faster)
14+
cargo binstall dial9-viewer
15+
```
16+
517
## Quick start
618

719
```bash

0 commit comments

Comments
 (0)