on: [push, pull_request]
defaults:
run:
shell: bash
env:
cratename: anybar_rs
name: Test and Build
jobs:
test:
if: github.event_name == 'push' && !contains(github.ref, 'refs/tags/')
name: Test on ${{ matrix.os }} (${{ matrix.target }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- build: macos
os: macos-latest
rust: stable
target: x86_64-apple-darwin
use-cross: false
deptarget: 10.9
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
target: ${{ matrix.target }}
- uses: actions-rs/cargo@v1
env:
MACOSX_DEPLOYMENT_TARGET: ${{ matrix.deptarget }}
with:
use-cross: ${{ matrix.use-cross }}
command: test
args: --target=${{ matrix.target }}
build:
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
name: Build and release on ${{ matrix.os }} (${{ matrix.target }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- build: macos
os: macos-latest
rust: stable
target: x86_64-apple-darwin
use-cross: false
deptarget: 10.9
- build: macos
os: macos-latest
rust: stable
target: aarch64-apple-darwin
use-cross: false
deptarget: 11.0
steps:
- name: Switch to macOS 12.x SDK
if: matrix.target == 'aarch64-apple-darwin'
run: |
xcodebuild -showsdks
SDKROOT=$(xcrun -sdk macosx12.0 --show-sdk-path)
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
target: ${{ matrix.target }}
- uses: actions-rs/cargo@v1
env:
MACOSX_DEPLOYMENT_TARGET: ${{ matrix.deptarget }}
with:
use-cross: ${{ matrix.use-cross }}
command: build
args: --release --target=${{ matrix.target }}
- name: Gather Assets
run: |
src=$(pwd)
stage=
case $RUNNER_OS in
Linux)
stage=$(mktemp -d)
;;
macOS)
stage=$(mktemp -d -t tmp)
;;
Windows)
stage=$(mktemp -d)
;;
esac
mkdir zipped
RELEASE_VERSION=${GITHUB_REF#refs/tags/}
ASSET_NAME="${{ env.cratename }}-$RELEASE_VERSION-${{ matrix.target }}"
echo "Release name is $ASSET_NAME"
echo "STAGE=$stage" >> $GITHUB_ENV
echo "ASSET_NAME=$ASSET_NAME" >> $GITHUB_ENV
if [ "$RUNNER_OS" == "macOS" ]; then
echo "TYPE=tar" >> $GITHUB_ENV
echo "EXTENSION=tar.gz" >> $GITHUB_ENV
cp target/${{ matrix.target }}/release/anybar_rs $stage/
fi
ls $stage
cd $src
- name: Archive
if: runner.os != 'Windows'
run: |
pushd ${{ env.STAGE }}
tar -czf "${{ env.ASSET_NAME }}.${{ env.EXTENSION }}" *
popd
cp "${{ env.STAGE }}/${{ env.ASSET_NAME }}.${{ env.EXTENSION }}" zipped/
- name: Release
uses: softprops/action-gh-release@v1
with:
files: |
zipped/${{ env.ASSET_NAME }}.${{ env.EXTENSION }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}