name: Release
on:
push:
tags:
- 'v*'
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libudev-dev pkg-config
- uses: dtolnay/rust-toolchain@stable
- name: Build
run: cargo build --release --locked
- name: Test
run: cargo test --release --locked
- name: Package CLI binary
run: |
mkdir -p target/dist
cp target/release/whatcable target/dist/
cd target/dist
tar czf ../whatcable-${GITHUB_REF_NAME}-x86_64-linux.tar.gz whatcable
- name: Upload artifacts
uses: actions/upload-artifact@v5
with:
name: release-assets
path: |
target/whatcable-*.tar.gz
release:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Download artifacts
uses: actions/download-artifact@v5
with:
name: release-assets
path: assets
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
body: |
## Release Assets
| File | Description |
|------|-------------|
| `whatcable-${{ github.ref_name }}-x86_64-linux.tar.gz` | CLI binary. Extract and run `./whatcable`. |
### Quick install
```bash
tar xzf whatcable-${{ github.ref_name }}-x86_64-linux.tar.gz
sudo mv whatcable /usr/local/bin/
```
Or via Cargo:
```bash
cargo install whatcable
```
files: |
assets/**/*.tar.gz