implement logging to a file #4
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 hooligan and is licenced under the GNU GPL v3.0. | |
# See LICENSE file for full text. | |
# Copyright © 2024 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: 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 build --release --target ${{ matrix.target.triple }} | |
- name: Upload workflow artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: hooligan-${{ matrix.target.triple }} | |
path: ./target/${{ matrix.target.triple }}/release/hooligan${{ 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/hooligan${{ matrix.target.suffix }}" "${{ runner.temp }}/hooligan${{ matrix.target.artifact-suffix }}${{ matrix.target.suffix }}" | |
ls "${{ runner.temp }}" | |
file "${{ runner.temp }}${{ matrix.target.path-separator }}hooligan${{ matrix.target.artifact-suffix }}${{ matrix.target.suffix }}" | |
shell: bash | |
- name: Upload release artifact | |
uses: softprops/action-gh-release@v0.1.14 | |
if: startsWith(github.ref, 'refs/tags/') # only run for pushes to tags | |
with: | |
draft: true | |
files: ${{ runner.temp }}${{ matrix.target.path-separator }}hooligan${{ matrix.target.artifact-suffix }}${{ matrix.target.suffix }} | |
fail_on_unmatched_files: true |