Follow cargo manifest best practices #138
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
# This file is part of simple-crosshair-overlay and is licenced under the GNU GPL v3.0. | |
# See LICENSE file for full text. | |
# Copyright © 2023 Michael Ripley | |
name: Build | |
on: | |
push: | |
paths-ignore: # ignore files that can't alter build output | |
- '**.md' | |
- .github/dependabot.yml | |
- .github/workflows/ci.yml | |
- .github/workflows/publish.yml | |
- .gitignore | |
- docs/** | |
- LICENSE | |
- screenshots/** | |
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 stable toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
target: ${{ matrix.target.triple }} | |
- name: Setup Rust nightly toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: nightly | |
components: rust-src | |
target: ${{ matrix.target.triple }} | |
- name: Install extra Linux dependencies | |
if: matrix.target.runs-on == 'ubuntu-latest' | |
run: | # gdk-sys needs {libgtk-3-dev}. | |
sudo apt-get update | |
sudo apt-get install -y libgtk-3-dev | |
- name: Check | |
run: cargo check --target ${{ matrix.target.triple }} | |
- name: Test | |
if: matrix.target.runner-can-execute | |
run: cargo test --target ${{ matrix.target.triple }} | |
- name: Build | |
run: cargo +nightly build -Z build-std=std --release --target ${{ matrix.target.triple }} | |
- name: Upload workflow artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: simple-crosshair-overlay-${{ matrix.target.triple }} | |
path: ./target/${{ matrix.target.triple }}/release/simple-crosshair-overlay${{ 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/simple-crosshair-overlay${{ matrix.target.suffix }}" "${{ runner.temp }}/simple-crosshair-overlay${{ matrix.target.artifact-suffix }}${{ matrix.target.suffix }}" | |
ls "${{ runner.temp }}" | |
file "${{ runner.temp }}${{ matrix.target.path-separator }}simple-crosshair-overlay${{ 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 }}simple-crosshair-overlay${{ matrix.target.artifact-suffix }}${{ matrix.target.suffix }} | |
fail_on_unmatched_files: true |