From 75e87520221a2cba393bcb57e7246cb99eeb576b Mon Sep 17 00:00:00 2001
From: evandrocoan <evandrocoan@hotmail.com>
Date: Fri, 27 Mar 2020 20:07:44 -0300
Subject: [PATCH] Multiple OS with a build matrix

---
 examples.md | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 69 insertions(+)

diff --git a/examples.md b/examples.md
index 5a38585..1ced92f 100644
--- a/examples.md
+++ b/examples.md
@@ -582,6 +582,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