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 - name: Check Coverage uses: FreeRTOS/CI-CD-Github-Actions/coverage-cop@main with: path: ./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/lexicon.txt if [ "$?" = "0" ]; then exit 0 else exit 1 fi formatting: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - name: Check formatting uses: FreeRTOS/CI-CD-Github-Actions/formatting@main with: path: ./ doxygen: runs-on: ubuntu-latest 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: Build Install Dependencies run: | sudo apt-get install -y libpcap-dev - name: Build checks (Enable all functionalities) run: | cmake -S . -B build -DFREERTOS_PLUS_TCP_TEST_CONFIGURATION=ENABLE_ALL cmake --build build --target freertos_plus_tcp_build_test - name: Build checks (Enable all functionalities IPv4) run: | cmake -S . -B build -DFREERTOS_PLUS_TCP_TEST_CONFIGURATION=ENABLE_ALL_IPV4 cmake --build build --target clean cmake --build build --target freertos_plus_tcp_build_test - name: Build checks (Enable all functionalities IPv6) run: | cmake -S . -B build -DFREERTOS_PLUS_TCP_TEST_CONFIGURATION=ENABLE_ALL_IPV6 cmake --build build --target freertos_plus_tcp_build_test - name: Build checks (Enable all functionalities IPv4 IPv6) run: | cmake -S . -B build -DFREERTOS_PLUS_TCP_TEST_CONFIGURATION=ENABLE_ALL_IPV4_IPV6 cmake --build build --target clean cmake --build build --target freertos_plus_tcp_build_test - name: Build checks (Enable all functionalities IPv4 TCP) run: | cmake -S . -B build -DFREERTOS_PLUS_TCP_TEST_CONFIGURATION=ENABLE_ALL_IPV4_TCP cmake --build build --target clean cmake --build build --target freertos_plus_tcp_build_test - name: Build checks (Enable all functionalities IPv6 TCP) run: | cmake -S . -B build -DFREERTOS_PLUS_TCP_TEST_CONFIGURATION=ENABLE_ALL_IPV6_TCP cmake --build build --target freertos_plus_tcp_build_test - name: Build checks (Disable all functionalities) run: | cmake -S . -B build -DFREERTOS_PLUS_TCP_TEST_CONFIGURATION=DISABLE_ALL cmake --build build --target clean cmake --build build --target freertos_plus_tcp_build_test - name: Build checks (Default configuration) run: | cmake -S . -B build -DFREERTOS_PLUS_TCP_TEST_CONFIGURATION=DEFAULT_CONF cmake --build build --target clean cmake --build build --target freertos_plus_tcp_build_test - name: Build checks (Header Self Contain) run: | cmake -S . -B build -DFREERTOS_PLUS_TCP_TEST_CONFIGURATION=HEADER_SELF_CONTAIN cmake --build build --target clean cmake --build build --target freertos_plus_tcp_build_test_FreeRTOS_DHCP cmake --build build --target freertos_plus_tcp_build_test_FreeRTOS_DNS cmake --build build --target freertos_plus_tcp_build_test_FreeRTOS_IP cmake --build build --target freertos_plus_tcp_build_test_FreeRTOS_ND cmake --build build --target freertos_plus_tcp_build_test_FreeRTOS_Routing cmake --build build --target freertos_plus_tcp_build_test_FreeRTOS_Sockets cmake --build build --target freertos_plus_tcp_build_test_NetworkBufferManagement cmake --build build --target freertos_plus_tcp_build_test_NetworkInterface 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 source/portable/BufferManagement/*.c source/*.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 proof_ci: runs-on: cbmc_ubuntu-latest_16-core steps: - name: Set up CBMC runner uses: FreeRTOS/CI-CD-Github-Actions/set_up_cbmc_runner@main with: cbmc_version: "5.61.0" - run: | git submodule update --init --checkout --recursive sudo apt-get update sudo apt-get install --yes --no-install-recommends gcc-multilib - name: Run CBMC uses: FreeRTOS/CI-CD-Github-Actions/run_cbmc@main with: proofs_dir: test/cbmc/proofs