name: Build QMK Firmware with Docker on: [push, pull_request] jobs: build: runs-on: ubuntu-latest strategy: matrix: keyboard: [draculad, iris, scottogame, sweep, swoop] include: - keyboard: draculad qmk_path: draculad - keyboard: iris qmk_path: keebio/iris/rev8 - keyboard: scottogame qmk_path: handwired/scottokeebs/scottogame - keyboard: sweep qmk_path: ferris/sweep - keyboard: swoop qmk_path: bluebell/swoop steps: - name: Checkout repository uses: actions/checkout@v4 with: submodules: recursive - name: Build Docker image run: docker build --load -t qmk-builder . - name: Build firmware run: | docker run --rm \ -v "${{ github.workspace }}:/workspace" \ -w /workspace \ -e USER=dgvigil \ qmk-builder \ bash -c " cd /qmk_firmware qmk compile -kb ${{ matrix.qmk_path }} -km dgvigil " - name: Upload firmware artifacts uses: actions/upload-artifact@v4 with: name: firmware-${{ matrix.keyboard }} path: qmk_firmware/*.hex retention-days: 30 - name: Upload UF2 files uses: actions/upload-artifact@v4 with: name: firmware-${{ matrix.keyboard }}-uf2 path: qmk_firmware/*.uf2 retention-days: 30 release: needs: build runs-on: ubuntu-latest if: github.event_name == 'push' && github.ref == 'refs/heads/main' steps: - name: Checkout repository uses: actions/checkout@v4 - name: Download all artifacts uses: actions/download-artifact@v4 with: path: artifacts - name: Create release uses: marvinpinto/action-automatic-releases@latest with: repo_token: "${{ secrets.GITHUB_TOKEN }}" automatic_release_tag: "${{ github.sha }}" title: "QMK Firmware Build - ${{ github.sha }}" prerelease: false files: | artifacts/**/*.hex artifacts/**/*.uf2