Skip to content

refactor(dev-log): remove log output to stdout #51

refactor(dev-log): remove log output to stdout

refactor(dev-log): remove log output to stdout #51

name: Build & Test(Cargo)
on:
push:
branches: ["main"]
pull_request:
branches: ["*"]
env:
APP_NAME: hkxc
CARGO_TERM_COLOR: always
jobs:
lint:
strategy:
matrix:
platform: [macos-latest, ubuntu-latest, windows-latest]
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v4.1.7
- name: Rust cache
uses: Swatinem/rust-cache@v2.7.3
with:
prefix-key: cargo-debug-${{ matrix.platform }}
- name: Check format
run: cargo fmt --all -- --check
- name: Lint Check
run: cargo clippy --workspace -- -D warnings
# The action only supports Linux.
- name: Check license, dependencies
if: runner.os == 'Linux'
uses: EmbarkStudios/cargo-deny-action@v2.0.1
test:
strategy:
fail-fast: false
matrix:
job:
- { target: aarch64-apple-darwin, os: macos-latest }
- { target: x86_64-pc-windows-msvc, os: windows-latest }
- { target: x86_64-unknown-linux-gnu, os: ubuntu-latest }
runs-on: ${{ matrix.job.os }}
steps:
- uses: actions/checkout@v4.1.7
- name: Rust cache
uses: Swatinem/rust-cache@v2.7.3
with:
prefix-key: cargo-debug-${{ matrix.job.target }}
- name: Test
run: cargo test --workspace --target ${{ matrix.job.target}}
build:
strategy:
fail-fast: false
matrix:
# https://stackoverflow.com/questions/73642596/how-to-cross-compile-rust-across-operating-systems-and-cpu-architectures
job:
- { target: aarch64-apple-darwin, os: macos-latest }
- { target: x86_64-pc-windows-msvc, os: windows-latest }
- { target: x86_64-unknown-linux-gnu, os: ubuntu-latest }
runs-on: ${{ matrix.job.os }}
steps:
- uses: actions/checkout@v4.1.7
- name: Rust cache
uses: Swatinem/rust-cache@v2.7.3
with:
prefix-key: cargo-release-${{ matrix.job.target }}
- name: Build CLI
run: cargo build --release --target ${{ matrix.job.target }}
- name: Make outputs dir
run: mkdir -p ./build
- name: Compress outputs(Windows)
shell: pwsh
if: runner.os == 'Windows'
run: |
Move-Item -Path ./target/${{ matrix.job.target }}/release/${{ env.APP_NAME }}.exe -Destination './build'
Move-Item -Path ./LICENSES.toml -Destination './build'
- name: Compress outputs(MacOS)
shell: bash
if: runner.os == 'macOS'
run: |
mv ./target/${{ matrix.job.target }}/release/${{ env.APP_NAME }} ./build
mv ./LICENSES.toml './build'
- name: Compress outputs(Linux)
shell: bash
if: runner.os == 'Linux'
run: |
mv ./target/${{ matrix.job.target }}/release/${{ env.APP_NAME }} ./build
mv ./LICENSES.toml './build'
- name: Upload a Build Artifact
uses: actions/upload-artifact@v4.4.0
with:
name: serde-hkx-cli-${{ matrix.job.target }}
path: ./build/
build_extra:
strategy:
fail-fast: false
matrix:
job:
- { target: aarch64-apple-darwin, os: macos-latest }
- { target: x86_64-pc-windows-msvc, os: windows-latest }
- { target: x86_64-unknown-linux-gnu, os: ubuntu-latest }
runs-on: ${{ matrix.job.os }}
steps:
- uses: actions/checkout@v4.1.7
- name: Rust cache
uses: Swatinem/rust-cache@v2.7.3
with:
prefix-key: cargo-release-${{ matrix.job.target }}-extra
- name: Build CLI
run: cargo build --release --target ${{ matrix.job.target }} --features extra_fmt
- name: Make outputs dir
run: mkdir -p ./build
- name: Compress outputs(Windows)
shell: pwsh
if: runner.os == 'Windows'
run: |
Move-Item -Path ./target/${{ matrix.job.target }}/release/${{ env.APP_NAME }}.exe -Destination './build'
Move-Item -Path ./LICENSES.toml -Destination './build'
- name: Compress outputs(MacOS)
shell: bash
if: runner.os == 'macOS'
run: |
mv ./target/${{ matrix.job.target }}/release/${{ env.APP_NAME }} ./build
mv ./LICENSES.toml './build'
- name: Compress outputs(Linux)
shell: bash
if: runner.os == 'Linux'
run: |
mv ./target/${{ matrix.job.target }}/release/${{ env.APP_NAME }} ./build
mv ./LICENSES.toml './build'
- name: Upload a Build Artifact
uses: actions/upload-artifact@v4.4.0
with:
name: serde-hkx-cli-${{ matrix.job.target }}-extra_fmt
path: ./build/