devolutions-crypto 0.10.1

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

on:
  schedule:
    # Run nightly at 2 AM UTC
    - cron: '0 2 * * *'
  workflow_dispatch:
    inputs:
      duration:
        description: 'Duration per target in seconds'
        required: false
        default: '480'
        type: string

jobs:
  extended_fuzz:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v6

      - name: Install Rust nightly
        run: |
          rustup toolchain install nightly
          rustup default nightly

      - name: Install cargo-fuzz
        run: cargo install cargo-fuzz

      - name: Restore corpus cache
        uses: actions/cache@v5
        with:
          path: fuzz/corpus
          key: fuzz-corpus-${{ github.sha }}
          restore-keys: |
            fuzz-corpus-

      - name: Run extended fuzz tests
        working-directory: ./fuzz
        run: |
          DURATION=${{ inputs.duration || '480' }}
          bash run_all_fuzz_tests.sh $DURATION

      - name: Save corpus cache
        if: always()
        uses: actions/cache/save@v5
        with:
          path: fuzz/corpus
          key: fuzz-corpus-${{ github.sha }}

      - name: Upload crash artifacts
        if: failure()
        uses: actions/upload-artifact@v7
        with:
          name: fuzz-crash-artifacts-extended-${{ github.run_id }}
          path: fuzz/artifacts/
          if-no-files-found: ignore

      - name: Upload corpus on failure
        if: failure()
        uses: actions/upload-artifact@v7
        with:
          name: fuzz-corpus-${{ github.run_id }}
          path: fuzz/corpus/
          if-no-files-found: ignore