chore(.github/workflows): add release smoke test workflowAdds CI pipeline that runs on tag and release events, checks formatting, lints, builds, tests, verifies binary execution, uploads artifact, and publishes to crates.io and AUR.

- New Features: - Implements automated release smoke testing pipeline.
- Enhancements: - Adds formatting linting and binary verification steps.
- Bug Fixes: -
This commit is contained in:
sankalp committed 2026-05-26 10:40:28 +05:45
1 parent 9e5b618f19
commit e4c3646fe0
1 file changed
+77
+77
View File
@@ -0,0 +1,77 @@
name: Release Smoke Test
on:
push:
tags:
- '[0-9]+.[0-9]+.[0-9]+'
- 'v[0-9]+.[0-9]+.[0-9]+'
release:
types: [published]
env:
CARGO_TERM_COLOR: always
jobs:
smoke-test:
name: Smoke Test
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Check formatting
run: cargo fmt --all -- --check
- name: Run Clippy Lints
run: cargo clippy -- -D warnings
- name: Build release
run: cargo build --release --verbose
- name: Run tests
run: cargo test --verbose
- name: Smoke test — binary runs
run: ./target/release/lapctl --version
- name: Upload release artifact
uses: actions/upload-artifact@v4
with:
name: lapctl-${{ github.ref_name }}
path: ./target/release/lapctl
- name: Publish to crates.io
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
run: cargo publish
publish-aur:
name: Publish to AUR
needs: smoke-test
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Rust
uses: dtolnay/rust-toolchain@stable
- name: Setup pacman
uses: archlinux/actions/setup-pacman@v1
with:
update: true
- name: Install base-devel (for makepkg)
run: sudo pacman -S --noconfirm --needed base-devel
- name: Get version
id: version
run: echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
- name: Generate PKGBUILD with cargo-aur
run: |
cargo install cargo-aur
mkdir -p aur-pkg
cargo aur --output aur-pkg
- name: Generate .SRCINFO
working-directory: aur-pkg
run: makepkg --printsrcinfo > .SRCINFO
- name: Push to AUR
uses: KSXGitHub/github-actions-deploy-aur@v2.5.0
with:
pkgname: lapctl
pkgver: ${{ steps.version.outputs.version }}
assets: |
aur-pkg/PKGBUILD
aur-pkg/.SRCINFO
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
commit_username: ${{ github.actor }}
commit_email: ${{ github.actor }}@users.noreply.github.com