Skip to content

chore: release 2.0.0 #84

chore: release 2.0.0

chore: release 2.0.0 #84

Workflow file for this run

name: CI
on:
push:
branches: [main]
tags:
- "v*"
pull_request:
branches: [main]
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
check:
name: Check macOS
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
targets: x86_64-apple-darwin, aarch64-apple-darwin
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Check formatting
run: cargo fmt --all -- --check
- name: Run clippy
run: cargo clippy --all-targets --all-features -- -D warnings
- name: Check compilation
run: cargo check --all-targets
test:
name: Test macOS
runs-on: macos-latest
needs: check
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: x86_64-apple-darwin, aarch64-apple-darwin
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Run tests
run: cargo test --all-features
build:
name: Build macOS Artifacts
runs-on: macos-latest
needs: test
if: "!startsWith(github.ref, 'refs/tags/v')"
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: x86_64-apple-darwin, aarch64-apple-darwin
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Install cargo-packager
run: cargo install cargo-packager --locked
- name: Build DMG
run: ./package-macos.sh
- name: Verify dist contents
run: |
ls -lah dist/
test -d dist/RestGap.app
ls -lah dist/*.dmg
- name: Upload DMG artifact
uses: actions/upload-artifact@v4
with:
name: restgap-macos-dmg
path: dist/*.dmg
- name: Upload APP artifact
uses: actions/upload-artifact@v4
with:
name: restgap-macos-app
path: dist/*.app
release-macos:
name: Release macOS
runs-on: macos-latest
needs: test
if: startsWith(github.ref, 'refs/tags/v')
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Validate version matches tag
run: |
set -euo pipefail
tag_version="${GITHUB_REF_NAME#v}"
cargo_version="$(awk -F '\"' '/^version =/ {print $2; exit}' Cargo.toml)"
if [[ "${tag_version}" != "${cargo_version}" ]]; then
echo "::error::Tag ${GITHUB_REF_NAME} does not match Cargo.toml version ${cargo_version}"
exit 1
fi
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: x86_64-apple-darwin, aarch64-apple-darwin
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Install cargo-packager
run: cargo install cargo-packager --locked
- name: Build DMG
run: ./package-macos.sh
- name: Prepare release files
run: |
mkdir -p release-files
cp dist/*.dmg release-files/
ls -lah release-files/
- name: Publish GitHub Release
env:
GH_TOKEN: ${{ github.token }}
run: |
set -euo pipefail
tag="${GITHUB_REF_NAME}"
if gh release view "${tag}" >/dev/null 2>&1; then
gh release upload "${tag}" release-files/* --clobber
else
gh release create "${tag}" release-files/* --title "${tag}" --generate-notes
fi