name: CI

on:
  pull_request:
  merge_group:
  push:
    branches:
      - main

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

env:
  IROH_FORCE_STAGING_RELAYS: "1"

jobs:
  build_and_test_rust:
    runs-on: ${{ matrix.runner }}
    timeout-minutes: 30
    name: Rust - Build and test
    strategy:
      fail-fast: false
      matrix:
        name: [ubuntu-latest, macOS-arm-latest, windows-latest]
        rust: [stable]
        include:
          - name: ubuntu-latest
            os: ubuntu-latest
            release-os: linux
            release-arch: amd64
            runner: [linux, X64]
          - name: macOS-arm-latest
            os: macOS-latest
            release-os: darwin
            release-arch: aarch64
            runner: [macOS, ARM64]
          - name: windows-latest
            os: windows
            runner: [windows-latest]

    steps:
    - name: Checkout
      uses: actions/checkout@master
      with:
        submodules: recursive

    - name: Install ${{ matrix.rust }}
      uses: dtolnay/rust-toolchain@master
      with:
        toolchain: ${{ matrix.rust }}

    - name: cargo test
      run: cargo test

  check_fmt_and_docs:
    timeout-minutes: 30
    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 -- --check
    - name: Docs
      run: cargo doc --all-features --no-deps --document-private-items

  clippy_check:
    timeout-minutes: 30
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - uses: dtolnay/rust-toolchain@stable
      with:
          components: clippy

    - name: clippy check
      run: cargo clippy --all-targets --bins --tests --benches

  build_and_test_python:
    name: Python - Build and test
    timeout-minutes: 30
    runs-on: [linux, x64]
    steps:
    - uses: actions/checkout@master
    - uses: dtolnay/rust-toolchain@stable
    - uses: actions/setup-python@v5
      with:
          python-version: 3.12
    - name: Install virtualenv
      run: pip install virtualenv
    - name: Python tests
      run: |
        virtualenv venv
        source venv/bin/activate
        pip install setuptools pytest pytest-asyncio "maturin[patchelf]" uniffi-bindgen
        maturin develop
        pytest -v

  build_and_test_swift:
    name: Swift - Build and test
    timeout-minutes: 30
    runs-on: [macOS, ARM64]
    steps:
    - uses: actions/checkout@master
    - uses: dtolnay/rust-toolchain@stable
      with:
        targets: aarch64-apple-ios,aarch64-apple-ios-sim,x86_64-apple-ios,aarch64-apple-darwin
    - name: Swift tests
      run: |
        ./make_swift.sh
        cp -R Iroh.xcframework IrohLib/artifacts/
        cd IrohLib
        swift test

  build_and_test_kotlin:
    runs-on: ${{ matrix.runner }}
    timeout-minutes: 30
    name: Kotlin - Build and test
    strategy:
      fail-fast: false
      matrix:
        name: [ubuntu-latest, macOS-arm-latest]
        rust: [stable]
        include:
          - name: ubuntu-latest
            os: linux
            release-os: linux
            release-arch: amd64
            runner: [linux, X64]
          - name: macOS-arm-latest
            os: mac
            release-os: darwin
            release-arch: aarch64
            runner: [macOS, ARM64]
          # - name: windows-latest
          #   os: windows
          #   runner: [windows-latest]

    steps:
    - name: Checkout
      uses: actions/checkout@master
      with:
        submodules: recursive

    - name: Install ${{ matrix.rust }}
      uses: dtolnay/rust-toolchain@master
      with:
        toolchain: ${{ matrix.rust }}

    - name: setup java
      uses: actions/setup-java@v4
      with:
        distribution: 'temurin' # See 'Supported distributions' for available options
        java-version: '21'

    - name: install kotlin
      uses: arqu/setup-kotlin@main

    - name: install ktlint
      uses: arqu/action-ktlint-setup@main

    - name: Setup Gradle
      uses: gradle/actions/setup-gradle@v4

    - name: build kotlin
      env:
        TEST_OS: ${{ matrix.os }}
      shell: bash
      run: ./make_kotlin.sh

    - name: Gradle Test
      run: |
        cd kotlin
        ./gradlew test

Homonyms

soft3/hemera/.github/workflows/ci.yml
soft3/tru/.github/workflows/ci.yml
soft3/lens/.github/workflows/ci.yml
soft3/radio/.github/workflows/ci.yml
soft3/radio/iroh-car/.github/workflows/ci.yml
cyb/honeycrisp/rane/.github/workflows/ci.yml
soft3/radio/iroh-willow/.github/workflows/ci.yml
cyb/honeycrisp/aruminium/.github/workflows/ci.yml
soft3/radio/quinn/.github/workflows/ci.yml
neural/inf/rs/cozo/cozo-lib-python/.github_disabled/workflows/CI.yml
cyb/honeycrisp/.claude/worktrees/agent-ad6c77c38e86bc291/aruminium/.github/workflows/ci.yml
cyb/honeycrisp/.claude/worktrees/agent-aa1259cb10112b22a/aruminium/.github/workflows/ci.yml
cyb/honeycrisp/.claude/worktrees/agent-ad6c77c38e86bc291/rane/.github/workflows/ci.yml
cyb/honeycrisp/.claude/worktrees/agent-aa1259cb10112b22a/rane/.github/workflows/ci.yml

Graph