diff --git a/.github/workflows/qmk_userspace_build.yml b/.github/workflows/qmk_userspace_build.yml new file mode 100644 index 0000000..3c73b8e --- /dev/null +++ b/.github/workflows/qmk_userspace_build.yml @@ -0,0 +1,79 @@ +name: Build Binaries + +on: + workflow_call: + inputs: + qmk_repo: + description: "qmk_firmware repo to build against" + default: "qmk/qmk_firmware" + required: false + type: string + qmk_ref: + description: "qmk_firmware branch to build against" + default: "master" + required: false + type: string + +permissions: + contents: write + +jobs: + build: + name: Build Userspace Firmware + runs-on: ubuntu-latest + container: qmkfm/base_container + + steps: + - name: Checkout Userspace + uses: actions/checkout@v3 + with: + token: ${{ github.token }} + submodules: recursive + + - name: Check if qmk_firmware exists + id: check_files + uses: andstor/file-existence-action@v2 + with: + files: qmk_firmware + + - name: Checkout QMK Firmware + uses: actions/checkout@v3 + if: steps.check_files.outputs.files_exists == 'false' + with: + token: ${{ github.token }} + path: qmk_firmware + repository: ${{ inputs.qmk_repo || 'qmk/qmk_firmware' }} + ref: ${{ inputs.qmk_ref || 'master' }} + submodules: recursive + + - name: Install QMK CLI + run: | + python3 -m pip install --upgrade qmk + python3 -m pip install -r qmk_firmware/requirements.txt + + - name: Configure QMK CLI + run: | + qmk config userspace_compile.parallel=$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null) + qmk config user.qmk_home=$GITHUB_WORKSPACE/qmk_firmware + qmk config user.overlay_dir=$GITHUB_WORKSPACE + + - name: Build + run: | + qmk userspace-compile -e DUMP_CI_METADATA=yes || touch .failed + # Generate the step summary markdown + ./qmk_firmware/util/ci/generate_failure_markdown.sh > $GITHUB_STEP_SUMMARY || true + # Truncate to a maximum of 1MB to deal with GitHub workflow limit + truncate --size='<960K' $GITHUB_STEP_SUMMARY || true + # Exit with failure if the compilation stage failed + [ ! -f .failed ] || exit 1 + + - name: Upload binaries + uses: actions/upload-artifact@v3 + if: always() && !cancelled() + continue-on-error: true + with: + name: Firmware + path: | + *.bin + *.hex + *.uf2 diff --git a/.github/workflows/qmk_userspace_publish.yml b/.github/workflows/qmk_userspace_publish.yml new file mode 100644 index 0000000..5188588 --- /dev/null +++ b/.github/workflows/qmk_userspace_publish.yml @@ -0,0 +1,33 @@ +name: Build Binaries + +on: + workflow_call: + +permissions: + contents: write + +jobs: + publish: + name: Publish + if: always() && !cancelled() + runs-on: ubuntu-latest + + steps: + - name: Download binaries + if: always() && !cancelled() + uses: actions/download-artifact@v3 + + - name: Generate Release + uses: softprops/action-gh-release@v1 + if: always() && !cancelled() + with: + token: ${{ github.token }} + name: Latest QMK Firmware + tag_name: latest + fail_on_unmatched_files: false + draft: false + prerelease: false + files: | + **/*.hex + **/*.bin + **/*.uf2