summaryrefslogtreecommitdiffstats
path: root/.github/workflows
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/api.yml3
-rw-r--r--.github/workflows/auto_approve.yml2
-rw-r--r--.github/workflows/auto_tag.yml12
-rw-r--r--.github/workflows/ci_builds.yml49
-rw-r--r--.github/workflows/cli.yml7
-rw-r--r--.github/workflows/develop_update.yml3
-rw-r--r--.github/workflows/docs.yml3
-rw-r--r--.github/workflows/feature_branch_update.yml3
-rw-r--r--.github/workflows/format.yml14
-rw-r--r--.github/workflows/format_push.yml6
-rw-r--r--.github/workflows/labeler.yml4
-rw-r--r--.github/workflows/lint.yml26
-rw-r--r--.github/workflows/regen.yml36
-rw-r--r--.github/workflows/regen_push.yml46
-rw-r--r--.github/workflows/stale.yml11
-rw-r--r--.github/workflows/unit_test.yml3
16 files changed, 209 insertions, 19 deletions
diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml
index 0cff4f6e75..2abfe696fd 100644
--- a/.github/workflows/api.yml
+++ b/.github/workflows/api.yml
@@ -1,5 +1,8 @@
name: Update API Data
+permissions:
+ contents: read
+
on:
push:
branches:
diff --git a/.github/workflows/auto_approve.yml b/.github/workflows/auto_approve.yml
index dea3f017dd..1db1c49a9b 100644
--- a/.github/workflows/auto_approve.yml
+++ b/.github/workflows/auto_approve.yml
@@ -1,5 +1,7 @@
name: Automatic Approve
+permissions: {}
+
on:
schedule:
- cron: "*/5 * * * *"
diff --git a/.github/workflows/auto_tag.yml b/.github/workflows/auto_tag.yml
index 0799767e5f..07490a0464 100644
--- a/.github/workflows/auto_tag.yml
+++ b/.github/workflows/auto_tag.yml
@@ -1,16 +1,20 @@
name: Essential files modified
+permissions:
+ contents: write
+
on:
push:
branches:
- master
paths:
- - quantum/**/*
- - tmk_core/**/*
+ - builddefs/**/*
- drivers/**/*
+ - platforms/**/*
+ - quantum/**/*
- tests/**/*
+ - tmk_core/**/*
- util/**/*
- - platforms/**/*
- Makefile
- '*.mk'
@@ -27,7 +31,7 @@ jobs:
fetch-depth: 0
- name: Bump version and push tag
- uses: anothrNick/github-tag-action@1.53.0
+ uses: anothrNick/github-tag-action@1.61.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DEFAULT_BUMP: 'patch'
diff --git a/.github/workflows/ci_builds.yml b/.github/workflows/ci_builds.yml
new file mode 100644
index 0000000000..e2bbd93497
--- /dev/null
+++ b/.github/workflows/ci_builds.yml
@@ -0,0 +1,49 @@
+name: CI Builds
+
+permissions:
+ contents: read
+
+on:
+ push:
+ branches:
+ - master
+ - develop
+
+jobs:
+ ci_builds:
+ name: "CI Build"
+ runs-on: self-hosted
+ timeout-minutes: 1380
+
+ if: github.repository == 'qmk/qmk_firmware'
+
+ strategy:
+ matrix:
+ keymap: [default, via]
+ keyboard_folder: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z]
+
+ container: qmkfm/qmk_cli
+
+ steps:
+ - name: Disable safe.directory check
+ run : git config --global --add safe.directory '*'
+
+ - uses: actions/checkout@v3
+ with:
+ submodules: recursive
+
+ - name: Install dependencies
+ run: pip3 install -r requirements.txt
+
+ - name: Run `qmk mass-compile` (keyboards ${{ matrix.keyboard_folder }}*, keymap ${{ matrix.keymap }})
+ run: qmk mass-compile -j $(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null) -km ${{ matrix.keymap }} -f 'keyboard_folder=${{ matrix.keyboard_folder }}*'
+
+ - name: 'Upload binaries'
+ uses: actions/upload-artifact@v3
+ with:
+ name: binaries-${{ matrix.keyboard_folder }}-${{ matrix.keymap }}
+ if-no-files-found: ignore
+ path: |
+ *.bin
+ *.hex
+ *.uf2
diff --git a/.github/workflows/cli.yml b/.github/workflows/cli.yml
index 72f2ea293a..d98692e6d9 100644
--- a/.github/workflows/cli.yml
+++ b/.github/workflows/cli.yml
@@ -1,5 +1,8 @@
name: CLI CI
+permissions:
+ contents: read
+
on:
push:
branches:
@@ -18,9 +21,13 @@ jobs:
container: qmkfm/qmk_cli
steps:
+ - name: Disable safe.directory check
+ run : git config --global --add safe.directory '*'
+
- uses: actions/checkout@v3
with:
submodules: recursive
+
- name: Install dependencies
run: pip3 install -r requirements-dev.txt
- name: Run tests
diff --git a/.github/workflows/develop_update.yml b/.github/workflows/develop_update.yml
index 18ca84162b..9c041c42ec 100644
--- a/.github/workflows/develop_update.yml
+++ b/.github/workflows/develop_update.yml
@@ -1,5 +1,8 @@
name: Update develop after master merge
+permissions:
+ contents: write
+
on:
push:
branches:
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 1497739a0b..841573cf30 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -1,5 +1,8 @@
name: Generate Docs
+permissions:
+ contents: write
+
on:
push:
branches:
diff --git a/.github/workflows/feature_branch_update.yml b/.github/workflows/feature_branch_update.yml
index 90cd85e355..bfc4c7d65e 100644
--- a/.github/workflows/feature_branch_update.yml
+++ b/.github/workflows/feature_branch_update.yml
@@ -1,5 +1,8 @@
name: Update feature branches after develop merge
+permissions:
+ contents: write
+
on:
push:
branches:
diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml
index b6ce4063fe..78aaae8a0e 100644
--- a/.github/workflows/format.yml
+++ b/.github/workflows/format.yml
@@ -1,5 +1,8 @@
name: PR Lint Format
+permissions:
+ contents: read
+
on:
pull_request:
paths:
@@ -19,6 +22,9 @@ jobs:
container: qmkfm/qmk_cli
steps:
+ - name: Disable safe.directory check
+ run : git config --global --add safe.directory '*'
+
- uses: actions/checkout@v3
with:
fetch-depth: 0
@@ -27,16 +33,14 @@ jobs:
run: |
pip3 install -r requirements-dev.txt
- - uses: trilom/file-changes-action@v1.2.4
+ - name: Get changed files
id: file_changes
- with:
- output: ' '
- fileOutput: ' '
+ uses: tj-actions/changed-files@v35
- name: Run qmk formatters
shell: 'bash {0}'
run: |
- cat ~/files_added.txt ~/files_modified.txt > ~/files_changed.txt
+ echo '${{ steps.file_changes.outputs.added_files}}' '${{ steps.file_changes.outputs.modified_files}}' > ~/files_changed.txt
qmk format-c --core-only $(< ~/files_changed.txt) || true
qmk format-python $(< ~/files_changed.txt) || true
qmk format-text $(< ~/files_changed.txt) || true
diff --git a/.github/workflows/format_push.yml b/.github/workflows/format_push.yml
index 910bba9a4e..26e9f4edfb 100644
--- a/.github/workflows/format_push.yml
+++ b/.github/workflows/format_push.yml
@@ -1,5 +1,8 @@
name: Lint Format
+permissions:
+ contents: read
+
on:
push:
branches:
@@ -13,6 +16,9 @@ jobs:
container: qmkfm/qmk_cli
steps:
+ - name: Disable safe.directory check
+ run : git config --global --add safe.directory '*'
+
- uses: actions/checkout@v3
with:
fetch-depth: 0
diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
index 3b99a8f43e..95f58ff003 100644
--- a/.github/workflows/labeler.yml
+++ b/.github/workflows/labeler.yml
@@ -1,5 +1,9 @@
name: "Pull Request Labeler"
+permissions:
+ contents: read
+ pull-requests: write
+
on:
pull_request_target:
types: [opened, synchronize, reopened, ready_for_review, locked]
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 5b8a45f26b..6b4e266bde 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -1,5 +1,8 @@
name: PR Lint keyboards
+permissions:
+ contents: read
+
on:
pull_request:
paths:
@@ -12,6 +15,9 @@ jobs:
container: qmkfm/qmk_cli
steps:
+ - name: Disable safe.directory check
+ run : git config --global --add safe.directory '*'
+
- uses: actions/checkout@v3
with:
fetch-depth: 0
@@ -19,24 +25,24 @@ jobs:
- name: Install dependencies
run: pip3 install -r requirements-dev.txt
- - uses: trilom/file-changes-action@v1.2.4
+ - name: Get changed files
id: file_changes
- with:
- output: '\n'
+ uses: tj-actions/changed-files@v35
- name: Print info
run: |
git rev-parse --short HEAD
echo ${{ github.event.pull_request.base.sha }}
- echo '${{ steps.file_changes.outputs.files}}'
+ echo '${{ steps.file_changes.outputs.all_changed_files}}'
- name: Run qmk lint
shell: 'bash {0}'
run: |
- QMK_CHANGES=$(echo -e '${{ steps.file_changes.outputs.files}}')
+ QMK_CHANGES=$(echo -e '${{ steps.file_changes.outputs.all_changed_files}}' | sed 's/ /\n/g')
QMK_KEYBOARDS=$(qmk list-keyboards)
exit_code=0
+
for KB in $QMK_KEYBOARDS; do
KEYBOARD_CHANGES=$(echo "$QMK_CHANGES" | grep -E '^(keyboards/'${KB}'/)')
if [[ -z "$KEYBOARD_CHANGES" ]]; then
@@ -52,6 +58,16 @@ jobs:
exit_code=$(($exit_code + $?))
fi
done
+
+ qmk format-text ${{ steps.file_changes.outputs.all_changed_files}} || true
+ for file in ${{ steps.file_changes.outputs.all_changed_files}}; do
+ if ! git diff --quiet $file; then
+ echo "File '${file}' Requires Formatting"
+ echo "::error file=${file}::Requires Formatting"
+ exit_code=$(($exit_code + 1))
+ fi
+ done
+
if [[ $exit_code -gt 255 ]]; then
exit 255
fi
diff --git a/.github/workflows/regen.yml b/.github/workflows/regen.yml
new file mode 100644
index 0000000000..f301000d55
--- /dev/null
+++ b/.github/workflows/regen.yml
@@ -0,0 +1,36 @@
+name: PR Regenerate Files
+
+permissions:
+ contents: read
+
+on:
+ pull_request:
+ paths:
+ - 'data/constants/**'
+ - 'lib/python/**'
+
+jobs:
+ regen:
+ runs-on: ubuntu-latest
+
+ container: qmkfm/qmk_cli
+
+ steps:
+ - name: Disable safe.directory check
+ run : git config --global --add safe.directory '*'
+
+ - uses: actions/checkout@v3
+
+ - name: Run qmk generators
+ run: |
+ util/regen.sh
+ git diff
+
+ - name: Fail when regeneration required
+ run: |
+ git diff
+ for file in $(git diff --name-only); do
+ echo "File '${file}' Requires Regeneration"
+ echo "::error file=${file}::Requires Regeneration"
+ done
+ test -z "$(git diff --name-only)"
diff --git a/.github/workflows/regen_push.yml b/.github/workflows/regen_push.yml
new file mode 100644
index 0000000000..c56bc48a69
--- /dev/null
+++ b/.github/workflows/regen_push.yml
@@ -0,0 +1,46 @@
+name: Regenerate Files
+
+permissions:
+ contents: write
+
+on:
+ push:
+ branches:
+ - master
+ - develop
+
+jobs:
+ regen:
+ runs-on: ubuntu-latest
+
+ container: qmkfm/qmk_cli
+
+ steps:
+ - name: Disable safe.directory check
+ run : git config --global --add safe.directory '*'
+
+ - uses: actions/checkout@v3
+
+ - name: Run qmk generators
+ run: |
+ util/regen.sh
+ git diff
+
+ - uses: rlespinasse/github-slug-action@v3.x
+
+ - name: Become QMK Bot
+ run: |
+ git config user.name 'QMK Bot'
+ git config user.email 'hello@qmk.fm'
+
+ - name: Create Pull Request
+ uses: peter-evans/create-pull-request@v4
+ if: ${{ github.repository == 'qmk/qmk_firmware'}}
+ with:
+ token: ${{ secrets.QMK_BOT_TOKEN }}
+ delete-branch: true
+ branch: bugfix/regen_${{ env.GITHUB_REF_SLUG }}
+ author: QMK Bot <hello@qmk.fm>
+ committer: QMK Bot <hello@qmk.fm>
+ commit-message: Regenerate Files
+ title: '[CI] Regenerate Files'
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
index 297af8e19c..89c2bd5f67 100644
--- a/.github/workflows/stale.yml
+++ b/.github/workflows/stale.yml
@@ -1,18 +1,19 @@
name: 'Close stale issues and PRs'
-on:
- schedule:
- - cron: '30 1 * * *'
- workflow_dispatch:
permissions:
issues: write
pull-requests: write
+on:
+ schedule:
+ - cron: '30 1 * * *'
+ workflow_dispatch:
+
jobs:
stale:
runs-on: ubuntu-latest
steps:
- - uses: actions/stale@v6
+ - uses: actions/stale@v7
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/unit_test.yml b/.github/workflows/unit_test.yml
index c8373441ff..75ed84177b 100644
--- a/.github/workflows/unit_test.yml
+++ b/.github/workflows/unit_test.yml
@@ -1,5 +1,8 @@
name: Unit Tests
+permissions:
+ contents: read
+
on:
push:
branches: