name: CI on: push: branches: [main] pull_request: concurrency: group: ci-${{ github.ref }} cancel-in-progress: true env: CARGO_TERM_COLOR: always RUSTFLAGS: -D warnings jobs: lint: name: Formatação e clippy runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v7 - uses: dtolnay/rust-toolchain@stable with: components: rustfmt, clippy - uses: Swatinem/rust-cache@v2 - uses: actions/setup-node@v7 with: node-version: 22 - name: Cobertura da tradução da interface run: node scripts/check-ui-i18n.mjs - name: Script do latest.json do atualizador run: python3 scripts/test_make_latest_json.py - run: cargo fmt --all -- --check - run: cargo clippy --workspace --all-targets test: name: Testes (${{ matrix.os }}) runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-24.04, windows-latest, macos-latest] steps: - uses: actions/checkout@v7 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - name: Cache dos pacotes das ferramentas de teste (.deb) if: runner.os == 'Linux' uses: actions/cache@v6 with: path: ~/apt-cache-tools key: apt-tools-${{ runner.os }}-${{ runner.arch }}-${{ env.ImageVersion }}-${{ hashFiles('scripts/apt-install.sh') }} - name: Ferramentas para imagens de teste (Linux) if: runner.os == 'Linux' timeout-minutes: 25 run: scripts/apt-install.sh ~/apt-cache-tools mtools dosfstools exfatprogs ntfs-3g e2fsprogs xfsprogs imagemagick zip - name: Cache das imagens de referência uses: actions/cache@v6 with: path: target/testdata key: testdata-${{ runner.os }}-${{ hashFiles('scripts/fetch-testdata.sh') }} - name: Imagens de referência (BitLocker, FileVault 2, dfvfs, AFF4) shell: bash run: scripts/fetch-testdata.sh - name: Imagem XFS com exclusão feita pelo kernel (Linux) if: runner.os == 'Linux' run: sudo scripts/make-xfs-real-deletion.sh - name: Testes (imagens de referência nos três sistemas; FAT32, NTFS e ext4 gerados no Linux) shell: bash run: | if [ "$RUNNER_OS" = "Linux" ]; then export GUARA_REQUIRE_FIXTURES=1; fi cargo test --workspace audit: name: Auditoria de dependências runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v7 - uses: rustsec/audit-check@v2 with: token: ${{ secrets.GITHUB_TOKEN }} gui: name: Compila o app desktop (Linux) runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v7 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 with: workspaces: apps/gui/src-tauri - uses: actions/setup-node@v7 with: node-version: 22 - name: Cache dos pacotes do Tauri (.deb) uses: actions/cache@v6 with: path: ~/apt-cache key: apt-tauri-${{ runner.os }}-${{ runner.arch }}-${{ env.ImageVersion }}-${{ hashFiles('scripts/apt-install.sh') }} - name: Dependências do Tauri timeout-minutes: 25 run: scripts/apt-install.sh ~/apt-cache libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev patchelf - name: Gera os ícones run: npx --yes @tauri-apps/cli@2 icon apps/gui/src-tauri/icons/source.png -o apps/gui/src-tauri/icons - run: cargo check --manifest-path apps/gui/src-tauri/Cargo.toml env: RUSTFLAGS: ""