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