Просмотр исходного кода

Merge pull request #701 from hathach/ci-cache-toolchain

cache all toolchains to speed up ci
Ha Thach 5 лет назад
Родитель
Сommit
1b6bf796e1
1 измененных файлов с 80 добавлено и 44 удалено
  1. 80 44
      .github/workflows/build.yml

+ 80 - 44
.github/workflows/build.yml

@@ -9,7 +9,9 @@ on:
       - created
 
 jobs:
+  # ---------------------------------------
   # Unit testing with Ceedling
+  # ---------------------------------------
   unit-test:
     runs-on: ubuntu-latest
     steps:
@@ -53,22 +55,32 @@ jobs:
     - name: Setup Python
       uses: actions/setup-python@v2
 
-    - name: Setup Node.js
-      uses: actions/setup-node@v1
-
-    - name: Install Toolchains
-      run: |
-        # ARM GCC from xpack
-        npm install --global xpm
-        xpm install --global @xpack-dev-tools/arm-none-eabi-gcc@latest
-        echo `echo $HOME/.local/xPacks/@xpack-dev-tools/arm-none-eabi-gcc/*/.content/bin` >> $GITHUB_PATH
-
     - name: Checkout TinyUSB
       uses: actions/checkout@v2
 
     - name: Checkout Submodules in lib
       run: git submodule update --init lib
 
+    - name: Set Toolchain URL
+      run: echo >> $GITHUB_ENV TOOLCHAIN_URL=https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases/download/v10.2.1-1.1/xpack-arm-none-eabi-gcc-10.2.1-1.1-linux-x64.tar.gz
+
+    - name: Cache Toolchain
+      uses: actions/cache@v2
+      id: cache-toolchain
+      with:
+        path: ~/cache/
+        key: ${{ runner.os }}-21-03-04-${{ env.TOOLCHAIN_URL }}
+
+    - name: Install Toolchain
+      if: steps.cache-toolchain.outputs.cache-hit != 'true'
+      run: |
+        mkdir -p ~/cache/toolchain
+        wget --progress=dot:mega $TOOLCHAIN_URL -O toolchain.tar.gz
+        tar -C ~/cache/toolchain -xaf toolchain.tar.gz
+
+    - name: Set Toolchain Path
+      run: echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin`
+
     - name: Build
       run: python3 tools/build_family.py ${{ matrix.family }}
 
@@ -109,21 +121,31 @@ jobs:
     - name: Setup Python
       uses: actions/setup-python@v2
 
-    - name: Setup Node.js
-      uses: actions/setup-node@v1
-
     - name: Checkout TinyUSB
       uses: actions/checkout@v2
 
     - name: Checkout Submodules in lib
       run: git submodule update --init lib
 
+    - name: Set Toolchain URL
+      run: echo >> $GITHUB_ENV TOOLCHAIN_URL=https://github.com/xpack-dev-tools/riscv-none-embed-gcc-xpack/releases/download/v10.1.0-1.1/xpack-riscv-none-embed-gcc-10.1.0-1.1-linux-x64.tar.gz
+
+    - name: Cache Toolchain
+      uses: actions/cache@v2
+      id: cache-toolchain
+      with:
+        path: ~/cache/
+        key: ${{ runner.os }}-21-03-04-${{ env.TOOLCHAIN_URL }}
+
     - name: Install Toolchain
+      if: steps.cache-toolchain.outputs.cache-hit != 'true'
       run: |
-        # RISC-V GCC from xpack
-        npm install --global xpm
-        xpm install --global @xpack-dev-tools/riscv-none-embed-gcc@latest
-        echo `echo $HOME/.local/xPacks/@xpack-dev-tools/riscv-none-embed-gcc/*/.content/bin` >> $GITHUB_PATH
+        mkdir -p ~/cache/toolchain
+        wget --progress=dot:mega $TOOLCHAIN_URL -O toolchain.tar.gz
+        tar -C ~/cache/toolchain -xaf toolchain.tar.gz
+
+    - name: Set Toolchain Path
+      run: echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin`
 
     - name: Build
       run: python3 tools/build_family.py ${{ matrix.family }}
@@ -186,6 +208,12 @@ jobs:
   # ---------------------------------------
   build-msp430:
     runs-on: ubuntu-latest
+    strategy:
+      fail-fast: false
+      matrix:
+        family:
+        # Alphabetical order
+        - 'msp430'     
     steps:
     - name: Setup Python
       uses: actions/setup-python@v2
@@ -195,42 +223,40 @@ jobs:
 
     - name: Checkout Submodules in lib
       run: git submodule update --init lib
-        
-    - run: |
-        echo family=msp430 >> $GITHUB_ENV
-        # Add msp430-gcc url to env
-        echo >> $GITHUB_ENV MSP430_GCC_URL=http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPGCC/9_2_0_0/export/msp430-gcc-9.2.0.50_linux64.tar.bz2
 
-    - name: Cache MSP430-GCC
+    - name: Set Toolchain URL
+      run: echo >> $GITHUB_ENV TOOLCHAIN_URL=http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPGCC/9_2_0_0/export/msp430-gcc-9.2.0.50_linux64.tar.bz2
+
+    - name: Cache Toolchain
       uses: actions/cache@v2
-      id: cache-msp430
+      id: cache-toolchain
       with:
         path: ~/cache/
-        key: ${{ runner.os }}-21-03-02-${{ env.MSP430_GCC_URL }}
+        key: ${{ runner.os }}-21-03-04-${{ env.TOOLCHAIN_URL }}
 
-    - name: Install MSP430-GCC
-      if: steps.cache-msp430.outputs.cache-hit != 'true'
+    - name: Install Toolchain
+      if: steps.cache-toolchain.outputs.cache-hit != 'true'
       run: |
-        mkdir -p ~/cache/msp430-gcc
-        wget --progress=dot:mega $MSP430_GCC_URL -O msp430-gcc.tar.bz2
-        tar -C ~/cache/msp430-gcc -xaf msp430-gcc.tar.bz2
+        mkdir -p ~/cache/toolchain
+        wget --progress=dot:mega $TOOLCHAIN_URL -O toolchain.tar.bz2
+        tar -C ~/cache/toolchain -xaf toolchain.tar.bz2
 
     - name: Set Toolchain Path
-      run: echo >> $GITHUB_PATH `echo ~/cache/msp430-gcc/msp430-gcc-*/bin`
+      run: echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin`
 
     - name: Build
-      run: python3 tools/build_family.py ${{ env.family }}
+      run: python3 tools/build_family.py ${{ matrix.family }}
 
     - uses: actions/upload-artifact@v2
       with:
-        name: ${{ env.family }}-tinyusb-examples
+        name: ${{ matrix.family }}-tinyusb-examples
         path: _bin/
 
     - name: Create Release Asset
       if: ${{ github.event_name == 'release' }}
       run: |
         cd _bin/
-        zip -r ../${{ env.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip *
+        zip -r ../${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip *
 
     - name: Upload Release Asset
       uses: actions/upload-release-asset@v1
@@ -239,8 +265,8 @@ jobs:
       if: ${{ github.event_name == 'release' }}
       with:
         upload_url: ${{ github.event.release.upload_url }}
-        asset_path: ${{ env.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip
-        asset_name: ${{ env.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip
+        asset_path: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip
+        asset_name: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip
         asset_content_type: application/zip
 
   # ---------------------------------------
@@ -275,20 +301,30 @@ jobs:
     - name: Setup Python
       uses: actions/setup-python@v2
 
-    - name: Setup Node.js
-      uses: actions/setup-node@v1
-
     - name: Checkout TinyUSB
       uses: actions/checkout@v2
       with:
         submodules: 'true'
 
-    - name: Install Toolchains
+    - name: Set Toolchain URL
+      run: echo >> $GITHUB_ENV TOOLCHAIN_URL=https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases/download/v10.2.1-1.1/xpack-arm-none-eabi-gcc-10.2.1-1.1-linux-x64.tar.gz
+
+    - name: Cache Toolchain
+      uses: actions/cache@v2
+      id: cache-toolchain
+      with:
+        path: ~/cache/
+        key: ${{ runner.os }}-21-03-04-${{ env.TOOLCHAIN_URL }}
+
+    - name: Install Toolchain
+      if: steps.cache-toolchain.outputs.cache-hit != 'true'
       run: |
-        # ARM GCC from xpack
-        npm install --global xpm
-        xpm install --global @xpack-dev-tools/arm-none-eabi-gcc@latest
-        echo `echo $HOME/.local/xPacks/@xpack-dev-tools/arm-none-eabi-gcc/*/.content/bin` >> $GITHUB_PATH
+        mkdir -p ~/cache/toolchain
+        wget --progress=dot:mega $TOOLCHAIN_URL -O toolchain.tar.gz
+        tar -C ~/cache/toolchain -xaf toolchain.tar.gz
+
+    - name: Set Toolchain Path
+      run: echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin`
 
     - name: Build
       run: python3 tools/build_board.py ${{ matrix.example }}