Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 54 additions & 32 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -1,59 +1,81 @@
name: CI

on:
push:
branches:
- master
pull_request:
branches:
- '*'
push:
branches:
- master

defaults:
run:
shell: bash

env:
RUSTFLAGS: --deny warnings

jobs:
all:
name: All
lint:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- uses: Swatinem/rust-cache@v2

- name: Clippy
run: cargo clippy --all --all-targets

- name: Format
run: cargo fmt --all -- --check

- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install ripgrep shellcheck

- name: Check for Forbidden Words
run: ./bin/forbid

- name: Check /bin scripts
run: shellcheck bin/*

msrv:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- uses: actions-rust-lang/setup-rust-toolchain@v1

- uses: Swatinem/rust-cache@v2

- name: Check
run: cargo check

test:
strategy:
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest

runs-on: ${{matrix.os}}

env:
RUSTFLAGS: --deny warnings

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4

- name: Install Rust Toolchain Components
uses: actions-rs/toolchain@v1
with:
components: clippy, rustfmt
override: true
toolchain: stable
- name: Remove Broken WSL bash executable
if: ${{ matrix.os == 'windows-latest' }}
shell: cmd
run: |
takeown /F C:\Windows\System32\bash.exe
icacls C:\Windows\System32\bash.exe /grant administrators:F
del C:\Windows\System32\bash.exe

- uses: Swatinem/rust-cache@v1
- uses: Swatinem/rust-cache@v2

- name: Check Lockfile
run: |
cargo update --locked --package present
- name: Test
run: cargo test --all

- name: Clippy
run: cargo clippy --all --all-targets

- name: Format
run: cargo fmt --all -- --check

- name: Check for Forbidden Words
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
sudo apt-get update
sudo apt-get install ripgrep
./bin/forbid
113 changes: 89 additions & 24 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,54 +9,87 @@ defaults:
run:
shell: bash

env:
RUSTFLAGS: --deny warnings

jobs:
all:
name: All
prerelease:
runs-on: ubuntu-latest

outputs:
value: ${{ steps.prerelease.outputs.value }}

steps:
- name: Prerelease Check
id: prerelease
run: |
if [[ ${{ github.ref_name }} =~ ^[0-9]+[.][0-9]+[.][0-9]+$ ]]; then
echo value=false >> "$GITHUB_OUTPUT"
else
echo value=true >> "$GITHUB_OUTPUT"
fi

package:
strategy:
fail-fast: false
matrix:
target:
- aarch64-apple-darwin
- aarch64-unknown-linux-musl
- arm-unknown-linux-musleabihf
- armv7-unknown-linux-musleabihf
- x86_64-apple-darwin
- x86_64-pc-windows-msvc
- x86_64-unknown-linux-gnu
- aarch64-pc-windows-msvc
- x86_64-unknown-linux-musl
include:
- target: aarch64-apple-darwin
os: macos-latest
target_rustflags: ''
- target: aarch64-unknown-linux-musl
os: ubuntu-latest
target_rustflags: '--codegen linker=aarch64-linux-gnu-gcc'
- target: arm-unknown-linux-musleabihf
os: ubuntu-latest
target_rustflags: '--codegen linker=arm-linux-gnueabihf-gcc'
- target: armv7-unknown-linux-musleabihf
os: ubuntu-latest
target_rustflags: '--codegen linker=arm-linux-gnueabihf-gcc'
- target: x86_64-apple-darwin
os: macos-latest
target_rustflags: ''
- target: x86_64-pc-windows-msvc
os: windows-latest
- target: aarch64-pc-windows-msvc
os: windows-latest
target_rustflags: ''
- target: x86_64-unknown-linux-gnu
- target: x86_64-unknown-linux-musl
os: ubuntu-latest
target_rustflags: ''

runs-on: ${{matrix.os}}

needs:
- prerelease

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4

- name: Install Rust Toolchain Components
uses: actions-rs/toolchain@v1
with:
override: true
target: ${{ matrix.target }}
toolchain: stable
- name: Install AArch64 Toolchain
if: ${{ matrix.target == 'aarch64-unknown-linux-musl' }}
run: |
sudo apt-get update
sudo apt-get install gcc-aarch64-linux-gnu libc6-dev-i386

- name: Install Linux Dependencies
if: ${{ matrix.os == 'ubuntu-latest' }}
- name: Install ARM Toolchain
if: ${{ matrix.target == 'arm-unknown-linux-musleabihf' || matrix.target == 'armv7-unknown-linux-musleabihf' }}
run: |
sudo apt-get update
sudo apt-get install musl-tools libssl-dev pkg-config
sudo apt-get install gcc-arm-linux-gnueabihf

- name: Release Type
id: release-type
- name: Install AArch64 Toolchain (Windows)
if: ${{ matrix.target == 'aarch64-pc-windows-msvc' }}
run: |
if [[ ${{ github.ref }} =~ ^refs/tags/[0-9]+[.][0-9]+[.][0-9]+$ ]]; then
echo ::set-output name=value::release
else
echo ::set-output name=value::prerelease
fi
rustup target add aarch64-pc-windows-msvc

- name: Package
id: package
Expand All @@ -69,11 +102,43 @@ jobs:
shell: bash

- name: Publish Archive
uses: softprops/action-gh-release@v0.1.5
uses: softprops/action-gh-release@v2.2.1
if: ${{ startsWith(github.ref, 'refs/tags/') }}
with:
draft: false
files: ${{ steps.package.outputs.archive }}
prerelease: ${{ steps.release-type.outputs.value == 'prerelease' }}
prerelease: ${{ needs.prerelease.outputs.value }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

checksum:
runs-on: ubuntu-latest

needs:
- package
- prerelease

steps:
- name: Download Release Archives
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: >-
gh release download
--repo casey/just
--pattern '*'
--dir release
${{ github.ref_name }}

- name: Create Checksums
run: |
cd release
shasum -a 256 ./* > ../SHA256SUMS

- name: Publish Checksums
uses: softprops/action-gh-release@v2.2.1
with:
draft: false
files: SHA256SUMS
prerelease: ${{ needs.prerelease.outputs.value }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Loading
Loading