Przeglądaj źródła

Merge pull request #391 from tsuiyuenhong/main

chore: use actions-cache to speed up CI.
Nathan.fooo 3 lat temu
rodzic
commit
912fb0b9da
1 zmienionych plików z 67 dodań i 63 usunięć
  1. 67 63
      .github/workflows/ci.yaml

+ 67 - 63
.github/workflows/ci.yaml

@@ -1,79 +1,83 @@
 name: CI
+
 on:
   push:
-    branches: [main]
+    branches:
+      - 'main'
+      
   pull_request:
-    branches: [main]
+    branches:
+      - 'main'
+
 jobs:
-  build-macos:
-    runs-on: macOS-latest
+  build:
+    strategy:
+      matrix:
+        os: [ubuntu-latest, macos-latest]
+        include:
+          - os: ubuntu-latest
+            flutter_profile: development-linux-x86
+          - os: macos-latest
+            flutter_profile: development-mac
+    runs-on: ${{ matrix.os }}
+
     steps:
-      - name: Checkout
-        uses: actions/checkout@v2
-      - uses: actions-rs/toolchain@v1
+      - uses: actions/checkout@v2
+      
+      - id: rust_toolchain
+        uses: actions-rs/toolchain@v1
         with:
           toolchain: stable
-      - name: Checkout Flutter
-        uses: actions/checkout@v2
+      
+      - id: flutter
+        uses: subosito/flutter-action@v2
         with:
-          repository: flutter/flutter
-          path: flutter
-      - name: Flutter
-        working-directory: flutter
-        run: |
-          echo "$(pwd)/bin" >> $GITHUB_PATH
-          export PATH="$PATH:$(pwd)/bin"
-          flutter channel stable
-          flutter config --enable-macos-desktop
-          flutter doctor
+          channel: 'stable'
+          cache: true
+
+      - name: Cache Cargo
+        uses: actions/cache@v2
+        with: 
+          path: |
+            ~/.cargo
+          key: ${{ runner.os }}-cargo-${{ steps.rust_toolchain.outputs.rustc_hash }}-${{ hashFiles('./frontend/rust-lib/Cargo.toml') }}
+
+      - name: Cache Rust
+        uses: actions/cache@v2
+        with: 
+          path: |
+            frontend/rust-lib/target
+          key: ${{ runner.os }}-rust-${{ steps.rust_toolchain.outputs.rustc_hash }}-${{ hashFiles('./frontend/rust-lib/Cargo.toml') }}    
+
+      - name: Setup Environment
+        run:   |
+          if [ "$RUNNER_OS" == "Linux" ]; then
+            sudo wget -qO /etc/apt/trusted.gpg.d/dart_linux_signing_key.asc https://dl-ssl.google.com/linux/linux_signing_key.pub
+            sudo wget -qO /etc/apt/sources.list.d/dart_stable.list https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list
+            sudo apt-get update
+            sudo apt-get install -y dart curl build-essential libsqlite3-dev libssl-dev clang cmake ninja-build pkg-config libgtk-3-dev
+          elif [ "$RUNNER_OS" == "macOS" ]; then
+            echo 'do nothing'
+          fi
+        shell: bash
+
       - name: Deps
         working-directory: frontend
         run: |
-          cargo install --force cargo-make
-          cargo install --force duckscript_cli
+          cargo install cargo-make
+          cargo install duckscript_cli
           cargo make flowy_dev
-          echo PATH="$PATH":"$HOME/.pub-cache/bin" >> $GITHUB_PATH
-      - name: Build
-        working-directory: frontend
-        run: cargo make --profile production-mac-x86 appflowy
-  build-ubuntu:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout
-        uses: actions/checkout@v2
-      - name: Packages
-        run: |
-          sudo wget -qO /etc/apt/trusted.gpg.d/dart_linux_signing_key.asc https://dl-ssl.google.com/linux/linux_signing_key.pub
-          sudo wget -qO /etc/apt/sources.list.d/dart_stable.list https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list
-          sudo apt-get update
-          sudo apt-get install -y dart curl build-essential libsqlite3-dev libssl-dev clang cmake ninja-build pkg-config libgtk-3-dev
-      - name: Rust
-        run: |
-          curl \
-            --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
-          source $HOME/.cargo/env
-          rustup toolchain install stable
-          rustup default stable
-      - name: Checkout Flutter
-        uses: actions/checkout@v2
-        with:
-          repository: flutter/flutter
-          path: flutter
-      - name: Flutter
-        working-directory: flutter
-        run: |
-          echo "$(pwd)/bin" >> $GITHUB_PATH
-          export PATH="$PATH:$(pwd)/bin"
-          flutter channel stable
-          flutter config --enable-linux-desktop
-          flutter doctor
-      - name: Deps
-        working-directory: frontend
+
+      - name: Config Flutter
         run: |
-          cargo install --force cargo-make
-          cargo install --force duckscript_cli
-          cargo make flowy_dev
-          echo PATH="$PATH":"$HOME/.pub-cache/bin" >> $GITHUB_PATH
+          if [ "$RUNNER_OS" == "Linux" ]; then
+            flutter config --enable-linux-desktop
+          elif [ "$RUNNER_OS" == "macOS" ]; then
+            flutter config --enable-macos-desktop
+          fi
+        shell: bash
+
       - name: Build
         working-directory: frontend
-        run: cargo make --profile production-linux-x86 appflowy
+        run: |
+          cargo make --profile ${{ matrix.flutter_profile }} appflowy-dev