Skip to content

Simplify the formatting used for extra sections. #145

Simplify the formatting used for extra sections.

Simplify the formatting used for extra sections. #145

Workflow file for this run

name: Build and upload Rust crate
on: [push, pull_request]
jobs:
check_fmt:
name: Check format
runs-on: ubuntu-latest
steps:
- name: Checkout reposistory
uses: actions/checkout@v4
- name: Setup Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Check format
run: cargo fmt --check
check_clippy:
name: Check clippy
runs-on: ubuntu-latest
steps:
- name: Checkout reposistory
uses: actions/checkout@v4
- name: Setup Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Setup clippy
run: rustup component add clippy
- name: Run clippy
run: cargo clippy --all-targets -- -D warnings
msrv:
runs-on: ubuntu-latest
steps:
- name: Checkout reposistory
uses: actions/checkout@v4
- name: Setup MSRV checker
uses: taiki-e/install-action@cargo-hack
- name: Run MSRV checker
run: cargo hack check --rust-version --workspace --all-targets --ignore-private
test_and_release:
name: Test and release for ${{ matrix.builder.target }}
runs-on: ${{ matrix.builder.runner }}
strategy:
fail-fast: false
matrix:
builder: [
{
name: windows,
target: x86_64-pc-windows-gnu,
runner: windows-2019
},
{
name: windows,
target: x86_64-pc-windows-msvc,
runner: windows-2019
},
{
name: mac,
target: x86_64-apple-darwin,
runner: macos-12
},
{
name: mac,
target: aarch64-apple-darwin,
runner: macos-14 # ARM
},
{
name: linux,
target: x86_64-unknown-linux-musl,
runner: ubuntu-20.04
},
{
name: linux,
target: x86_64-unknown-linux-gnu,
runner: ubuntu-20.04
}
]
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.builder.target }}
- name: Run tests
run: cargo test --workspace --target ${{ matrix.builder.target }}
- name: Build cli
run: cargo build --release --bins --target ${{ matrix.builder.target }}
- name: Move files for packaging (unix)
if: matrix.builder.name == 'linux' || matrix.builder.name == 'mac'
run: |
mkdir -p package/
cp target/${{ matrix.builder.target }}/release/slinky-cli package/
cp LICENSE package/slinky-cli.LICENSE
cp README.md package/slinky-cli.README.md
- name: Move files for packaging (windows)
if: matrix.builder.name == 'windows'
run: |
mkdir -p package/
Copy-Item target/${{ matrix.builder.target }}/release/slinky-cli.exe package/
Copy-Item LICENSE package/slinky-cli.LICENSE
Copy-Item README.md package/slinky-cli.README.md
- name: Package .tar.gz
run: |
cd package && tar -czf ../slinky-cli-${{ matrix.builder.target }}.tar.gz *
- name: Upload .tar.gz artifact
uses: actions/upload-artifact@v3
with:
name: slinky-cli-${{ matrix.builder.target }}
path: |
slinky-cli-${{ matrix.builder.target }}.tar.gz
if-no-files-found: error
- name: Publish .tar.gz release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: slinky-cli-${{ matrix.builder.target }}.tar.gz
publish:
name: Publish
runs-on: ubuntu-latest
needs: [test_and_release, msrv]
steps:
- name: Checkout reposistory
uses: actions/checkout@v4
- name: Setup Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Build Rust package
run: cargo build --release --workspace
- name: Publish slinky dry run
if: github.event_name == 'push' && !startsWith(github.ref, 'refs/tags/')
run: cargo publish --package slinky --dry-run
- name: Upload slinky crate
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
run: cargo publish --package slinky --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
- name: Upload slinky-cli crate
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
run: cargo publish --package slinky-cli --token ${{ secrets.CARGO_REGISTRY_TOKEN }}