mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-12-08 12:45:22 -05:00
Use CI-CD-Github-Actions for spelling and formatting, add in the bot formatting action, update the CI-CD workflow files. Fix incorrect spelling and formatting on files. (#1083)
* Use new version of CI-CD Actions, checkout@v3 instead of checkout@v2 on all jobs * Use cSpell spell check, and use ubuntu-20.04 for formatting check * Add in bot formatting action * Update freertos_demo.yml and freertos_plus_demo.yml files to increase github log readability * Add in a Qemu demo onto the workflows.
This commit is contained in:
parent
537007d96c
commit
3a2f6646f0
1036 changed files with 134568 additions and 127281 deletions
198
.github/workflows/ci.yml
vendored
198
.github/workflows/ci.yml
vendored
|
|
@ -1,93 +1,80 @@
|
|||
name: CI Checks
|
||||
|
||||
env:
|
||||
bashPass: \033[32;1mPASSED -
|
||||
bashWarn: \033[33;1mWARNING -
|
||||
bashFail: \033[31;1mFAILED -
|
||||
bashEnd: \033[0m
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
pull_request:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
git-secrets:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: recursive
|
||||
submodules: recursive
|
||||
- name: Checkout awslabs/git-secrets
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: awslabs/git-secrets
|
||||
ref: master
|
||||
path: git-secrets
|
||||
repository: awslabs/git-secrets
|
||||
ref: master
|
||||
path: git-secrets
|
||||
- name: Install git-secrets
|
||||
run: cd git-secrets && sudo make install && cd ..
|
||||
- name: Run git-secrets
|
||||
run: |
|
||||
git-secrets --register-aws
|
||||
git-secrets --scan
|
||||
git-secrets --register-aws
|
||||
git-secrets --scan
|
||||
|
||||
formatting:
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Install Uncrustify
|
||||
run: sudo apt-get install uncrustify=0.69.0+dfsg1-1build1
|
||||
- name: Run Uncrustify
|
||||
run: |
|
||||
# Uncrustify on C files while ignoring symlinks.
|
||||
# Make a collapsible section in the log to run uncrustify
|
||||
echo "::group::Uncrustify Check"
|
||||
# GitHub automtically use "set -e" which causes scripts to fail on the first exit code
|
||||
# This would mean the first time a file fails the check that we exit without formatting all files.
|
||||
set +e
|
||||
uncrustify --version
|
||||
find FreeRTOS/Demo/Common FreeRTOS/Test \( -name ethernet -o -name drivers -o -path 'FreeRTOS/Test/CMock/CMock' \) -prune -false -o -name "*.[hc]" | xargs uncrustify --no-backup --replace --if-changed -c tools/uncrustify.cfg -l C
|
||||
echo "::endgroup::"
|
||||
# Run a git diff to print the differences if any exist, return an error code if there are any
|
||||
git diff --exit-code
|
||||
if [ "$?" = "0" ]; then
|
||||
echo -e "\033[32;3mUncrustify check passed\033[0m"
|
||||
exit 0
|
||||
else
|
||||
echo -e "\033[32;31mFormatting check (using Uncrustify) failed...\033[0m"
|
||||
# If there is an error, set this flag high again so the exit 1 fails the run
|
||||
set -e
|
||||
exit 1
|
||||
fi
|
||||
- name: Check For Trailing Whitespace
|
||||
run: |
|
||||
# Trailing Whitespace Check
|
||||
set +e
|
||||
ERROR=0
|
||||
find . \( -name '.git' -o -path "./FreeRTOS/Test/CBMC/patches" -o -path "./FreeRTOS-Plus" -o -path "./FreeRTOS/Source" -o -path "./FreeRTOS/Test/CMock/CMock" -o -path "./FreeRTOS/Demo" \) -prune -false -o -type f -a -name "*" -exec grep -In -e "[[:blank:]]$" {} +
|
||||
if [ "$?" = "0" ]; then
|
||||
ERROR=1
|
||||
fi
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
find FreeRTOS/Demo/Common \( -name "ethernet" \) -prune -o -false -o -type f -a -name "*" -exec grep --color=yes -In -e "[[:blank:]]$" {} +
|
||||
if [ "$?" = "0" ]; then
|
||||
echo -e "\033[32;31mFiles have trailing whitespace.\033[0m"
|
||||
exit 1
|
||||
else
|
||||
if [ "$ERROR" -eq "1" ]; then
|
||||
echo -e "\033[32;31mFiles have trailing whitespace.\033[0m"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "\033[32;3mTrailing whitespace check passed\033[0m"
|
||||
exit 0
|
||||
fi
|
||||
- name: Check Formatting of Common Demo Files
|
||||
uses: FreeRTOS/CI-CD-Github-Actions/formatting@main
|
||||
with:
|
||||
path: FreeRTOS/Demo/Common
|
||||
exclude-dirs: ethernet, drivers
|
||||
|
||||
- name: Check Formatting
|
||||
uses: FreeRTOS/CI-CD-Github-Actions/formatting@main
|
||||
with:
|
||||
exclude-dirs: ethernet, drivers, FreeRTOS/Demo
|
||||
|
||||
spell-check:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Parent Repo
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Check Spelling of Common Demo Files
|
||||
uses: FreeRTOS/CI-CD-GitHub-Actions/spellings@main
|
||||
with:
|
||||
path: FreeRTOS/Demo/Common
|
||||
exclude-dirs: ethernet, drivers
|
||||
|
||||
- name: Check Spelling
|
||||
uses: FreeRTOS/CI-CD-GitHub-Actions/spellings@main
|
||||
with:
|
||||
exclude-dirs: ethernet, drivers, FreeRTOS/Demo
|
||||
|
||||
doxygen:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Clone repository
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: recursive
|
||||
path: freertos
|
||||
- name: Install Python3
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: '3.8'
|
||||
uses: actions/setup-python@v3
|
||||
|
||||
- name: Download tag dependency of coreMQTT-Agent
|
||||
run: |
|
||||
# We don't need to generate the coreMQTT docs, we only need the tag file.
|
||||
|
|
@ -95,8 +82,9 @@ jobs:
|
|||
mkdir -p freertos/FreeRTOS-Plus/Source/Application-Protocols/coreMQTT-Agent/source/dependency/coreMQTT/docs/doxygen/output
|
||||
wget -O freertos/FreeRTOS-Plus/Source/Application-Protocols/coreMQTT-Agent/source/dependency/coreMQTT/docs/doxygen/output/mqtt.tag \
|
||||
"https://freertos.org/Documentation/api-ref/coreMQTT/docs/doxygen/output/mqtt.tag"
|
||||
|
||||
- name: Generate doxygen ZIP
|
||||
uses: FreeRTOS/CI-CD-GitHub-Actions/doxygen@main
|
||||
uses: FreeRTOS/CI-CD-Github-Actions/doxygen@main
|
||||
with:
|
||||
path: ./freertos
|
||||
# List of directories containing libraries whose doxygen output will be generated.
|
||||
|
|
@ -112,77 +100,49 @@ jobs:
|
|||
path: ./freertos/doxygen.zip
|
||||
retention-days: 2
|
||||
|
||||
spell-check:
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Checkout Parent Repo
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: main
|
||||
repository: FreeRTOS/CI-CD-Github-Actions
|
||||
path: commonCI
|
||||
- name: Clone This Repo
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
path: ./FreeRTOS
|
||||
- name: Install spell
|
||||
run: |
|
||||
sudo apt-get install spell
|
||||
sudo apt-get install util-linux
|
||||
- name: Check spelling
|
||||
run: |
|
||||
# Add path to the tool to the environment variable.
|
||||
PATH=$PATH:commonCI/spellings/tools
|
||||
# Make sure that only Amazon licenced files are checked.
|
||||
sed -i 's/`find $DIRNAME \\( -iname \\\*\.\[ch\] -o -iname \\\*\.dox \\) -type f`/`grep -ril "copyright \(c\) \[0-9\]\[0-9\]\[0-9\]\[0-9\] amazon.com" | grep "\\.\[ch\]" | grep -v "FreeRTOS\/FreeRTOS\/Test\/VeriFast"`/g' commonCI/spellings/tools/find-unknown-comment-words
|
||||
# Run the spell check script.
|
||||
find-unknown-comment-words --directory FreeRTOS/ --lexicon FreeRTOS/lexicon.txt
|
||||
# Check the exit status.
|
||||
if [ "$?" = "0" ]; then
|
||||
exit 0
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
|
||||
verify-manifest:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
fetch-depth: 0
|
||||
- name: Install Python3
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: '3.x'
|
||||
- name: Run manifest verifier
|
||||
uses: FreeRTOS/CI-CD-Github-Actions/manifest-verifier@main
|
||||
uses: FreeRTOS/CI-CD-GitHub-Actions/manifest-verifier@v2
|
||||
with:
|
||||
path: ./
|
||||
exclude-submodules: FreeRTOS-Plus/Test/CMock,FreeRTOS/Test/CMock/CMock,FreeRTOS/Test/litani
|
||||
fail-on-incorrect-version: true
|
||||
|
||||
memory-statistics:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
ARM_GCC_TOOLCHAIN_URL: "https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2?revision=05382cca-1721-44e1-ae19-1e7c3dc96118&la=en&hash=D7C9D18FCA2DD9F894FD9F3C3DC9228498FA281A"
|
||||
steps:
|
||||
- name: Install ARM GCC
|
||||
run: wget -qO- "${{ env.ARM_GCC_TOOLCHAIN_URL }}" | sudo tar --strip-components=1 -xj -C /usr/local
|
||||
run:
|
||||
wget -qO- "${{ env.ARM_GCC_TOOLCHAIN_URL }}" | sudo tar
|
||||
--strip-components=1 -xj -C /usr/local
|
||||
- name: Clone FreeRTOS Repository with submodules
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: recursive
|
||||
- name: Clone mbedTLS submodule from corePKCS11
|
||||
run: git submodule update --init --recursive --checkout -- FreeRTOS-Plus/Source/corePKCS11
|
||||
run:
|
||||
git submodule update --init --recursive --checkout --
|
||||
FreeRTOS-Plus/Source/corePKCS11
|
||||
- name: Clone CI-CD-Github-Actions repository
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: FreeRTOS/CI-CD-Github-Actions
|
||||
repository: FreeRTOS/CI-CD-GitHub-Actions
|
||||
path: tools
|
||||
- name: Run script to generate JSON memory statistics
|
||||
run: tools/memory_statistics/memory_statistics.py --json_report --config tools/memory_statistics/paths.json --output freertos_lts_memory_estimates.json
|
||||
- name: Upload memory size report as artifact (for main and release-candidate ONLY)
|
||||
run:
|
||||
tools/memory_statistics/memory_statistics.py --json_report
|
||||
--config tools/memory_statistics/paths.json --output
|
||||
freertos_lts_memory_estimates.json
|
||||
- name:
|
||||
Upload memory size report as artifact (for main and
|
||||
release-candidate ONLY)
|
||||
if: success() && ( github.ref == 'refs/heads/main' || github.ref == 'refs/heads/release-candidate' )
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
|
|
@ -191,16 +151,24 @@ jobs:
|
|||
retention-days: 2
|
||||
|
||||
proof_ci:
|
||||
if: ${{ github.event.pull_request }}
|
||||
runs-on: cbmc_ubuntu-latest_16-core
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: |
|
||||
- uses: actions/checkout@v3
|
||||
- env:
|
||||
stepName: Install Dependencies
|
||||
run: |
|
||||
echo -e "::group::${{ env.stepName }}"
|
||||
git submodule update --init --checkout --recursive --depth 1
|
||||
sudo apt-get update
|
||||
sudo apt-get install --yes --no-install-recommends gcc-multilib
|
||||
echo -e "::endgroup::"
|
||||
echo -e "${{ env.bashPass }} ${{env.stepName}} ${{ env.bashEnd }}"
|
||||
|
||||
- name: Set up CBMC runner
|
||||
uses: FreeRTOS/CI-CD-Github-Actions/set_up_cbmc_runner@main
|
||||
|
||||
- name: Run CBMC
|
||||
uses: FreeRTOS/CI-CD-Github-Actions/run_cbmc@main
|
||||
with:
|
||||
proofs_dir: FreeRTOS/Test/CBMC/proofs
|
||||
proofs_dir: FreeRTOS/Test/CBMC/proofs
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue