From 6e024c3499f5a1be829886fc5af4bad5e3391eaa Mon Sep 17 00:00:00 2001 From: Marius Alwan Meyer <22202402+Sporqist@users.noreply.github.com> Date: Mon, 17 Jul 2023 18:34:19 +0200 Subject: [PATCH] [CI] use ZMK's action --- .gitea/workflows/build.yml | 121 ++++++++++++++++++++++++++++--------- 1 file changed, 92 insertions(+), 29 deletions(-) diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 5c801d7..e1ff5bc 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -1,27 +1,91 @@ -on: [push, pull_request, workflow_dispatch] +# https://github.com/zmkfirmware/zmk/blob/main/.github/workflows/build-user-config.yml +name: Reusable user config build -name: Build - -env: - ACTIONS_STEP_DEBUG: true +on: + workflow_call: + inputs: + build_matrix_path: + description: "Path to the build matrix file" + default: "build.yaml" + required: false + type: string + config_path: + description: "Path to the config directory" + default: "config" + required: false + type: string + fallback_binary: + description: "Fallback binary format, if no *.uf2 file was built" + default: "bin" + required: false + type: string + archive_name: + description: "Archive output file name" + default: "firmware" + required: false + type: string jobs: + matrix: + runs-on: ubuntu-latest + name: Fetch Build Keyboards + outputs: + build_matrix: ${{ env.build_matrix }} + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Install yaml2json + run: python3 -m pip install remarshal + + - name: Fetch Build Matrix + run: | + echo "build_matrix=$(yaml2json '${{ inputs.build_matrix_path }}' | jq -c .)" >> $GITHUB_ENV + yaml2json "${{ inputs.build_matrix_path }}" | jq + build: runs-on: ubuntu-latest container: image: zmkfirmware/zmk-build-arm:stable + needs: matrix name: Build + strategy: + fail-fast: false + matrix: ${{ fromJson(needs.matrix.outputs.build_matrix) }} steps: - - name: Install Dependencies + - name: Prepare variables + shell: sh -x {0} + env: + shield: ${{ matrix.shield }} run: | - apt-get update; - apt-get install --yes --no-install-recommends nodejs ssh zip + echo "zephyr_version=${ZEPHYR_VERSION}" >> $GITHUB_ENV + echo "extra_cmake_args=${shield:+-DSHIELD=\"$shield\"}" >> $GITHUB_ENV + echo "display_name=${shield:+$shield - }${{ matrix.board }}" >> $GITHUB_ENV + echo "artifact_name=${shield:+$shield-}${{ matrix.board }}-zmk" >> $GITHUB_ENV - name: Checkout uses: actions/checkout@v3 + - name: Cache west modules + uses: actions/cache@v3.0.11 + continue-on-error: true + env: + cache_name: cache-zephyr-${{ env.zephyr_version }}-modules + with: + path: | + modules/ + tools/ + zephyr/ + bootloader/ + zmk/ + key: ${{ runner.os }}-build-${{ env.cache_name }}-${{ hashFiles('**/west.yml', '**/build.yaml') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache_name }}- + ${{ runner.os }}-build- + ${{ runner.os }}- + - name: West Init - run: west init -l config + run: west init -l "${{ inputs.config_path }}" - name: West Update run: west update @@ -29,28 +93,27 @@ jobs: - name: West Zephyr export run: west zephyr-export - - name: West Build (Corne Left) - run: west build -s zmk/app -b nice_nano_v2 -- -DSHIELD=corne_left -DZMK_CONFIG="${GITHUB_WORKSPACE}/config" + - name: West Build (${{ env.display_name }}) + shell: sh -x {0} + run: west build -s zmk/app -b "${{ matrix.board }}" -- -DZMK_CONFIG="${GITHUB_WORKSPACE}/${{ inputs.config_path }}" ${{ env.extra_cmake_args }} ${{ matrix.cmake-args }} - - name: Corne Left Kconfig file - run: cat build/zephyr/.config | grep -v "^#" | grep -v "^$" + - name: ${{ env.display_name }} Kconfig file + run: grep -v -e "^#" -e "^$" build/zephyr/.config | sort - - name: Rename zmk.uf2 - run: cp build/zephyr/zmk.uf2 corne_left_nice_nano_v2.uf2 + - name: Rename artifacts + shell: sh -x {0} + run: | + mkdir build/artifacts + if [ -f build/zephyr/zmk.uf2 ] + then + cp build/zephyr/zmk.uf2 "build/artifacts/${{ env.artifact_name }}.uf2" + elif [ -f build/zephyr/zmk.${{ inputs.fallback_binary }} ] + then + cp "build/zephyr/zmk.${{ inputs.fallback_binary }}" "build/artifacts/${{ env.artifact_name }}.${{ inputs.fallback_binary }}" + fi - - name: West Build (Corne Right) - run: west build --pristine -s zmk/app -b nice_nano_v2 -- -DSHIELD=corne_right -DZMK_CONFIG="${GITHUB_WORKSPACE}/config" - - - name: Corne Right Kconfig file - run: cat build/zephyr/.config | grep -v "^#" | grep -v "^$" - - - name: Rename zmk.uf2 - run: cp build/zephyr/zmk.uf2 corne_right_nice_nano_v2.uf2 - - - name: Upload Artifacts + - name: Archive (${{ env.display_name }}) uses: actions/upload-artifact@v3 with: - name: firmware.zip - if-no-files-found: ignore - path: | - *.uf2 + name: ${{ inputs.archive_name }} + path: build/artifacts \ No newline at end of file