Media metadata extraction & Thumbnailer rework #8614
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
pull_request: | |
merge_group: | |
env: | |
SPACEDRIVE_CUSTOM_APT_FLAGS: --no-install-recommends | |
# From: https://github.com/rust-lang/rust-analyzer/blob/master/.github/workflows/ci.yaml | |
CARGO_INCREMENTAL: 0 | |
CARGO_NET_RETRY: 10 | |
RUST_BACKTRACE: short | |
RUSTUP_MAX_RETRIES: 10 | |
SD_AUTH: disabled | |
# Cancel previous runs of the same workflow on the same branch. | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
typescript: | |
name: TypeScript | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup Node.js, pnpm and dependencies | |
uses: ./.github/actions/setup-pnpm | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Perform typechecks | |
run: pnpm typecheck | |
eslint: | |
name: ESLint | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup Node.js, pnpm and dependencies | |
uses: ./.github/actions/setup-pnpm | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Perform linting | |
run: pnpm lint | |
cypress: | |
name: Cypress | |
runs-on: macos-14 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup System and Rust | |
uses: ./.github/actions/setup-system | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
target: aarch64-apple-darwin | |
- name: Setup Node.js, pnpm and dependencies | |
uses: ./.github/actions/setup-pnpm | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Install Cypress | |
run: | | |
set -euxo pipefail | |
pnpm exec cypress install | |
rm -rf /Users/runner/.cache/Cypress | |
ln -sf /Users/runner/Library/Caches/Cypress /Users/runner/.cache/Cypress | |
- name: Setup Cypress | |
uses: cypress-io/github-action@v6 | |
with: | |
runTests: false | |
working-directory: . | |
- name: Download test data | |
run: pnpm test-data small | |
- name: E2E test | |
uses: cypress-io/github-action@v6 | |
with: | |
build: npx cypress info | |
install: false | |
command: env CI=true pnpm test:e2e | |
working-directory: apps/web | |
- uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: cypress-screenshots | |
path: apps/web/cypress/screenshots | |
if-no-files-found: ignore | |
- uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: cypress-videos | |
path: apps/web/cypress/videos | |
if-no-files-found: ignore | |
rustfmt: | |
name: Rust Formatting | |
runs-on: ubuntu-latest | |
steps: | |
- name: Maximize build space | |
if: ${{ runner.os == 'Linux' }} | |
uses: easimon/maximize-build-space@master | |
with: | |
swap-size-mb: 3072 | |
root-reserve-mb: 6144 | |
remove-dotnet: 'true' | |
remove-codeql: 'true' | |
remove-haskell: 'true' | |
remove-docker-images: 'true' | |
- name: Symlink target to C:\ | |
if: ${{ runner.os == 'Windows' }} | |
shell: powershell | |
run: | | |
New-Item -ItemType Directory -Force -Path C:\spacedrive_target | |
New-Item -Path target -ItemType Junction -Value C:\spacedrive_target | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- uses: dorny/paths-filter@v3 | |
continue-on-error: true | |
id: filter | |
with: | |
filters: | | |
changes: | |
- 'apps/cli/*/**' | |
- 'apps/desktop/crates/*/**' | |
- 'apps/desktop/src-tauri/*/**' | |
- 'apps/mobile/crates/*/**' | |
- 'apps/server/*/**' | |
- 'core/**' | |
- 'crates/*/**' | |
- 'extensions/*/**' | |
- 'Cargo.toml' | |
- 'Cargo.lock' | |
- name: Setup Rust and Prisma | |
if: steps.filter.outcome != 'success' || steps.filter.outputs.changes == 'true' | |
uses: ./.github/actions/setup-rust | |
with: | |
restore-cache: 'false' | |
- name: Run rustfmt | |
if: steps.filter.outcome != 'success' || steps.filter.outputs.changes == 'true' | |
run: cargo fmt --all -- --check | |
clippy: | |
name: Clippy (${{ matrix.platform }}) | |
runs-on: ${{ matrix.platform }} | |
strategy: | |
matrix: | |
platform: [ubuntu-20.04, macos-14, windows-latest] | |
steps: | |
- name: Maximize build space | |
if: ${{ runner.os == 'Linux' }} | |
uses: easimon/maximize-build-space@master | |
with: | |
swap-size-mb: 3072 | |
root-reserve-mb: 6144 | |
remove-dotnet: 'true' | |
remove-codeql: 'true' | |
remove-haskell: 'true' | |
remove-docker-images: 'true' | |
- name: Symlink target to C:\ | |
if: ${{ runner.os == 'Windows' }} | |
shell: powershell | |
run: | | |
New-Item -ItemType Directory -Force -Path C:\spacedrive_target | |
New-Item -Path target -ItemType Junction -Value C:\spacedrive_target | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- uses: dorny/paths-filter@v3 | |
continue-on-error: true | |
id: filter | |
with: | |
filters: | | |
changes: | |
- ${{ runner.os == 'Windows' && 'scripts/setup.ps1' || 'scripts/setup.sh' }} | |
- 'scripts/preprep.mjs' | |
- 'apps/cli/*/**' | |
- 'apps/desktop/crates/*/**' | |
- 'apps/desktop/src-tauri/*/**' | |
- 'apps/mobile/crates/*/**' | |
- 'apps/server/*/**' | |
- 'core/**' | |
- 'crates/*/**' | |
- 'extensions/*/**' | |
- 'Cargo.toml' | |
- 'Cargo.lock' | |
- name: Setup System and Rust | |
if: steps.filter.outcome != 'success' || steps.filter.outputs.changes == 'true' | |
uses: ./.github/actions/setup-system | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Run Clippy | |
if: steps.filter.outcome != 'success' || steps.filter.outputs.changes == 'true' | |
uses: actions-rs-plus/clippy-check@v2 | |
with: | |
args: --workspace --all-features --locked | |
# test: | |
# name: Test (${{ matrix.platform }}) | |
# runs-on: ${{ matrix.platform }} | |
# strategy: | |
# matrix: | |
# platform: [ubuntu-20.04, macos-latest, windows-latest] | |
# steps: | |
# - name: Checkout repository | |
# uses: actions/checkout@v4 | |
# | |
# - name: Setup | |
# uses: ./.github/actions/setup | |
# | |
# - name: Test | |
# run: cargo test --workspace --all-features |