AutoRelease + Header Checker Upgrades (#236)
* decouple kernel check configs from fr/fr + checker sources from PR ref
* Combo of various small edits
* enable compatibility with git action + create autorelease action
diff --git a/.github/scripts/kernel_checker.py b/.github/scripts/kernel_checker.py
new file mode 100755
index 0000000..3d96d05
--- /dev/null
+++ b/.github/scripts/kernel_checker.py
@@ -0,0 +1,79 @@
+#!/usr/bin/env python3
+
+import os
+from common.header_checker import HeaderChecker
+
+#--------------------------------------------------------------------------------------------------
+# CONFIG
+#--------------------------------------------------------------------------------------------------
+KERNEL_IGNORED_EXTENSIONS = [
+ '.yml',
+ '.css',
+ '.idx',
+ '.md',
+ '.url',
+ '.sty',
+ '.0-rc2',
+ '.s82',
+ '.js',
+ '.out',
+ '.pack',
+ '.2',
+ '.1-kernel-only',
+ '.0-kernel-only',
+ '.0-rc1',
+ '.readme',
+ '.tex',
+ '.png',
+ '.bat',
+ '.sh'
+]
+
+KERNEL_IGNORED_PATTERNS = [
+ r'.*\.git.*'
+]
+
+KERNEL_HEADER = [
+ '/*\n',
+ ' * FreeRTOS Kernel V10.4.2\n',
+ ' * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n',
+ ' *\n',
+ ' * Permission is hereby granted, free of charge, to any person obtaining a copy of\n',
+ ' * this software and associated documentation files (the "Software"), to deal in\n',
+ ' * the Software without restriction, including without limitation the rights to\n',
+ ' * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n',
+ ' * the Software, and to permit persons to whom the Software is furnished to do so,\n',
+ ' * subject to the following conditions:\n',
+ ' *\n',
+ ' * The above copyright notice and this permission notice shall be included in all\n',
+ ' * copies or substantial portions of the Software.\n',
+ ' *\n',
+ ' * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n',
+ ' * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n',
+ ' * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n',
+ ' * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n',
+ ' * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n',
+ ' * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n',
+ ' *\n',
+ ' * https://www.FreeRTOS.org\n',
+ ' * https://github.com/FreeRTOS\n',
+ ' *\n',
+ ' */\n',
+]
+
+
+def main():
+ parser = HeaderChecker.configArgParser()
+ args = parser.parse_args()
+
+ # Configure the checks then run
+ checker = HeaderChecker(KERNEL_HEADER)
+ checker.ignoreExtension(*KERNEL_IGNORED_EXTENSIONS)
+ checker.ignorePattern(*KERNEL_IGNORED_PATTERNS)
+ checker.ignoreFile(os.path.split(__file__)[-1])
+
+ return checker.processArgs(args)
+
+if __name__ == '__main__':
+ exit(main())
+
diff --git a/.github/workflows/auto-release.yml b/.github/workflows/auto-release.yml
new file mode 100644
index 0000000..18712c4
--- /dev/null
+++ b/.github/workflows/auto-release.yml
@@ -0,0 +1,54 @@
+name: Kernel-Auto-Release
+
+on:
+ workflow_dispatch:
+ inputs:
+ commit_id:
+ description: 'Commit ID'
+ required: true
+ default: 'HEAD'
+ version_number:
+ description: 'Version Number (Ex. 10.4.0)'
+ required: true
+ default: '10.4.0'
+
+jobs:
+ release-packager:
+ name: Release Packager
+ runs-on: ubuntu-latest
+ steps:
+ # Install python 3
+ - name: Tool Setup
+ uses: actions/setup-python@v2
+ with:
+ python-version: 3.8.5
+ architecture: x64
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ # Currently FreeRTOS/.github/scripts houses the release script. Download it for upcoming usage
+ - name: Checkout FreeRTOS Release Tools
+ uses: actions/checkout@v2
+ with:
+ repository: FreeRTOS/FreeRTOS
+ path: tools
+
+ # Simpler git auth if we use checkout action and forward the repo to release script
+ - name: Checkout FreeRTOS Kernel
+ uses: actions/checkout@v2
+ with:
+ path: local_kernel
+ fetch-depth: 0
+
+ - name: Release
+ run: |
+ # Configure repo for push
+ git config --global user.name ${{ github.actor }}
+ git config --global user.email ${{ github.actor }}@users.noreply.github.com
+
+ # Install deps and run
+ pip install -r ./tools/.github/scripts/release-requirements.txt
+ ./tools/.github/scripts/release.py FreeRTOS --kernel-repo-path=local_kernel --kernel-commit=${{ github.event.inputs.commit_id }} --new-kernel-version=${{ github.event.inputs.version_number }}
+ exit $?
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/header-checks.yml b/.github/workflows/kernel-checks.yml
similarity index 72%
rename from .github/workflows/header-checks.yml
rename to .github/workflows/kernel-checks.yml
index 4d9546c..8c64487 100644
--- a/.github/workflows/header-checks.yml
+++ b/.github/workflows/kernel-checks.yml
@@ -1,10 +1,10 @@
-name: FreeRTOS-Header-Checker
+name: Kernel-Checker
on: [pull_request]
jobs:
- header-checker:
- name: File Header Checks
+ kernel-checker:
+ name: FreeRTOS Kernel Header Checks
runs-on: ubuntu-latest
steps:
# Install python 3
@@ -16,7 +16,7 @@
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- # Get latest checks from master
+ # There is shared code, hosted by FreeRTOS/FreeRTOS, with deps needed by header checker
- name: Checkout FreeRTOS Tools
uses: actions/checkout@v2
with:
@@ -36,11 +36,12 @@
uses: lots0logs/gh-action-get-changed-files@2.1.4
with:
token: ${{ secrets.GITHUB_TOKEN }}
-
+
# Run checks
- name: Check File Headers
run: |
+ mv tools/.github/scripts/common inspect/.github/scripts
cd inspect
- ../tools/.github/scripts/check-header.py --kernel --json ${HOME}/files.json
+ .github/scripts/kernel_checker.py --json ${HOME}/files_modified.json ${HOME}/files_added.json ${HOME}/files_renamed.json
exit $?