165 lines
5.0 KiB
YAML
165 lines
5.0 KiB
YAML
name: CI Checks
|
|
|
|
on:
|
|
push:
|
|
branches: ["**"]
|
|
pull_request:
|
|
branches: ["**"]
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
unittest:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Clone This Repo
|
|
uses: actions/checkout@v2
|
|
with:
|
|
submodules: recursive
|
|
- name: Build
|
|
run: |
|
|
git submodule update --checkout
|
|
cd tools/CMock
|
|
git submodule update --init vendor/unity
|
|
cd ../..
|
|
sudo apt-get install -y lcov
|
|
sudo apt-get install -y unifdef
|
|
cmake -S test/unit-test -B test/unit-test/build/
|
|
make -C test/unit-test/build/ all
|
|
- name: Test
|
|
run: |
|
|
cd test/unit-test/build/
|
|
ctest -E system --output-on-failure
|
|
cd ..
|
|
- name: Coverage
|
|
run: |
|
|
make -C test/unit-test/build/ coverage
|
|
lcov --list --rc lcov_branch_coverage=1 test/unit-test/build/coverage.info
|
|
|
|
spell-check:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout Parent Repo
|
|
uses: actions/checkout@v2
|
|
with:
|
|
ref: main
|
|
repository: aws/aws-iot-device-sdk-embedded-C
|
|
path: main
|
|
- name: Clone This Repo
|
|
uses: actions/checkout@v2
|
|
with:
|
|
path: ./tcp
|
|
- name: Install spell
|
|
run: |
|
|
sudo apt-get install spell
|
|
sudo apt-get install util-linux
|
|
- name: Check spelling
|
|
run: |
|
|
PATH=$PATH:main/tools/spell
|
|
# Make sure that the portable directory is not included in the spellcheck.
|
|
sed -i 's/find $DIRNAME/find $DIRNAME -not -path '*portable*'/g' main/tools/spell/find-unknown-comment-words
|
|
find-unknown-comment-words --directory tcp/ --lexicon tcp/.github/lexicon.txt
|
|
if [ "$?" = "0" ]; then
|
|
exit 0
|
|
else
|
|
exit 1
|
|
fi
|
|
|
|
formatting:
|
|
# Use only 18.04 since we want the uncrustify version to
|
|
# be 0.66.1_f to ensure proper formatting.
|
|
runs-on: ubuntu-18.04
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install Uncrustify
|
|
run: sudo apt-get install uncrustify
|
|
- name: Run Uncrustify
|
|
run: |
|
|
uncrustify --version
|
|
find . -not -path '.*catch_assert.h' -iname "*.[hc]" -exec uncrustify --check -c tools/uncrustify.cfg {} +
|
|
- name: Check For Trailing Whitespace
|
|
run: |
|
|
set +e
|
|
grep --exclude="README.md" -rnI -e "[[:blank:]]$" .
|
|
if [ "$?" = "0" ]; then
|
|
echo "Files have trailing whitespace."
|
|
exit 1
|
|
else
|
|
exit 0
|
|
fi
|
|
|
|
doxygen:
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Run doxygen build
|
|
uses: FreeRTOS/CI-CD-Github-Actions/doxygen@main
|
|
with:
|
|
path: ./
|
|
|
|
build-checks:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Update submodules
|
|
run: git submodule update --init --checkout
|
|
- name: Build checks (Enable all functionalities)
|
|
run: |
|
|
cmake -S test/build-combination -B test/build-combination/build/ \
|
|
-DTEST_CONFIGURATION=ENABLE_ALL
|
|
make -C test/build-combination/build/
|
|
- name: Build checks (Disable all functionalities)
|
|
run: |
|
|
cmake -S test/build-combination -B test/build-combination/build/ \
|
|
-DTEST_CONFIGURATION=DISABLE_ALL
|
|
make -C test/build-combination/build/
|
|
|
|
complexity:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Setup
|
|
run: sudo apt-get install complexity
|
|
- name: Install Uncrustify
|
|
run: sudo apt-get install uncrustify
|
|
- name: Complexity
|
|
run: |
|
|
COMPLEXITY_PARAMS="--scores --threshold=10 --horrid-threshold=283"
|
|
TEMP_DIR=./temp
|
|
mkdir -p ${TEMP_DIR}
|
|
for SOURCE_FILE in portable/BufferManagement/*.c *.c
|
|
do
|
|
TARGET_DIR=${TEMP_DIR}/`dirname ${SOURCE_FILE}`
|
|
TARGET_FILE=${TARGET_DIR}/`basename ${SOURCE_FILE}`
|
|
mkdir -p ${TARGET_DIR}
|
|
uncrustify -c tools/uncrustify.complexity.cfg -f ${SOURCE_FILE} > ${TARGET_FILE}
|
|
done
|
|
find ${TEMP_DIR} -iname '*.c' | xargs complexity ${COMPLEXITY_PARAMS}
|
|
RESULT=$?
|
|
rm -rf ${TEMP_DIR}
|
|
if [ "${RESULT}" = "0" ]; then
|
|
echo "All is good."
|
|
exit 0
|
|
else
|
|
echo "Sources are too complex, rc = " ${RESULT}
|
|
exit 1
|
|
fi
|
|
|
|
git-secrets:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: recursive
|
|
- name: Checkout awslabs/git-secrets
|
|
uses: actions/checkout@v2
|
|
with:
|
|
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
|