code: Release 0.7.1 #652
Workflow file for this run
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
name: Rust | |
on: | |
push: | |
branches: [main, dev] | |
pull_request: | |
branches: [main, dev] | |
jobs: | |
read_msrv: | |
name: Read MSRV | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Rust (stable) | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- name: Read MSRV from workspace manifest | |
id: read_msrv | |
run: | | |
cargo metadata --no-deps --format-version=1 \ | |
| jq -r 'first(.packages[]).rust_version' \ | |
| sed -E 's/^1\.([0-9]{2})$/1\.\1\.0/' \ | |
| xargs -0 printf "msrv=%s" \ | |
| tee /dev/stderr \ | |
>> "$GITHUB_OUTPUT" | |
outputs: | |
msrv: ${{ steps.read_msrv.outputs.msrv }} | |
formatting: | |
name: Cargo Format | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
# Ensure rustfmt is installed and setup problem matcher | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 | |
with: | |
components: rustfmt | |
toolchain: nightly | |
- name: Rustfmt Check | |
uses: actions-rust-lang/rustfmt@v1 | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache ~/.cargo | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo | |
key: ${{ runner.os }}-clippy-dotcargo | |
- name: Cache cargo build | |
uses: actions/cache@v4 | |
with: | |
path: target | |
key: ${{ runner.os }}-clippy-cargo-build-target | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: stable | |
components: clippy | |
- name: cargo clippy | |
run: cargo clippy --all-features | |
test: | |
name: "Test (${{ matrix.os }} ${{ matrix.channel }})" | |
needs: | |
- read_msrv | |
runs-on: ${{ matrix.image }} | |
strategy: | |
fail-fast: false | |
matrix: | |
channel: | |
- MSRV | |
- stable | |
- nightly | |
os: | |
- Linux | |
- Windows | |
- macOS | |
include: | |
- os: Linux | |
image: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
- os: Windows | |
image: windows-latest | |
target: x86_64-pc-windows-msvc | |
- os: macOS | |
image: macos-latest | |
target: aarch64-apple-darwin | |
- channel: msrv | |
rust: ${{ needs.read_msrv.outputs.msrv }} | |
- channel: stable | |
rust: stable | |
- channel: nightly | |
rust: nightly | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: ${{ matrix.rust }} | |
target: wasm32-unknown-unknown | |
- name: Cache ~/.cargo | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo | |
key: ${{ runner.os }}-test-dotcargo-${{ matrix.rust }} | |
- name: Cache cargo build | |
uses: actions/cache@v4 | |
with: | |
path: target | |
key: ${{ runner.os }}-test-build-target-${{ matrix.rust }} | |
- name: build library (no default features) | |
run: cargo build -p magic-wormhole --target ${{ matrix.target }} --no-default-features | |
- name: build library (features=transit) | |
run: cargo build -p magic-wormhole --target ${{ matrix.target }} --no-default-features --features=transit | |
- name: build library (features=transfer) | |
run: cargo build -p magic-wormhole --target ${{ matrix.target }} --no-default-features --features=transfer | |
- name: build library (features=forwarding) | |
run: cargo build -p magic-wormhole --target ${{ matrix.target }} --no-default-features --features=forwarding | |
- name: build CLI | |
run: cargo build -p magic-wormhole-cli --target ${{ matrix.target }} --features=all | |
- name: build WASM | |
run: cargo build -p magic-wormhole --target wasm32-unknown-unknown --no-default-features --features transit --features transfer | |
- name: test | |
uses: nick-fields/retry@v3 | |
with: | |
max_attempts: 3 | |
polling_interval_seconds: 30 | |
timeout_minutes: 30 | |
retry_on_exit_code: 101 | |
command: cargo test --verbose --workspace --features=all,native-tls,experimental | |
dist: | |
name: "Dist (${{ matrix.os }})" | |
runs-on: ${{ matrix.image }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- Linux | |
#- Windows | |
#- macOS | |
include: | |
- os: Linux | |
image: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
#- os: Windows | |
# image: windows-latest | |
# target: x86_64-pc-windows-gnu | |
#- os: macOS | |
# image: macos-latest | |
# target: aarch64-apple-darwin | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: stable | |
target: ${{ matrix.target }} | |
- name: Cache ~/.cargo | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo | |
key: ${{ runner.os }}-test-dotcargo-stable | |
- name: Cache cargo build | |
uses: actions/cache@v4 | |
with: | |
path: target | |
key: ${{ runner.os }}-test-build-target-stable | |
- name: Build | |
run: cargo build -p magic-wormhole-cli --target ${{ matrix.target }} --bins --locked --release | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: magic-wormhole-cli-${{ matrix.target }} | |
path: | | |
./target/${{ matrix.target }}/release/wormhole-rs | |
./target/${{ matrix.target }}/release/wormhole-rs.exe | |
if-no-files-found: error | |
coverage: | |
name: Coverage | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: nightly | |
- uses: taiki-e/cache-cargo-install-action@v2 | |
with: | |
tool: cargo-tarpaulin | |
- name: Cache ~/.cargo | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo | |
key: ${{ runner.os }}-coverage-dotcargo | |
- name: Cache cargo build | |
uses: actions/cache@v4 | |
with: | |
path: target | |
key: ${{ runner.os }}-coverage-cargo-build-target | |
- name: Run tarpaulin | |
run: cargo tarpaulin --workspace --out Xml | |
- name: upload coverage | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
cargo-deny: | |
name: Cargo deny | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: nightly | |
- name: Checkout Rust toolcnain | |
uses: actions/checkout@v4 | |
- uses: EmbarkStudios/cargo-deny-action@v1 | |
semver: | |
name: SemVer | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: nightly | |
- name: Check semver | |
uses: obi1kenobi/cargo-semver-checks-action@v2 | |
release: | |
name: Release | |
runs-on: ubuntu-latest | |
needs: | |
- dist | |
#if: startWith(github.ref, 'refs/tags/') | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Get Version | |
id: query-version | |
run: | | |
cargo metadata --no-deps --format-version=1 \ | |
| jq -r 'first(.packages[]).version' \ | |
| xargs -0 printf "version=%s" \ | |
>> "$GITHUB_OUTPUT" | |
- name: Extract Changelog | |
uses: release-flow/keep-a-changelog-action@v3 | |
with: | |
command: query | |
version: ${{ steps.query-version.outputs.version }} | |
- uses: actions/download-artifact@v4 | |
with: | |
path: "$GITHUB_WORKSPACE/dist" | |
pattern: "magic-wormhole-cli-*" | |
- name: Create Release | |
uses: softprops/action-gh-release@v2 | |
with: | |
name: "Version ${{ github.ref_name }}" | |
files: "$GITHUB_WORKSPACE/dist/magic-wormhole-cli-*" | |
body: "$release-notes" | |
fail_on_unmatched_files: true | |
draft: true |