devolutions-crypto 0.10.1

An abstraction layer for the cryptography used by Devolutions
Documentation
name: Main

on:
  push:
    branches:
    - master
  pull_request:
  workflow_dispatch:
    inputs:
      version:
        description: Version
        required: false
        type: string

env:
  XCODE_VERSION: 26.5

jobs:
  setup_config:
    runs-on: ubuntu-22.04

    steps:
      - name: Setup config artifact
        run: |
          echo "MANAGED_VERSION=${{ inputs.version }}"
          MANAGED_VERSION=${{ inputs.version }}

          if [ -z "$MANAGED_VERSION" ]
          then
            echo "Managed version is empty! Setting it up to $(date '+%Y.%-m.%-d')!"
            echo "MANAGED_VERSION=$(date '+%Y.%-m.%-d')"
            MANAGED_VERSION=$(date '+%Y.%-m.%-d')
          fi

          echo "version = \"$MANAGED_VERSION\"" >> config.txt
          echo "Writing to file..."
          cat config.txt

      - uses: actions/upload-artifact@v7
        with:
          name: config.txt
          path: config.txt

  #### NATIVE BUILD ####
  native_build_linux:
    needs: [rust_code_format, setup_config]
    runs-on: "ubuntu-22.04" # Ensure we build with the minimum supported sysroot

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/native/native-build-linux

  native_build_macos:
    needs: [rust_code_format, setup_config]
    runs-on: "macos-15"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/native/native-build-macos

  native_build_ios:
    needs: [rust_code_format, setup_config]
    runs-on: "macos-15"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/native/native-build-ios

  native_build_windows:
    needs: [rust_code_format, setup_config]
    runs-on: "windows-2022"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/native/native-build-windows

  #### NUGET BUILD ####
  nugets:
    needs: [native_build_linux, native_build_macos, native_build_ios, native_build_windows , setup_config] # All Natives for dotnet-core
    runs-on: "windows-2022"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/nugets/nugets-windows

  #### WEB ASSEMBLY BUILD ####
  webassembly_build:
    needs: rust_code_format
    runs-on: "ubuntu-22.04"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/other/webassembly-build

  #### WEB ASSEMBLY TEST ####
  webassembly_test:
    needs: webassembly_build
    runs-on: "macos-15"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/tests/webassembly/safari

  #### TESTS NUGETS ####
  tests_nuget_windows:
    needs: [nugets, setup_config]
    runs-on: "windows-2022"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/tests/csharp/windows

  tests_nuget_macos:
    needs: [nugets, setup_config]
    runs-on: "macos-15"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/tests/csharp/macos

  tests_nuget_ios:
    needs: [nugets, setup_config]
    runs-on: "macos-26"
    steps:
      - uses: actions/checkout@v6

      - name: Set Xcode version
        run: |
          sudo xcode-select --switch '/Applications/Xcode_${{ env.XCODE_VERSION }}.app/Contents/Developer'
          /usr/bin/xcodebuild -version

      - uses: ./.github/workflows/tests/csharp/ios

  tests_nuget_linux:
    needs: [nugets, setup_config]
    runs-on: "ubuntu-22.04"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/tests/csharp/linux

##### SWIFT BUILD #####
  tests_swift:
    needs: setup_config
    runs-on: "macos-15"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/swift

##### KOTLIN BUILD #####
  kotlin_windows:
    needs: [setup_config]
    runs-on: "windows-2022"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/kotlin/kotlin-windows

  kotlin_macos:
    needs: [setup_config]
    runs-on: "macos-15"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/kotlin/kotlin-macos

  build_kotlin:
    needs: [setup_config, kotlin_macos, kotlin_windows ]
    runs-on: "ubuntu-22.04"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/kotlin/kotlin-linux

  tests_nuget_android:
    needs: [nugets, setup_config]
    runs-on: "ubuntu-22.04"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/tests/csharp/android

  #### CODE FORMATTING ####
  rust_code_format:
    runs-on: "ubuntu-22.04"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/formatting/rust

  #### FUZZ TESTING ####
  quick_fuzz:
    runs-on: "ubuntu-22.04"
    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/tests/fuzz/quick

  csharp_code_format:
    needs: setup_config
    runs-on: "windows-2022"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/formatting/csharp

  #### PYTHON BUILD ####
  build_python_linux:
    runs-on: "ubuntu-22.04"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/python/build/linux

  build_python_macos:
    runs-on: "macos-15"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/python/build/macos

  build_python_windows:
    runs-on: "windows-2022"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/python/build/windows

  #### PYTHON TEST ####
  test_python_linux:
    needs: build_python_linux
    runs-on: "ubuntu-22.04"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/tests/python/linux

  test_python_macos:
    needs: build_python_macos
    runs-on: "macos-15"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/tests/python/macos

  test_python_windows:
    needs: build_python_windows
    runs-on: "windows-2022"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/tests/python/windows

  #### PUBLISH SOURCE ####
  source_publish:
    runs-on: "ubuntu-22.04"

    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/workflows/other/source-publish