This repository has been archived by the owner on Jan 25, 2024. It is now read-only.
ci: release process and licensing #12
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: merge | |
on: pull_request | |
env: | |
RUST_BACKTRACE: 1 | |
RUSTFLAGS: "-D warnings" | |
WINSW_URL: https://github.com/winsw/winsw/releases/download/v3.0.0-alpha.11/WinSW-x64.exe | |
jobs: | |
build: | |
name: build | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
id: toolchain | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- shell: bash | |
run: cargo build --all-targets --all-features | |
checks: | |
name: various checks | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
components: rustfmt, clippy | |
- name: Cargo cache registry, index and build | |
uses: actions/[email protected] | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-cache-${{ hashFiles('**/Cargo.lock') }}-${{ hashFiles('**/Cargo.toml') }} | |
- name: check formatting | |
run: cargo fmt --all -- --check | |
- name: clippy checks | |
run: cargo clippy --all-targets --all-features -- -Dwarnings | |
- shell: bash | |
run: cargo install ripgrep | |
- uses: maidsafe/verify-licensing-info@main | |
name: verify licensing | |
with: | |
company-name: MaidSafe | |
cargo-udeps: | |
name: unused dependency check | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
override: true | |
- name: install rustfmt for nightly toolchain | |
run: rustup component add rustfmt --toolchain nightly-x86_64-unknown-linux-gnu | |
- name: Run cargo-udeps | |
uses: aig787/cargo-udeps-action@v1 | |
with: | |
version: 'latest' | |
args: '--all-targets' | |
cargo-deny: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- shell: bash | |
run: wget https://raw.githubusercontent.com/maidsafe/QA/master/misc-scripts/deny.toml | |
- uses: EmbarkStudios/cargo-deny-action@v1 | |
unit-tests: | |
name: unit tests | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- name: cargo cache registry, index and build | |
uses: actions/[email protected] | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-cache-${{ hashFiles('**/Cargo.lock') }} | |
- shell: bash | |
run: cargo test --release --bin safenode-manager | |
integration-tests: | |
name: integration tests | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- { os: ubuntu-latest, elevated: sudo env PATH="$PATH" } | |
- { os: macos-latest, elevated: sudo } | |
- { os: windows-latest } | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- shell: bash | |
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' | |
run: | | |
${{ matrix.elevated }} rustup default stable | |
${{ matrix.elevated }} cargo test --release --test e2e -- --nocapture | |
# A simple test seemed to confirm that the Powershell step runs as admin by default. | |
- name: run integration test in powershell | |
if: matrix.os == 'windows-latest' | |
shell: pwsh | |
run: | | |
curl -L -o WinSW.exe $env:WINSW_URL | |
New-Item -ItemType Directory -Force -Path "$env:GITHUB_WORKSPACE\bin" | |
Move-Item -Path WinSW.exe -Destination "$env:GITHUB_WORKSPACE\bin" | |
$env:PATH += ";$env:GITHUB_WORKSPACE\bin" | |
cargo test --release --test e2e -- --nocapture |