fix download directories used #21
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
on: [push, pull_request, workflow_dispatch] | |
name: CI Rust Workflow | |
env: | |
RUSTFLAGS: -D warnings | |
RUSTDOCFLAGS: -D warnings | |
permissions: | |
actions: read | |
jobs: | |
# this job pre-build using `just build` and copies the .wasm files to /dist/ before running other jobs | |
# all other jobs depend on this one | |
pre-build: | |
name: Pre-Build wasm binaries | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: extractions/setup-just@v2 | |
# binstall is faster than cargo install | |
- name: Install binstall | |
uses: taiki-e/install-action@cargo-binstall | |
- name: Install cargo-component | |
run: echo yes | cargo binstall cargo-component | |
- name: install Rust | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
targets: wasm32-unknown-unknown | |
- run: just build | |
- run: cp target/wasm32-unknown-unknown/**/*.wasm assets/ | |
- name: upload artifacts to target | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wasm-files-target | |
path: target/wasm32-unknown-unknown/**/*.wasm | |
overwrite: true | |
check: | |
name: Check | |
runs-on: ubuntu-latest | |
needs: pre-build | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Create directories | |
run: | | |
mkdir -p target/wasm32-unknown-unknown/release | |
mkdir -p target/wasm32-unknown-unknown/debug | |
mkdir -p assets | |
- uses: actions/download-artifact@v4 | |
with: | |
name: wasm-files-target | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: check | |
args: --all-features | |
check_wasm: | |
name: Check wasm32 | |
runs-on: ubuntu-latest | |
needs: pre-build | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Create directories | |
run: | | |
mkdir -p target/wasm32-unknown-unknown/release | |
mkdir -p target/wasm32-unknown-unknown/debug | |
mkdir -p assets | |
- uses: actions/download-artifact@v4 | |
with: | |
name: wasm-files-target | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
target: wasm32-unknown-unknown | |
override: true | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: check | |
args: --all-features --lib --target wasm32-unknown-unknown | |
test: | |
name: Test Suite | |
needs: pre-build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Create directories | |
run: | | |
mkdir -p target/wasm32-unknown-unknown/release | |
mkdir -p target/wasm32-unknown-unknown/debug | |
mkdir -p assets | |
- uses: actions/download-artifact@v4 | |
with: | |
name: wasm-files-target | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- run: sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: --lib | |
fmt: | |
name: Rustfmt | |
runs-on: ubuntu-latest | |
needs: pre-build | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Create directories | |
run: | | |
mkdir -p target/wasm32-unknown-unknown/release | |
mkdir -p target/wasm32-unknown-unknown/debug | |
mkdir -p assets | |
- uses: actions/download-artifact@v4 | |
with: | |
name: wasm-files-target | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: nightly # so we can ignore bindings.rs file | |
override: true | |
components: rustfmt | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: fmt | |
args: --all -- --check | |
clippy: | |
name: Clippy | |
needs: pre-build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Create directories | |
run: | | |
mkdir -p target/wasm32-unknown-unknown/release | |
mkdir -p target/wasm32-unknown-unknown/debug | |
mkdir -p assets | |
- uses: actions/download-artifact@v4 | |
with: | |
name: wasm-files-target | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
components: clippy | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: -- -D warnings | |
trunk: | |
name: trunk | |
runs-on: ubuntu-latest | |
needs: pre-build | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Create directories | |
run: | | |
mkdir -p target/wasm32-unknown-unknown/release | |
mkdir -p target/wasm32-unknown-unknown/debug | |
mkdir -p assets | |
- uses: actions/download-artifact@v4 | |
with: | |
name: wasm-files-target | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: 1.78.0 | |
target: wasm32-unknown-unknown | |
override: true | |
- name: Download and install Trunk binary | |
run: wget -qO- https://github.com/thedodd/trunk/releases/latest/download/trunk-x86_64-unknown-linux-gnu.tar.gz | tar -xzf- | |
- name: Build | |
run: ./trunk build | |
build: | |
runs-on: ${{ matrix.os }} | |
needs: pre-build | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
- os: macos-latest | |
TARGET: aarch64-apple-darwin | |
# apple x86_64 | |
- os: macos-latest # for Intel based macs. | |
TARGET: x86_64-apple-darwin | |
- os: ubuntu-latest | |
TARGET: aarch64-unknown-linux-gnu | |
# wasmtime doesn't support armv7 | |
# - os: ubuntu-latest | |
# TARGET: armv7-unknown-linux-gnueabihf | |
- os: ubuntu-latest | |
TARGET: x86_64-unknown-linux-gnu | |
# - os: windows-latest | |
# TARGET: x86_64-pc-windows-msvc | |
# EXTENSION: .exe | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Create directories | |
run: | | |
mkdir -p target/wasm32-unknown-unknown/release | |
mkdir -p target/wasm32-unknown-unknown/debug | |
mkdir -p assets | |
- uses: actions/download-artifact@v4 | |
with: | |
name: wasm-files-target | |
- name: Building ${{ matrix.TARGET }} | |
run: echo "${{ matrix.TARGET }}" | |
- name: install Rust | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
# Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds. | |
targets: ${{ matrix.os == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || contains(matrix.TARGET, 'linux') && 'aarch64-unknown-linux-gnu,x86_64-unknown-linux-gnu' || 'x86_64-pc-windows-msvc' }} | |
- name: Set default cargo build target | |
if: contains(matrix.TARGET, 'x86_64-apple-darwin') | |
run: | | |
echo "CARGO_BUILD_TARGET=${{ matrix.TARGET }}" >> $GITHUB_ENV | |
rustup target add ${{ matrix.TARGET }} | |
rustup default stable-${{ matrix.TARGET }} | |
rustup show | |
# For linux, it's necessary to use cross from the git repository to avoid glibc problems | |
# Ref: https://github.com/cross-rs/cross/issues/1510 | |
- name: Install cross for linux | |
if: contains(matrix.TARGET, 'linux') | |
run: | | |
cargo install cross --git https://github.com/cross-rs/cross --rev 1b8cf50d20180c1a394099e608141480f934b7f7 | |
- name: Install cross for mac and windows | |
if: ${{ !contains(matrix.TARGET, 'linux') }} | |
run: | | |
cargo install cross | |
- name: Build (Just + Cross) | |
run: | | |
cross build --verbose --release --target=${{ matrix.TARGET }} | |
- name: Rename | |
run: cp target/${{ matrix.TARGET }}/release/rdx${{ matrix.EXTENSION }} rdx-${{ matrix.TARGET }}${{ matrix.EXTENSION }} | |
- uses: actions/upload-artifact@master | |
with: | |
name: rdx-${{ matrix.TARGET }}${{ matrix.EXTENSION }} | |
path: rdx-${{ matrix.TARGET }}${{ matrix.EXTENSION }} | |
- uses: svenstaro/upload-release-action@v2 | |
name: Upload binaries to release | |
if: ${{ github.event_name == 'push' }} | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: rdx-${{ matrix.TARGET }}${{ matrix.EXTENSION }} | |
asset_name: rdx-${{ matrix.TARGET }}${{ matrix.EXTENSION }} | |
tag: ${{ github.ref }} | |
prerelease: ${{ !startsWith(github.ref, 'refs/tags/') }} | |
overwrite: true |