# GitHub Action to build FreeRTOS Firmware for PineTime Smart Watch # Based on https://github.com/lupyuen/pinetime-lab/blob/master/doc/buildAndProgram.md name: C/C++ CI on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: ubuntu-latest steps: - name: Install cmake uses: lukka/get-cmake@v3.18.0 - name: Check Cache for Embedded Arm Toolchain arm-none-eabi-gcc id: cache-toolchain uses: actions/cache@v2 env: cache-name: cache-toolchain with: path: ${{ runner.temp }}/arm-none-eabi key: ${{ runner.os }}-build-${{ env.cache-name }} restore-keys: ${{ runner.os }}-build-${{ env.cache-name }} - name: Install Embedded Arm Toolchain arm-none-eabi-gcc if: steps.cache-toolchain.outputs.cache-hit != 'true' # Install toolchain if not found in cache uses: fiam/arm-none-eabi-gcc@v1.0.2 with: # GNU Embedded Toolchain for Arm release name, in the V-YYYY-qZ format (e.g. "9-2019-q4") release: 8-2019-q3 # Directory to unpack GCC to. Defaults to a temporary directory. directory: ${{ runner.temp }}/arm-none-eabi - name: Check Cache for nRF5 SDK id: cache-nrf5sdk uses: actions/cache@v2 env: cache-name: cache-nrf5sdk with: path: ${{ runner.temp }}/nrf5_sdk key: ${{ runner.os }}-build-${{ env.cache-name }} restore-keys: ${{ runner.os }}-build-${{ env.cache-name }} - name: Install nRF5 SDK if: steps.cache-nrf5sdk.outputs.cache-hit != 'true' # Install SDK if not found in cache run: cd ${{ runner.temp }} && curl https://developer.nordicsemi.com/nRF5_SDK/nRF5_SDK_v15.x.x/nRF5_SDK_15.3.0_59ac345.zip -o nrf5_sdk.zip && unzip nrf5_sdk.zip && mv nRF5_SDK_15.3.0_59ac345 nrf5_sdk - name: Checkout source files uses: actions/checkout@v2 - name: Show Files run: set ; pwd ; ls -l ~ - name: CMake run: mkdir -p build && cd build && cmake -DARM_NONE_EABI_TOOLCHAIN_PATH=${{ runner.temp }}/arm-none-eabi -DNRF5_SDK_PATH=${{ runner.temp }}/nrf5_sdk -DUSE_OPENOCD=1 ../ - name: Make -j run: exit && cd build && make pinetime-app # Embedded Arm Toolchain and nRF5 SDK will only be cached if the build succeeds