name: Rust Build and Release
on:
push:
tags:
- "v*"
env:
CARGO_TERM_COLOR: always
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Update repository values
run: |
TAG_VERSION=${GITHUB_REF#refs/tags/v}
files=$(grep -rl "PLACEHORN_VERSION" . --exclude-dir=.git --exclude-dir=target || true)
if [ -n "$files" ]; then
echo "$files" | xargs sed -i "s/PLACEHOLDER_VERSION/$TAG_VERSION/g"
fi
- name: Build (Release Mode)
run: cargo build --release --verbose
- name: Package and Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
RAW_BIN="tapes-v2-x86_64-unknown-linux-gnu"
ARCHIVE_NAME="${RAW_BIN}-${{ github.ref_name }}"
cp target/release/tapes-v2 "$RAW_BIN"
mkdir -p "$ARCHIVE_NAME"
cp target/release/tapes-v2 "$ARCHIVE_NAME/"
tar -czf "${ARCHIVE_NAME}.tgz" "$ARCHIVE_NAME"
gh release create ${{ github.ref_name }} "$RAW_BIN" "${ARCHIVE_NAME}.tgz" \
--title "Release ${{ github.ref_name }}" \
--generate-notes