CI with Github Action : use the infinitime-build docker container inside the Github Action job.
This commit is contained in:
parent
1c4a56b05b
commit
0f0d314c81
153
.github/workflows/main.yml
vendored
153
.github/workflows/main.yml
vendored
@ -20,151 +20,24 @@ on:
|
|||||||
# Steps to run for the Workflow
|
# Steps to run for the Workflow
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
|
||||||
# Run these steps on Ubuntu
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: jf002/docker-action-build
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
#########################################################################################
|
|
||||||
# Download and Cache Dependencies
|
|
||||||
|
|
||||||
- name: Install cmake
|
|
||||||
uses: lukka/get-cmake@v3.18.3
|
|
||||||
|
|
||||||
- name: Check cache for Embedded Arm Toolchain arm-none-eabi-gcc
|
|
||||||
id: cache-toolchain
|
|
||||||
uses: actions/cache@v2
|
|
||||||
env:
|
|
||||||
cache-name: cache-toolchain-9-2020-q2
|
|
||||||
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.4
|
|
||||||
with:
|
|
||||||
# GNU Embedded Toolchain for Arm release name, in the V-YYYY-qZ format (e.g. "9-2019-q4")
|
|
||||||
release: 9-2020-q2
|
|
||||||
# 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: Check cache for MCUBoot
|
|
||||||
id: cache-mcuboot
|
|
||||||
uses: actions/cache@v2
|
|
||||||
env:
|
|
||||||
cache-name: cache-mcuboot
|
|
||||||
with:
|
|
||||||
path: ${{ runner.temp }}/mcuboot
|
|
||||||
key: ${{ runner.os }}-build-${{ env.cache-name }}
|
|
||||||
restore-keys: ${{ runner.os }}-build-${{ env.cache-name }}
|
|
||||||
|
|
||||||
- name: Install MCUBoot
|
|
||||||
if: steps.cache-mcuboot.outputs.cache-hit != 'true' # Install MCUBoot if not found in cache
|
|
||||||
run: |
|
|
||||||
cd ${{ runner.temp }}
|
|
||||||
git clone --branch v1.7.2 https://github.com/mcu-tools/mcuboot
|
|
||||||
|
|
||||||
- name: Install imgtool dependencies
|
|
||||||
run: |
|
|
||||||
pip3 install --user -r ${{ runner.temp }}/mcuboot/scripts/requirements.txt
|
|
||||||
|
|
||||||
- name: Install adafruit-nrfutil
|
|
||||||
run: |
|
|
||||||
pip3 install --user wheel
|
|
||||||
pip3 install --user setuptools
|
|
||||||
pip3 install --user adafruit-nrfutil
|
|
||||||
|
|
||||||
#########################################################################################
|
|
||||||
# Checkout
|
|
||||||
|
|
||||||
- name: Checkout source files
|
- name: Checkout source files
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
- name: Build
|
||||||
- name: Show files
|
shell: bash
|
||||||
run: set ; pwd ; ls -l
|
env:
|
||||||
|
SOURCES_DIR: .
|
||||||
#########################################################################################
|
run: |
|
||||||
# CMake
|
/opt/build.sh all
|
||||||
|
- name: Upload artifacts
|
||||||
- name: CMake
|
|
||||||
run: |
|
|
||||||
mkdir -p build
|
|
||||||
cd build
|
|
||||||
cmake -G Ninja -DARM_NONE_EABI_TOOLCHAIN_PATH=${{ runner.temp }}/arm-none-eabi -DNRF5_SDK_PATH=${{ runner.temp }}/nrf5_sdk -DUSE_OPENOCD=1 -DBUILD_DFU=1 ../
|
|
||||||
|
|
||||||
#########################################################################################
|
|
||||||
# Make and Upload DFU Package
|
|
||||||
# pinetime-mcuboot-app.img must be flashed at address 0x8000 in the internal flash memory with OpenOCD:
|
|
||||||
# program image.bin 0x8000
|
|
||||||
|
|
||||||
# For Debugging Builds: Remove "make" option "-j" for clearer output. Add "--trace" to see details.
|
|
||||||
# For Faster Builds: Add "make" option "-j"
|
|
||||||
|
|
||||||
- name: Make pinetime-mcuboot-app
|
|
||||||
run: |
|
|
||||||
cmake --build build --target pinetime-mcuboot-app
|
|
||||||
|
|
||||||
- name: Unzip DFU package
|
|
||||||
run: |
|
|
||||||
# Unzip the package because Upload Artifact will zip up the files
|
|
||||||
unzip build/src/pinetime-mcuboot-app-dfu*.zip -d build/src/pinetime-mcuboot-app-dfu
|
|
||||||
|
|
||||||
- name: Upload DFU package
|
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: pinetime-mcuboot-app-dfu
|
name: InfiniTime artifacts
|
||||||
path: build/src/pinetime-mcuboot-app-dfu/*
|
path: |
|
||||||
|
build/output/pinetime-mcuboot-app-dfu-*-.zip
|
||||||
#########################################################################################
|
build/output/pinetime-mcuboot-app-image-*-.zip
|
||||||
# Make and Upload Standalone Firmware
|
|
||||||
|
|
||||||
- name: Make pinetime-app
|
|
||||||
run: |
|
|
||||||
cmake --build build --target pinetime-app
|
|
||||||
|
|
||||||
- name: Upload standalone firmware
|
|
||||||
uses: actions/upload-artifact@v2
|
|
||||||
with:
|
|
||||||
name: pinetime-app.out
|
|
||||||
path: build/src/pinetime-app*.out
|
|
||||||
|
|
||||||
#########################################################################################
|
|
||||||
# Make but don't Upload the Recovery Firmware to be sure it builds correctly
|
|
||||||
|
|
||||||
- name: Make pinetime-recovery
|
|
||||||
run: |
|
|
||||||
cmake --build build --target pinetime-recovery
|
|
||||||
|
|
||||||
#########################################################################################
|
|
||||||
# Finish
|
|
||||||
|
|
||||||
- name: Find output
|
|
||||||
run: |
|
|
||||||
find . -name "pinetime-app.*" -ls
|
|
||||||
find . -name "pinetime-mcuboot-app.*" -ls
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
FROM ubuntu:18.04
|
FROM ubuntu:20.04
|
||||||
|
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
RUN apt-get update -qq \
|
RUN apt-get update -qq \
|
||||||
@ -26,6 +26,7 @@ RUN apt-get update -qq \
|
|||||||
|
|
||||||
RUN pip3 install adafruit-nrfutil
|
RUN pip3 install adafruit-nrfutil
|
||||||
RUN pip3 install -Iv cryptography==3.3
|
RUN pip3 install -Iv cryptography==3.3
|
||||||
|
RUN pip3 install cbor
|
||||||
|
|
||||||
# build.sh knows how to compile
|
# build.sh knows how to compile
|
||||||
COPY build.sh /opt/
|
COPY build.sh /opt/
|
||||||
@ -38,10 +39,5 @@ RUN bash -c "source /opt/build.sh; GetNrfSdk;"
|
|||||||
# McuBoot
|
# McuBoot
|
||||||
RUN bash -c "source /opt/build.sh; GetMcuBoot;"
|
RUN bash -c "source /opt/build.sh; GetMcuBoot;"
|
||||||
|
|
||||||
ARG PUID=1000
|
|
||||||
ARG PGID=1000
|
|
||||||
RUN groupadd --system --gid $PGID infinitime && useradd --system --uid $PUID --gid $PGID infinitime
|
|
||||||
|
|
||||||
USER infinitime:infinitime
|
|
||||||
ENV SOURCES_DIR /sources
|
ENV SOURCES_DIR /sources
|
||||||
CMD ["/opt/build.sh"]
|
CMD ["/opt/build.sh"]
|
||||||
|
|||||||
@ -59,13 +59,13 @@ CmakeGenerate() {
|
|||||||
cd "$BUILD_DIR"
|
cd "$BUILD_DIR"
|
||||||
|
|
||||||
cmake -G "Unix Makefiles" \
|
cmake -G "Unix Makefiles" \
|
||||||
|
-S "$SOURCES_DIR" \
|
||||||
|
-B "$BUILD_DIR" \
|
||||||
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
|
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
|
||||||
-DUSE_OPENOCD=1 \
|
-DUSE_OPENOCD=1 \
|
||||||
-DARM_NONE_EABI_TOOLCHAIN_PATH="$TOOLS_DIR/$GCC_ARM_VER" \
|
-DARM_NONE_EABI_TOOLCHAIN_PATH="$TOOLS_DIR/$GCC_ARM_VER" \
|
||||||
-DNRF5_SDK_PATH="$TOOLS_DIR/$NRF_SDK_VER" \
|
-DNRF5_SDK_PATH="$TOOLS_DIR/$NRF_SDK_VER" \
|
||||||
-DBUILD_DFU=1 \
|
-DBUILD_DFU=1
|
||||||
"$SOURCES_DIR"
|
|
||||||
cmake -L -N .
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CmakeBuild() {
|
CmakeBuild() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user