diff --git a/.github/actions/build_ci/entrypoint.sh b/.github/actions/build_ci/entrypoint.sh index 82bf3d76..4375083f 100755 --- a/.github/actions/build_ci/entrypoint.sh +++ b/.github/actions/build_ci/entrypoint.sh @@ -2,8 +2,13 @@ readonly TARGET="$1" +# Known good version for PR testing +ZEPHYR_SDK_VERSION=v0.16.8 +ZEPHYR_VERSION=v3.7.0 + ZEPHYR_TOOLCHAIN_VARIANT=zephyr -ZEPHYR_SDK_API_FOLDER=https://api.github.com/repos/zephyrproject-rtos/sdk-ng/releases/latest +ZEPHYR_SDK_API_FOLDER=https://api.github.com/repos/zephyrproject-rtos/sdk-ng/releases +ZEPHYR_SDK_VER_SELECT="tags/$ZEPHYR_SDK_VERSION" ZEPHYR_SDK_SETUP_TAR=zephyr-sdk-.*linux-x86_64.tar.xz FREERTOS_ZIP_URL=https://sourceforge.net/projects/freertos/files/FreeRTOS/V10.0.1/FreeRTOSv10.0.1.zip @@ -61,7 +66,7 @@ build_freertos(){ } build_zephyr(){ - ZEPHYR_SDK_DOWNLOAD_URL=`curl -s ${ZEPHYR_SDK_API_FOLDER} | \ + ZEPHYR_SDK_DOWNLOAD_URL=`curl -s ${ZEPHYR_SDK_API_FOLDER}/${ZEPHYR_SDK_VER_SELECT} | \ grep -e "browser_download_url.*${ZEPHYR_SDK_SETUP_TAR}"| cut -d : -f 2,3 | tr -d \"` ZEPHYR_SDK_TAR=`basename $ZEPHYR_SDK_DOWNLOAD_URL` ZEPHYR_SDK_SETUP_DIR=`echo $ZEPHYR_SDK_TAR | cut -d_ -f1` @@ -82,7 +87,7 @@ build_zephyr(){ pv $ZEPHYR_SDK_TAR -i 3 -ptebr -f | tar xJ || exit 1 rm -rf $ZEPHYR_SDK_TAR || exit 1 yes | ./$ZEPHYR_SDK_SETUP_DIR/setup.sh || exit 1 - west init ./zephyrproject || exit 1 + west init --mr $ZEPHYR_VERSION ./zephyrproject || exit 1 cd ./zephyrproject || exit 1 west update --narrow || exit 1 west zephyr-export || exit 1 @@ -144,6 +149,11 @@ main(){ if [[ "$TARGET" == "zephyr" ]]; then build_zephyr fi + if [[ "$TARGET" == "zephyr-latest" ]]; then + ZEPHYR_SDK_VER_SELECT=latest + ZEPHYR_VERSION=main + build_zephyr + fi } main diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 2efd4809..e052e0bf 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -22,7 +22,7 @@ jobs: name: check builds on different platforms runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: build for Linux id: build_linux uses: ./.github/actions/build_ci @@ -38,7 +38,16 @@ jobs: uses: ./.github/actions/build_ci with: target: freertos - - name: build for Zephyr + + # Break the zephyr builds into their own job as the common runner was + # running out of space when runs were together + # Also, as the longest running jobs, this allows them to run in || + zephyr_build_known_good_version: + name: Zephyr build with a version that is known to work + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: build for Zephyr (Known Good) id: build_Zephyr uses: ./.github/actions/build_ci with: @@ -48,7 +57,7 @@ jobs: name: nonreg tests runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: configure run: | sudo apt-get update && sudo apt-get install libsysfs-dev diff --git a/.github/workflows/heathcheck.yml b/.github/workflows/heathcheck.yml new file mode 100644 index 00000000..cec95c47 --- /dev/null +++ b/.github/workflows/heathcheck.yml @@ -0,0 +1,35 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) 2024 Linaro Limited. + +# The focus of this flow is to check for external changes that will effect +# the project. Even if no code changes are happening, changes in external +# distros or projects can invalidate our work and this flow lets us know + +name: libmetal Heath Check + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + paths-ignore: + - docs/** + + # Allows you to run this workflow manually from the Actions tab or gh API + workflow_dispatch: + + # run weekly on Sunday at 5:10 AM UTC (9:10 PM US western) + schedule: + - cron: '10 5 * * 0' + +jobs: + zephyr_build_main: + name: 'Zephyr build from latest on main' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Zephyr Latest + id: build_Zephyr_latest + uses: ./.github/actions/build_ci + with: + target: zephyr-latest