diff --git a/examples.md b/examples.md index ac78be2..1a4d05d 100644 --- a/examples.md +++ b/examples.md @@ -621,6 +621,75 @@ whenever possible: key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} ``` +### Multiple OS with a build matrix + +```yml +name: CI +on: [push, pull_request] + +jobs: + tests: + name: Test ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + include: + - os: ubuntu-latest + SEP: / + PIP_WHEELS_DIR: ~/.cache/pip + CARGO_INDEX_DIR: ~/.cargo/git + CARGO_REGISTRY_DIR: ~/.cargo/registry + + - os: macos-latest + SEP: / + PIP_WHEELS_DIR: ~/Library/Caches/pip + CARGO_INDEX_DIR: ~/.cargo/git + CARGO_REGISTRY_DIR: ~/.cargo/registry + + - os: windows-latest + SEP: \ + PIP_WHEELS_DIR: ~\AppData\Local\pip\Cache + CARGO_INDEX_DIR: C:\Rust\.cargo\git + CARGO_REGISTRY_DIR: C:\Rust\.cargo\registry + + # Keep running all matrices if something fail + fail-fast: false + + steps: + - name: Cache pip wheels + uses: actions/cache@v1 + with: + path: ${{ matrix.PIP_WHEELS_DIR }} + key: ${{ runner.os }}-pip-wheels-${{ hashFiles('**/requirements.txt') }}-${{ hashFiles('**/setup.py') }}-14- + + - name: Cache cargo index + uses: actions/cache@v1 + with: + path: ${{ matrix.CARGO_INDEX_DIR }} + key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.toml') }}-14- + + - name: Cache cargo registry + uses: actions/cache@v1 + with: + path: ${{ matrix.CARGO_REGISTRY_DIR }} + key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.toml') }}-14- + + - name: Cache cargo target + uses: actions/cache@v1 + with: + path: ${{ github.workspace }}${{ matrix.SEP }}target + key: ${{ runner.os }}-cargo-target-${{ hashFiles('**/Cargo.toml') }}-14- + + - name: Run on Windows + if: matrix.os == 'windows-latest' + run: echo Windows + + - name: Run on Linux + if: matrix.os == 'ubuntu-latest' + run: echo Linux +``` + ## Scala - SBT ```yaml