diff --git a/.gitea/workflows/build-user-config.yml b/.gitea/workflows/build-user-config.yml new file mode 100644 index 0000000..b183c41 --- /dev/null +++ b/.gitea/workflows/build-user-config.yml @@ -0,0 +1,120 @@ +# https://github.com/zmkfirmware/zmk/blob/main/.github/workflows/build-user-config.yml +name: Reusable user config build + + +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: Prepare variables + shell: sh -x {0} + env: + shield: ${{ matrix.shield }} + run: | + 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 "${{ inputs.config_path }}" + + - name: West Update + run: west update + + - name: West Zephyr export + run: west zephyr-export + + - 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: ${{ env.display_name }} Kconfig file + run: grep -v -e "^#" -e "^$" build/zephyr/.config | sort + + - 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: Archive (${{ env.display_name }}) + uses: actions/upload-artifact@v3 + with: + name: ${{ inputs.archive_name }} + path: build/artifacts \ No newline at end of file diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index e1ff5bc..c4effd4 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -1,119 +1,7 @@ -# https://github.com/zmkfirmware/zmk/blob/main/.github/workflows/build-user-config.yml -name: Reusable user config build -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 +name: Build +on: [push, pull_request, workflow_dispatch] 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: Prepare variables - shell: sh -x {0} - env: - shield: ${{ matrix.shield }} - run: | - 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 "${{ inputs.config_path }}" - - - name: West Update - run: west update - - - name: West Zephyr export - run: west zephyr-export - - - 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: ${{ env.display_name }} Kconfig file - run: grep -v -e "^#" -e "^$" build/zephyr/.config | sort - - - 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: Archive (${{ env.display_name }}) - uses: actions/upload-artifact@v3 - with: - name: ${{ inputs.archive_name }} - path: build/artifacts \ No newline at end of file + uses: sporq/zmk-config-corne/.gitea/workflows/build-user-config.yml@main \ No newline at end of file