Skip to content

[[email protected]] fix: OpenBSD compatible

[[email protected]] fix: OpenBSD compatible #8172

Workflow file for this run

name: CI
on:
pull_request:
push:
branches:
- main
env:
RUST_BACKTRACE: 1
RUSTFLAGS: -Dwarnings
MSRV: "1.67"
jobs:
build_and_test_nix:
name: Build and test (Nix)
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macOS-latest]
rust: [stable]
steps:
- name: Checkout
uses: actions/checkout@master
with:
submodules: recursive
- name: Install ${{ matrix.rust }}
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- name: check
run: cargo check --all --bins --tests
- name: tests
run: cargo test --all
build_and_test_windows:
name: Build and test (Windows)
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest]
rust: [stable]
target:
# - x86_64-pc-windows-gnu
- x86_64-pc-windows-msvc
steps:
- name: Checkout
uses: actions/checkout@master
with:
submodules: recursive
- name: Install ${{ matrix.rust }}
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
target: ${{ matrix.target }}
- uses: msys2/setup-msys2@v2
- name: check
run: cargo check --all --bins --tests --target ${{ matrix.target }}
- name: check bench
if: matrix.rust == 'nightly'
run: cargo check --target ${{ matrix.target }} --benches
- name: tests
run: cargo test --all --target ${{ matrix.target }}
build_release:
name: Build release binaries
runs-on: ${{ matrix.runner }}
continue-on-error: false
needs: build_and_test_nix
if: ${{ always() && github.ref_name=='main' }}
strategy:
fail-fast: false
matrix:
name: [ubuntu-latest, ubuntu-arm-latest, macOS-latest, macOS-arm-latest]
rust: [stable]
experimental: [false]
include:
- name: ubuntu-arm-latest
os: ubuntu-latest
release-os: linux
release-arch: aarch64
runner: [self-hosted, linux, ARM64]
- name: ubuntu-latest
os: ubuntu-latest
release-os: linux
release-arch: amd64
runner: [self-hosted, linux, X64]
- name: macOS-latest
os: macOS-latest
release-os: darwin
release-arch: x86_64
runner: [self-hosted, macOS, X64]
- name: macOS-arm-latest
os: macOS-latest
release-os: darwin
release-arch: aarch64
runner: [self-hosted, macOS, ARM64]
# - os: windows-latest
# release-os: windows
# release-arch: amd64
# runner: [windows-latest]
env:
RUST_BACKTRACE: full
RUSTV: ${{ matrix.rust }}
steps:
- name: Checkout
uses: actions/checkout@master
with:
submodules: recursive
- name: Set build arch
run: |
echo "RELEASE_ARCH=${{ matrix.release-arch }}" >> $GITHUB_ENV
echo "RELEASE_OS=${{ matrix.release-os }}" >> $GITHUB_ENV
- name: Install ${{ matrix.rust }}
run: |
rustup toolchain install ${{ matrix.rust }}
- name: build release
run: |
cargo build --profile optimized-release
- name: Setup awscli on linux
if: matrix.name == 'ubuntu-latest'
run: |
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install --update
- name: Setup awscli on linux
if: matrix.name == 'ubuntu-arm-latest'
run: |
curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install --update
- name: Setup awscli on mac
if: matrix.os == 'macos-latest'
run: |
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
- name: Set aws credentials
if: matrix.os != 'windows-latest'
run: |
echo "AWS_ACCESS_KEY_ID=${{secrets.S3_ACCESS_KEY_ID}}" >> $GITHUB_ENV
echo "AWS_SECRET_ACCESS_KEY=${{secrets.S3_ACCESS_KEY}}" >> $GITHUB_ENV
echo "AWS_DEFAULT_REGION=us-west-2" >> $GITHUB_ENV
- name: push release
if: matrix.os != 'windows-latest'
run: |
aws s3 cp ./target/optimized-release/iroh s3://vorc/iroh-${RELEASE_OS}-${RELEASE_ARCH}-${GITHUB_SHA::7} --no-progress
- name: push release latest
if: matrix.os != 'windows-latest'
run: |
aws s3 cp ./target/optimized-release/iroh s3://vorc/iroh-${RELEASE_OS}-${RELEASE_ARCH}-latest --no-progress
cross:
name: Cross compile
runs-on: ubuntu-latest
strategy:
matrix:
target:
- i686-unknown-linux-gnu
- armv7-linux-androideabi
- aarch64-linux-android
steps:
- name: Checkout
uses: actions/checkout@master
with:
submodules: recursive
- name: Install rust
# See https://github.com/cross-rs/cross/issues/1222
uses: dtolnay/[email protected]
- name: Install cross
run: cargo install cross
- name: check
run: cross check --all --target ${{ matrix.target }}
- name: test
run: cross test --all --target ${{ matrix.target }}
check_fmt_and_docs:
name: Checking fmt and docs
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- name: fmt
run: cargo fmt --all -- --check
- name: Docs
run: cargo doc
clippy_check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: clippy check
run: cargo clippy --message-format=json --all-features --all-targets
msrv:
name: Minimal Supported Rust Version
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.MSRV }}
- name: Check MSRV all features
run: |
cargo +$MSRV check --workspace --all-targets --no-default-features
cargo_deny:
name: cargo deny
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: EmbarkStudios/cargo-deny-action@v1
with:
arguments: --workspace --all-features
command: check
command-arguments: "-Dwarnings"
# netsim-integration-tests:
# name: Run network simulations/benchmarks
# runs-on: [self-hosted, linux, X64]
# steps:
# - name: Checkout
# uses: actions/checkout@master
# with:
# submodules: recursive
# - name: Install rust stable
# uses: dtolnay/rust-toolchain@stable
# - name: Build iroh
# run: |
# cargo build --release
# - name: Fetch and build chuck
# run: |
# git clone https://github.com/n0-computer/chuck.git
# cd chuck
# cargo build --release
# - name: Install netsim deps
# run: |
# cd chuck/netsim
# sudo apt update
# ./setup.sh
# - name: Copy binaries to right location
# run: |
# cp target/release/iroh chuck/netsim/bins/iroh
# cp chuck/target/release/chuck chuck/netsim/bins/chuck
# - name: Run tests
# run: |
# cd chuck/netsim
# sudo kill -9 $(pgrep ovs)
# sudo mn --clean
# sudo python3 main.py --integration sims/standard/iroh.json
# - name: Setup Environment (PR)
# if: ${{ github.event_name == 'pull_request' }}
# shell: bash
# run: |
# echo "LAST_COMMIT_SHA=$(git rev-parse --short ${{ github.event.pull_request.head.sha }})" >> ${GITHUB_ENV}
# echo "HEAD_REF=${{ github.event.pull_request.head.ref }}" >> ${GITHUB_ENV}
# - name: Setup Environment (Push)
# if: ${{ github.event_name == 'push' }}
# shell: bash
# run: |
# echo "LAST_COMMIT_SHA=$(git rev-parse --short ${GITHUB_SHA})" >> ${GITHUB_ENV}
# echo "HEAD_REF=${{ github.head_ref }}" >> ${GITHUB_ENV}
# - name: Generate reports
# run: |
# cd chuck/netsim
# python3 reports_csv.py --prom --commit ${{ env.LAST_COMMIT_SHA }} > report_prom.txt
# python3 reports_csv.py --metro --commit ${{ env.LAST_COMMIT_SHA }} > report_metro.txt
# - name: Echo metrics
# run: |
# cd chuck/netsim
# d=$(cat report_metro.txt)
# metro_data=$(printf "%s\n " "$d")
# echo "$metro_data"