2.5.1 #231
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright 2022-2023 runtime-shady-backroom | |
# This file is part of buttplug-lite. | |
# buttplug-lite is licensed under the AGPL-3.0 license (see LICENSE file for details). | |
name: Build | |
on: | |
push: | |
paths-ignore: # ignore files that can't alter build output | |
- '**.md' | |
- .github/dependabot.yml | |
- .github/workflows/ci.yml | |
- .gitignore | |
- LICENSE | |
jobs: | |
cargo-deny: | |
# only run for pushes to tags or non-dependabot branches | |
if: startsWith(github.ref, 'refs/tags/') || (startsWith(github.ref, 'refs/heads/') && !startsWith(github.ref, 'refs/heads/dependabot/')) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: EmbarkStudios/cargo-deny-action@v1 | |
build: | |
# only run for pushes to tags or non-dependabot branches | |
if: startsWith(github.ref, 'refs/tags/') || (startsWith(github.ref, 'refs/heads/') && !startsWith(github.ref, 'refs/heads/dependabot/')) | |
strategy: | |
matrix: | |
target: | |
- runs-on: windows-latest | |
triple: x86_64-pc-windows-msvc | |
build-name: Windows | |
artifact-suffix: '' | |
suffix: .exe | |
path-separator: '\' | |
runner-can-execute: true | |
- runs-on: ubuntu-latest | |
triple: x86_64-unknown-linux-gnu | |
build-name: Linux | |
artifact-suffix: -linux | |
suffix: '' | |
path-separator: '/' | |
runner-can-execute: true | |
- runs-on: macos-latest | |
triple: x86_64-apple-darwin | |
build-name: macOS x86 | |
artifact-suffix: -mac-x86 | |
suffix: '' | |
path-separator: '/' | |
runner-can-execute: true | |
- runs-on: macos-latest | |
triple: aarch64-apple-darwin | |
build-name: macOS ARM | |
artifact-suffix: -mac-arm | |
suffix: '' | |
path-separator: '/' | |
runner-can-execute: false | |
fail-fast: false | |
name: Build ${{ matrix.target.build-name }} | |
runs-on: ${{ matrix.target.runs-on }} | |
steps: | |
- name: git checkout | |
uses: actions/checkout@v4 | |
- name: Setup workflow cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
target/ | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Setup Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
target: ${{ matrix.target.triple }} | |
- name: Install extra Linux dependencies | |
if: matrix.target.runs-on == 'ubuntu-latest' | |
run: sudo apt-get install -y libdbus-1-dev pkg-config libudev-dev # libdbus-sys needs {ibdbus-1-dev, pkg-config}. libudev-sys needs {libudev-dev} | |
- name: Test | |
run: cargo test | |
- name: Build | |
run: cargo build --release --target ${{ matrix.target.triple }} | |
- name: Self-check | |
if: matrix.target.runner-can-execute | |
run: ./target/${{ matrix.target.triple }}/release/buttplug-lite${{ matrix.target.suffix }} --self-check | |
- name: Upload workflow artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: buttplug-lite-${{ matrix.target.triple }} | |
path: ./target/${{ matrix.target.triple }}/release/buttplug-lite${{ matrix.target.suffix }} | |
if-no-files-found: error | |
- name: Rename artifact for release # action-gh-release is incapable of renaming files, so I have to do it manually | |
if: startsWith(github.ref, 'refs/tags/') # only run for pushes to tags | |
run: | | |
cp "./target/${{ matrix.target.triple }}/release/buttplug-lite${{ matrix.target.suffix }}" "${{ runner.temp }}/buttplug-lite${{ matrix.target.artifact-suffix }}${{ matrix.target.suffix }}" | |
ls "${{ runner.temp }}" | |
file "${{ runner.temp }}${{ matrix.target.path-separator }}buttplug-lite${{ matrix.target.artifact-suffix }}${{ matrix.target.suffix }}" | |
shell: bash | |
- name: Upload release artifact | |
uses: softprops/[email protected] | |
if: startsWith(github.ref, 'refs/tags/') # only run for pushes to tags | |
with: | |
draft: true | |
files: ${{ runner.temp }}${{ matrix.target.path-separator }}buttplug-lite${{ matrix.target.artifact-suffix }}${{ matrix.target.suffix }} | |
fail_on_unmatched_files: true |