From e4c3646fe06ffad998df6421f8b83b5f116a446d Mon Sep 17 00:00:00 2001 From: S4NKALP Date: Tue, 26 May 2026 10:40:28 +0545 Subject: [PATCH] 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: - --- .github/workflows/release-smoke.yml | 77 +++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 .github/workflows/release-smoke.yml diff --git a/.github/workflows/release-smoke.yml b/.github/workflows/release-smoke.yml new file mode 100644 index 0000000..61cb44c --- /dev/null +++ b/.github/workflows/release-smoke.yml @@ -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