summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLee Lup Yuen <luppy@appkaki.com>2020-07-26 11:15:33 (GMT)
committerGitHub <noreply@github.com>2020-07-26 11:15:33 (GMT)
commit3d2ddcb311a43bc0605bba283dbe64ffc63bbe60 (patch)
tree56254cbc1e145bfc4078307afa622b5f4541af58
parentdc64676c289f6a4d19078b88e0a0e51d7ed25ded (diff)
Copied from c-cpp.yml
-rw-r--r--.github/workflows/main.yml87
1 files changed, 87 insertions, 0 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100644
index 0000000..deb3a8a
--- /dev/null
+++ b/.github/workflows/main.yml
@@ -0,0 +1,87 @@
+# GitHub Actions Workflow to build FreeRTOS Firmware for PineTime Smart Watch
+# Based on https://github.com/JF002/Pinetime/blob/master/doc/buildAndProgram.md
+
+# Name of this Workflow
+name: Build PineTime Firmware
+
+# When to run this Workflow...
+on:
+
+ # Run this Workflow when files are updated (Pushed) in the "master" Branch
+ push:
+ branches: [ master ]
+
+ # Also run this Workflow when a Pull Request is created or updated in the "master" Branch
+ pull_request:
+ branches: [ master ]
+
+# Steps to run for the Workflow
+jobs:
+ build:
+
+ # Run these steps on Ubuntu
+ 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
+ # For debugging builds, remove option "-j" for clearer output. Add "--trace" to see details.
+ run: cd build && make -j pinetime-app
+
+ - name: Find output
+ run: find . -name pinetime-app.out
+
+ - name: Upload built firmware
+ uses: actions/upload-artifact@v2
+ with:
+ # Artifact name (optional)
+ name: pinetime-app.out
+ # A file, directory or wildcard pattern that describes what to upload
+ path: build/src/pinetime-app.out
+
+# Embedded Arm Toolchain and nRF5 SDK will only be cached if the build succeeds.
+# So make sure that the first build always succeeds, e.g. comment out the "Make" step.