Files
Shiewk 7e354c2e04
Test and release / Run Tests (push) Successful in 2m58s
Test and release / Build and Release (push) Successful in 4m36s
Initial commit
2026-04-19 17:16:29 +02:00

87 lines
2.6 KiB
YAML

name: Test and release
on:
push:
branches:
- '**'
tags:
- 'v*'
jobs:
test:
name: Run Tests
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Run cargo test
run: cargo test --verbose
build-and-release:
name: Build and Release
needs: test
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
permissions:
releases: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Generate Changelog
id: changelog
run: |
PREVIOUS_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
if [ -z "$PREVIOUS_TAG" ]; then
echo "No previous tag found. Generating log from beginning of history."
git log --pretty=format:"* %s (%h)" | tee -a changelog.md
else
echo "Generating changes since $PREVIOUS_TAG"
git log "$PREVIOUS_TAG..HEAD" --pretty=format:"* %s (%h)" | tee -a changelog.md
fi
echo "CHANGELOG_FILE=changelog.md" >> $GITHUB_ENV
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: "x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu"
- name: Install AArch64 linker (for Arm64 cross-compilation)
run: |
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu
- name: Build Release Binaries
env:
# Tell Cargo to use the AArch64 linker when building for Arm64
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
run: |
cargo build --release --target x86_64-unknown-linux-gnu
cargo build --release --target aarch64-unknown-linux-gnu
- name: Prepare binaries for release
run: |
BIN_NAME="shy-launcher"
mv target/x86_64-unknown-linux-gnu/release/$BIN_NAME $BIN_NAME-x86_64-unknown-linux-gnu
mv target/aarch64-unknown-linux-gnu/release/$BIN_NAME $BIN_NAME-aarch64-unknown-linux-gnu
- name: Create / Update Release and Upload Assets
uses: softprops/action-gh-release@v2
with:
body_path: ${{ env.CHANGELOG_FILE }}
files: |
shy-launcher-aarch64-unknown-linux-gnu
shy-launcher-x86_64-unknown-linux-gnu
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}