Cache Factory #1582
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
# This workflow _produces_ caches which are used to speed up pull request builds. | |
# Originally from https://github.com/libp2p/rust-libp2p/blob/master/.github/workflows/cache-factory.yml | |
name: Cache Factory | |
on: | |
push: | |
branches: | |
- main | |
schedule: | |
- cron: '0 0 * * *' | |
pull_request: | |
paths: | |
- '.github/workflows/cache-factory.yaml' | |
workflow_dispatch: | |
# Cancel previous runs of the same workflow on the same branch. | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
# From: https://github.com/rust-lang/rust-analyzer/blob/master/.github/workflows/ci.yaml | |
env: | |
CARGO_INCREMENTAL: 0 | |
CARGO_NET_RETRY: 10 | |
RUST_BACKTRACE: short | |
RUSTUP_MAX_RETRIES: 10 | |
jobs: | |
make_cache: | |
strategy: | |
fail-fast: true | |
matrix: | |
settings: | |
- host: macos-13 | |
target: x86_64-apple-darwin | |
- host: macos-14 | |
target: aarch64-apple-darwin | |
- host: windows-latest | |
target: x86_64-pc-windows-msvc | |
# - host: windows-latest | |
# target: aarch64-pc-windows-msvc | |
- host: ubuntu-22.04 | |
target: x86_64-unknown-linux-gnu | |
# - host: ubuntu-22.04 | |
# target: x86_64-unknown-linux-musl | |
# - host: uubuntu-22.04 | |
# target: aarch64-unknown-linux-gnu | |
# - host: ubuntu-22.04 | |
# target: aarch64-unknown-linux-musl | |
# - host: ubuntu-22.04 | |
# target: armv7-unknown-linux-gnueabihf | |
name: 'Make Cache' | |
runs-on: ${{ matrix.settings.host }} | |
if: github.repository == 'spacedriveapp/spacedrive' | |
permissions: {} | |
timeout-minutes: 150 # 2.5 hours | |
steps: | |
- name: Maximize build space | |
if: ${{ runner.os == 'Linux' }} | |
uses: easimon/maximize-build-space@master | |
with: | |
swap-size-mb: 4096 | |
root-reserve-mb: 6144 | |
remove-dotnet: 'true' | |
remove-codeql: 'true' | |
remove-haskell: 'true' | |
remove-docker-images: 'true' | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- 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: Setup System and Rust | |
uses: ./.github/actions/setup-system | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
target: ${{ matrix.settings.target }} | |
save-cache: 'true' | |
- name: Compile tests (debug) | |
run: cargo test --workspace --all-features --no-run --locked --target ${{ matrix.settings.target }} | |
- name: Compile tests (release) | |
run: cargo test --workspace --all-features --no-run --locked --release --target ${{ matrix.settings.target }} | |
# It's faster to `test` before `build` ¯\_(ツ)_/¯ | |
- name: Compile (debug) | |
run: cargo build --quiet --workspace --all-features --target ${{ matrix.settings.target }} | |
- name: Compile (release) | |
run: cargo build --quiet --workspace --all-features --release --target ${{ matrix.settings.target }} | |
- name: Clippy | |
run: cargo clippy --workspace --all-features --target ${{ matrix.settings.target }} |