Skip to content

Add CURL as a fallback to the link-verifier check #182

Add CURL as a fallback to the link-verifier check

Add CURL as a fallback to the link-verifier check #182

Workflow file for this run

name: Repository Pull Request Checks
on:
pull_request:
branches: [main, v2]
workflow_dispatch:
env:
# The bash escape character is \033
bashPass: \033[32;1mPASSED -
bashInfo: \033[33;1mINFO -
bashFail: \033[31;1mFAILED -
bashEnd: \033[0m
jobs:
PR-repo-checks:
runs-on: ubuntu-latest
if: ${{ github.event.pull_request }} || ${{ github.event.workflow }}
strategy:
fail-fast: false
matrix:
inputs:
[
{
repository: FreeRTOS-Kernel,
org: FreeRTOS,
branch: main,
run-link-verifier: true,
run-complexity: false,
run-doxygen: false,
},
{
repository: FreeRTOS-Plus-TCP,
org: FreeRTOS,
branch: main,
run-link-verifier: true,
run-complexity: false,
run-doxygen: false,
},
{
repository: FreeRTOS,
org: FreeRTOS,
branch: main,
run-link-verifier: false,
run-complexity: false,
run-doxygen: false,
exclude-dirs: ethernet, drivers, FreeRTOS/Demo,
},
{
repository: backoffAlgorithm,
org: FreeRTOS,
branch: main,
run-link-verifier: true,
run-complexity: true,
run-doxygen: true,
build-flags: -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_FLAGS='--coverage -Wall -Wextra -Werror',
coverage-skips: '"\*test\*" "\*CMakeCCompilerId\*" "\*mocks\*" "\*3rdparty\*"',
},
{
repository: coreHTTP,
org: FreeRTOS,
branch: main,
run-link-verifier: true,
run-complexity: true,
run-doxygen: true,
build-flags: -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_FLAGS='--coverage -Wall -Wextra -DNDEBUG',
coverage-skips: '"\*test\*" "\*CMakeCCompilerId\*" "\*mocks\*" "\*3rdparty\*"',
},
{
repository: coreJSON,
org: FreeRTOS,
branch: main,
run-link-verifier: true,
run-complexity: true,
run-doxygen: true,
build-flags: -DCMAKE_BUILD_TYPE=Debug -DBUILD_CLONE_SUBMODULES=ON -DCMAKE_C_FLAGS='--coverage -Wall -Wextra -Werror',
coverage-skips: '"\*test\*" "\*CMakeCCompilerId\*" "\*mocks\*" "\*source\*"',
},
{
repository: coreMQTT,
org: FreeRTOS,
branch: main,
run-link-verifier: true,
run-complexity: true,
run-doxygen: true,
build-flags: -DCMAKE_BUILD_TYPE=Debug -DBUILD_CLONE_SUBMODULES=ON -DCMAKE_C_FLAGS='--coverage -Wall -Wextra -Werror -DNDEBUG -DLIBRARY_LOG_LEVEL=LOG_DEBUG',
coverage-skips: '"\*test\*" "\*CMakeCCompilerId\*" "\*mocks\*"',
},
{
repository: corePKCS11,
org: FreeRTOS,
branch: main,
run-link-verifier: true,
run-complexity: true,
run-doxygen: true,
build-flags: -DCMAKE_BUILD_TYPE=Debug -DSYSTEM_TESTS=0 -DCMAKE_C_FLAGS='--coverage -Wall -Wextra -DNDEBUG',
coverage-skips: '"\*test\*" "\*CMakeCCompilerId\*" "\*mocks\*"',
branch-coverage: 90,
},
{
repository: coreSNTP,
org: FreeRTOS,
branch: main,
run-link-verifier: true,
run-complexity: true,
run-doxygen: true,
build-flags: -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_FLAGS='--coverage -Wall -Wextra -Werror -DNDEBUG -Wno-error=pedantic -Wno-variadic-macros -DLOGGING_LEVEL_DEBUG=1',
coverage-skips: '"\*test\*" "\*CMakeCCompilerId\*" "\*mocks\*"',
},
{
repository: FreeRTOS-Cellular-Interface,
org: FreeRTOS,
branch: main,
run-link-verifier: true,
run-complexity: true,
run-doxygen: true,
build-flags: -DCMAKE_BUILD_TYPE=Debug -DBUILD_CLONE_SUBMODULES=ON -DCMAKE_C_FLAGS='--coverage -Wall -Wextra -Werror -DNDEBUG',
coverage-skips: '"\*test\*" "\*CMakeCCompilerId\*" "\*mocks\*"',
},
{
repository: Device-Defender-for-AWS-IoT-embedded-sdk,
org: AWS,
branch: main,
run-link-verifier: true,
run-complexity: true,
run-doxygen: true,
build-flags: -DBUILD_CLONE_SUBMODULES=ON -DCMAKE_C_FLAGS='--coverage -Wall -Wextra -Werror -DNDEBUG',
coverage-skips: '"\*test\*" "\*CMakeCCompilerId\*" "\*mocks\*"',
},
{
repository: Device-Shadow-for-AWS-IoT-embedded-sdk,
org: AWS,
branch: main,
run-link-verifier: true,
run-complexity: true,
build-flags: -DCMAKE_BUILD_TYPE=Debug -DBUILD_CLONE_SUBMODULES=ON -DCMAKE_C_FLAGS='--coverage -Wall -Wextra -Werror -DNDEBUG',
coverage-skips: '"\*test\*" "\*CMakeCCompilerId\*" "\*mocks\*"',
},
{
repository: Fleet-Provisioning-for-AWS-IoT-embedded-sdk,
org: AWS,
branch: main,
run-link-verifier: true,
run-complexity: true,
run-doxygen: true,
build-flags: -DCMAKE_BUILD_TYPE=Debug -DBUILD_CLONE_SUBMODULES=ON -DCMAKE_C_FLAGS='--coverage -Wall -Wextra -Werror -DNDEBUG',
coverage-skips: '"\*test\*" "\*CMakeCCompilerId\*" "\*mocks\*"',
},
{
repository: Jobs-for-AWS-IoT-embedded-sdk,
org: AWS,
branch: main,
run-link-verifier: true,
run-complexity: false,
run-doxygen: true,
build-flags: -DCMAKE_BUILD_TYPE=Debug -DBUILD_CLONE_SUBMODULES=ON -DCMAKE_C_FLAGS='--coverage -Wall -Wextra -Werror',
coverage-skips: '"\*test\*" "\*CMakeCCompilerId\*" "\*mocks\*" "\*source\*"',
},
{
repository: ota-for-AWS-IoT-embedded-sdk,
org: AWS,
branch: main,
run-link-verifier: true,
run-complexity: true,
run-doxygen: true,
build-flags: -DCMAKE_BUILD_TYPE=Debug -DBUILD_CLONE_SUBMODULES=ON -DCMAKE_C_FLAGS='--coverage -Wall -Wextra -DNDEBUG',
},
{
repository: SigV4-for-AWS-IoT-embedded-sdk,
org: AWS,
branch: main,
run-complexity: true,
run-doxygen: true,
build-flags: -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_FLAGS='--coverage -Wall -Wextra -DNDEBUG -DLOGGING_LEVEL_DEBUG=1',
coverage-skips: '"\*test\*" "\*CMakeCCompilerId\*" "\*mocks\*"',
},
]
steps:
- uses: actions/[email protected]
- uses: actions/[email protected]
- env:
stepName: Install Common Tools
shell: bash
run: |
# ${{ env.stepName }}
echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}"
sudo apt-get -y update
sudo apt-get install -y lcov sed build-essential cmake
echo -e "::endgroup::"
echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
- name: "Clone: ${{ matrix.inputs.repository }}"
uses: actions/[email protected]
with:
repository: ${{ matrix.inputs.org }}/${{ matrix.inputs.repository }}
ref: ${{ matrix.inputs.branch }}
path: repo/${{ matrix.inputs.repository }}
- name: "Link Verifier Check: ${{ matrix.inputs.repository }}"
uses: ./link-verifier
if: matrix.inputs.run-link-verifier && ( success() || failure() )
with:
path: repo/${{ matrix.inputs.repository }}
exclude-dirs: complexity, formatting
exclude-urls: https://dummy-url.com/ota.bin, https://s3.region.amazonaws.com/joe-ota
- name: "Complexity Check: ${{ matrix.inputs.repository }}"
if: matrix.inputs.run-complexity && ( success() || failure() )
uses: ./complexity
with:
path: repo/${{ matrix.inputs.repository }}
horrid_threshold: 16
- name: "Doxygen Build Check ${{ matrix.inputs.repository }}"
if: matrix.inputs.run-doxgyen && ( success() || failure() )
uses: ./doxygen
with:
path: repo/${{ matrix.inputs.repository }}
- name: "Doxygen Zip Check: ${{ matrix.inputs.repository }}"
if: success() || failure()
uses: ./doxygen
with:
path: repo/${{ matrix.inputs.repository }}
generate_zip: true
- name: "Spelling Check: ${{ matrix.inputs.repository }} "
if: success() || failure()
uses: ./spellings
with:
path: repo/${{ matrix.inputs.repository }}
exclude-dirs: ${{ matrix.inputs.repository }}
- name: "Recursive Clone: ${{ matrix.inputs.repository }}"
if: success() || failure()
uses: actions/[email protected]
with:
repository: ${{ matrix.inputs.org }}/${{ matrix.inputs.repository }}
ref: ${{ matrix.inputs.branch }}
path: repo/${{ matrix.inputs.repository }}_Recursive
submodules: recursive
# Need full history to make sure we get submodules
fetch-depth: 0
- name: Ensure Recursive Clone of ${{ matrix.inputs.repository }}
if: success() || failure()
shell: bash
working-directory: repo/${{ matrix.inputs.repository }}_Recursive
run: git submodule update --checkout --init --recursive
- env:
stepName: Build ${{matrix.inputs.repository}}
if: matrix.inputs.run-complexity && ( success() || failure() )
shell: bash
working-directory: repo/${{matrix.inputs.repository}}_Recursive
run: |
# ${{ env.stepName }}
echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}"
cmake -S ./test -B build/ ${{ matrix.inputs.build-flags }} -DUNITTEST=ON
make -C build/ all
echo -e "::endgroup::"
echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
- name: Test
if: matrix.inputs.run-complexity && ( success() || failure() )
shell: bash
working-directory: repo/${{matrix.inputs.repository}}_Recursive
run: ctest --test-dir build -E system --output-on-failure
- name: "Manifest Verifier: ${{ matrix.inputs.repository }}"
if: success() || failure()
uses: ./manifest-verifier
with:
path: repo/${{ matrix.inputs.repository }}_Recursive
fail-on-incorrect-version: true
- name: "Memory Statistics Check: ${{ matrix.inputs.repository }}"
if: matrix.inputs.run-complexity && ( success() || failure() )
uses: ./memory_statistics
with:
path: repo/${{ matrix.inputs.repository }}_Recursive
config: .github/memory_statistics_config.json
output: size_table_new.html
check_against: docs/doxygen/include/size_table.md
- env:
stepName: Coverage ${{matrix.inputs.repository}}
if: matrix.inputs.run-complexity && ( success() || failure() )
shell: bash
working-directory: repo/${{matrix.inputs.repository}}_Recursive
run: |
# ${{ env.stepName }}
echo -e "::group::${{ env.bashInfo }} Build ${{matrix.inputs.repository}} ${{ env.bashEnd }}"
make -C build/ coverage
echo -e "::endgroup::"
echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}"
if [[ "${{ matrix.inputs.coverage-skips }}" != "" ]]; then
declare -a EXCLUDE=( ${{ matrix.inputs.coverage-skips }} )
echo ${EXCLUDE[@]} | xargs lcov --rc lcov_branch_coverage=1 -r build/coverage.info -o build/coverage.info
else
lcov --rc lcov_branch_coverage=1 -r build/coverage.info -o build/coverage.info
fi
echo -e "::endgroup::"
lcov --rc lcov_branch_coverage=1 --list build/coverage.info
- name: Test coverage cop action ${{matrix.inputs.repository}}
if: matrix.inputs.run-complexity && ( success() || failure() )
uses: ./coverage-cop
with:
coverage-file: repo/${{matrix.inputs.repository}}_Recursive/build/coverage.info
branch-coverage-min: ${{ matrix.inputs.branch_coverage }}
PR-uncrustify-checks:
runs-on: ubuntu-20.04
if: ${{ github.event.pull_request }} || ${{ github.event.workflow }}
strategy:
fail-fast: false
matrix:
inputs:
[
{
repository: FreeRTOS-Kernel,
org: FreeRTOS,
branch: main,
exclude-dirs: 'portable'
},
{
repository: FreeRTOS-Plus-TCP,
org: FreeRTOS,
branch: main,
},
{
repository: FreeRTOS,
org: FreeRTOS,
branch: main,
exclude-dirs: 'ethernet, drivers, FreeRTOS/Demo'
},
{
repository: FreeRTOS-Cellular-Interface,
org: FreeRTOS,
branch: main,
},
{
repository: backoffAlgorithm,
org: FreeRTOS,
branch: main,
},
{
repository: coreHTTP,
org: FreeRTOS,
branch: main,
},
{
repository: coreJSON,
org: FreeRTOS,
branch: main,
},
{
repository: coreMQTT,
org: FreeRTOS,
branch: main,
},
{
repository: corePKCS11,
org: FreeRTOS,
branch: main,
},
{
repository: coreSNTP,
org: FreeRTOS,
branch: main,
},
{
repository: Device-Defender-for-AWS-IoT-embedded-sdk,
org: AWS,
branch: main,
},
{
repository: Device-Shadow-for-AWS-IoT-embedded-sdk,
org: AWS,
branch: main,
},
{
repository: Fleet-Provisioning-for-AWS-IoT-embedded-sdk,
org: AWS,
branch: main,
},
{
repository: Jobs-for-AWS-IoT-embedded-sdk,
org: AWS,
branch: main,
},
{
repository: ota-for-AWS-IoT-embedded-sdk,
org: AWS,
branch: main,
},
{
repository: SigV4-for-AWS-IoT-embedded-sdk,
org: AWS,
branch: main,
},
]
steps:
- uses: actions/[email protected]
- uses: actions/[email protected]
- name: "Clone: ${{ matrix.inputs.repository }}"
uses: actions/[email protected]
with:
repository: ${{ matrix.inputs.org }}/${{ matrix.inputs.repository }}
ref: ${{ matrix.inputs.branch }}
path: repo/${{ matrix.inputs.repository }}
- name: "Formatting Check : ${{ matrix.inputs.repository }}"
if: success() || failure()
uses: ./formatting
with:
path: repo/${{ matrix.inputs.repository }}
exclude-files: ${{ matrix.inputs.exclude-files }}
exclude-dirs: ${{ matrix.inputs.exclude-dirs }}