Introduce TC-CNET-4.4 automation #91065
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright (c) 2020-2021 Project CHIP Authors | |
# | |
# Licensed under the Apache License, Version 2.0 (the "License"); | |
# you may not use this file except in compliance with the License. | |
# You may obtain a copy of the License at | |
# | |
# http://www.apache.org/licenses/LICENSE-2.0 | |
# | |
# Unless required by applicable law or agreed to in writing, software | |
# distributed under the License is distributed on an "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
# See the License for the specific language governing permissions and | |
# limitations under the License. | |
name: Builds | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }} | |
cancel-in-progress: true | |
jobs: | |
build_linux_gcc_debug: | |
name: Build on Linux (gcc_debug) | |
timeout-minutes: 85 | |
runs-on: ubuntu-latest | |
if: github.actor != 'restyled-io[bot]' | |
container: | |
image: connectedhomeip/chip-build:0.5.91 | |
volumes: | |
- "/tmp/log_output:/tmp/test_logs" | |
options: --privileged --sysctl "net.ipv6.conf.all.disable_ipv6=0 | |
net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" | |
steps: | |
- name: Dump GitHub context | |
env: | |
GITHUB_CONTEXT: ${{ toJSON(github) }} | |
run: echo "$GITHUB_CONTEXT" | |
- name: Dump Concurrency context | |
env: | |
CONCURRENCY_CONTEXT: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }} | |
run: echo "$CONCURRENCY_CONTEXT" | |
- uses: Wandalen/[email protected] | |
name: Checkout | |
with: | |
action: actions/checkout@v3 | |
with: | | |
token: ${{ github.token }} | |
attempt_limit: 3 | |
attempt_delay: 2000 | |
- name: Checkout submodules | |
run: scripts/checkout_submodules.py --shallow --platform linux | |
- name: Try to ensure the directories for core dumping exist and we | |
can write them. | |
run: | | |
mkdir /tmp/cores || true | |
sysctl -w kernel.core_pattern=/tmp/cores/core.%u.%p.%t || true | |
- name: Bootstrap | |
timeout-minutes: 10 | |
run: scripts/build/gn_bootstrap.sh | |
- name: Uploading bootstrap logs | |
uses: actions/upload-artifact@v2 | |
if: ${{ always() && !env.ACT }} | |
with: | |
name: bootstrap-logs | |
path: | | |
.environment/gn_out/.ninja_log | |
.environment/pigweed-venv/*.log | |
- name: Setup Build | |
run: scripts/build/gn_gen.sh --args="chip_config_memory_debug_checks=true chip_config_memory_debug_dmalloc=true" | |
- name: Run Build | |
timeout-minutes: 20 | |
run: scripts/run_in_build_env.sh "ninja -C ./out" | |
- name: Run Tests | |
timeout-minutes: 30 | |
run: scripts/tests/gn_tests.sh | |
# TODO Log Upload https://github.com/project-chip/connectedhomeip/issues/2227 | |
# TODO https://github.com/project-chip/connectedhomeip/issues/1512 | |
# - name: Run Code Coverage | |
# if: ${{ contains('main', env.BUILD_TYPE) }} | |
# run: scripts/tools/codecoverage.sh | |
# - name: Upload Code Coverage | |
# if: ${{ contains('main', env.BUILD_TYPE) }} | |
# run: bash <(curl -s https://codecov.io/bash) | |
- name: Setup Build Without Detail Logging | |
run: scripts/build/gn_gen.sh --args="chip_detail_logging=false" | |
- name: Run Build Without Detail Logging | |
timeout-minutes: 20 | |
run: scripts/run_in_build_env.sh "ninja -C ./out" | |
- name: Setup Build Without Progress Logging | |
run: scripts/build/gn_gen.sh --args="chip_detail_logging=false chip_progress_logging=false" | |
- name: Run Build Without Progress Logging | |
timeout-minutes: 20 | |
run: scripts/run_in_build_env.sh "ninja -C ./out" | |
- name: Setup Build Without Error Logging | |
run: scripts/build/gn_gen.sh --args="chip_detail_logging=false chip_progress_logging=false chip_error_logging=false" | |
- name: Run Build Without Error Logging | |
timeout-minutes: 20 | |
run: scripts/run_in_build_env.sh "ninja -C ./out" | |
- name: Uploading core files | |
uses: actions/upload-artifact@v2 | |
if: ${{ failure() && !env.ACT }} | |
with: | |
name: crash-core-linux-gcc-debug | |
path: /tmp/cores/ | |
# Cores are big; don't hold on to them too long. | |
retention-days: 5 | |
- name: Uploading objdir for debugging | |
uses: actions/upload-artifact@v2 | |
if: ${{ failure() && !env.ACT }} | |
with: | |
name: crash-objdir-linux-gcc-debug | |
path: out/ | |
# objdirs are big; don't hold on to them too long. | |
retention-days: 5 | |
build_linux: | |
name: Build on Linux (fake, gcc_release, clang, simulated) | |
timeout-minutes: 120 | |
runs-on: ubuntu-latest | |
if: github.actor != 'restyled-io[bot]' | |
container: | |
image: connectedhomeip/chip-build:0.5.91 | |
volumes: | |
- "/tmp/log_output:/tmp/test_logs" | |
options: --privileged --sysctl "net.ipv6.conf.all.disable_ipv6=0 | |
net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" | |
steps: | |
- name: Dump GitHub context | |
env: | |
GITHUB_CONTEXT: ${{ toJSON(github) }} | |
run: echo "$GITHUB_CONTEXT" | |
- name: Dump Concurrency context | |
env: | |
CONCURRENCY_CONTEXT: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }} | |
run: echo "$CONCURRENCY_CONTEXT" | |
- uses: Wandalen/[email protected] | |
name: Checkout | |
with: | |
action: actions/checkout@v3 | |
with: | | |
token: ${{ github.token }} | |
attempt_limit: 3 | |
attempt_delay: 2000 | |
# - name: Initialize CodeQL | |
# if: ${{ github.event_name == 'push' && github.event.ref == 'refs/heads/master' }} | |
# uses: github/codeql-action/init@v1 | |
# with: | |
# languages: "cpp" | |
- name: Checkout submodules | |
run: scripts/checkout_submodules.py --shallow --platform linux | |
- name: Try to ensure the directories for core dumping exist and we | |
can write them. | |
run: | | |
mkdir /tmp/cores || true | |
sysctl -w kernel.core_pattern=/tmp/cores/core.%u.%p.%t || true | |
- name: Bootstrap | |
timeout-minutes: 10 | |
run: scripts/build/gn_bootstrap.sh | |
- name: Uploading bootstrap logs | |
uses: actions/upload-artifact@v2 | |
if: ${{ always() && !env.ACT }} | |
with: | |
name: bootstrap-logs | |
path: | | |
.environment/gn_out/.ninja_log | |
.environment/pigweed-venv/*.log | |
- name: Setup and Build Simulated Device | |
timeout-minutes: 20 | |
run: | | |
BUILD_TYPE=simulated | |
GN_ARGS='chip_tests_zap_config="app1" chip_project_config_include_dirs=["../../examples/placeholder/linux/apps/app1/include", "../../config/standalone"] chip_config_network_layer_ble=false' | |
CHIP_ROOT_PATH=examples/placeholder/linux | |
CHIP_ROOT_PATH="$CHIP_ROOT_PATH" BUILD_TYPE="$BUILD_TYPE" scripts/build/gn_gen.sh --args="$GN_ARGS" | |
scripts/run_in_build_env.sh "ninja -C ./out/$BUILD_TYPE" | |
- name: Setup Build, Run Build and Run Tests | |
timeout-minutes: 90 | |
run: | | |
for BUILD_TYPE in gcc_release clang; do | |
case $BUILD_TYPE in | |
"gcc_release") GN_ARGS='is_debug=false';; | |
"clang") GN_ARGS='is_clang=true';; | |
esac | |
BUILD_TYPE=$BUILD_TYPE scripts/build/gn_gen.sh --args="$GN_ARGS" --export-compile-commands | |
scripts/run_in_build_env.sh "ninja -C ./out/$BUILD_TYPE" | |
BUILD_TYPE=$BUILD_TYPE scripts/tests/gn_tests.sh | |
done | |
- name: Clang-tidy validation | |
timeout-minutes: 45 | |
run: | | |
./scripts/run_in_build_env.sh \ | |
"./scripts/run-clang-tidy-on-compile-commands.py \ | |
--no-log-timestamps \ | |
--compile-database out/clang/compile_commands.json \ | |
check \ | |
" | |
- name: Run Tests with sanitizers | |
timeout-minutes: 60 | |
env: | |
LSAN_OPTIONS: detect_leaks=1 | |
run: | | |
# for BUILD_TYPE in asan msan tsan ubsan; do | |
for BUILD_TYPE in asan tsan ubsan; do | |
case $BUILD_TYPE in | |
"asan") GN_ARGS='is_clang=true is_asan=true';; | |
"msan") GN_ARGS='is_clang=true is_msan=true';; | |
"tsan") GN_ARGS='is_clang=true is_tsan=true chip_enable_wifi=false';; | |
"ubsan") GN_ARGS='is_clang=true is_ubsan=true';; | |
esac | |
scripts/build/gn_gen.sh --args="$GN_ARGS" | |
scripts/tests/gn_tests.sh | |
done | |
- name: Build using build_examples.py | |
timeout-minutes: 60 | |
run: | | |
./scripts/run_in_build_env.sh \ | |
"./scripts/build/build_examples.py --no-log-timestamps \ | |
--target linux-x64-all-clusters-ipv6only-clang \ | |
--target linux-x64-chip-tool-ipv6only-clang \ | |
--target linux-x64-minmdns-ipv6only-clang \ | |
--target linux-x64-rpc-console \ | |
build \ | |
" | |
- name: Run fake linux tests with build_examples | |
timeout-minutes: 15 | |
run: | | |
./scripts/run_in_build_env.sh \ | |
"./scripts/build/build_examples.py --no-log-timestamps --target linux-fake-tests build" | |
- name: Uploading core files | |
uses: actions/upload-artifact@v2 | |
if: ${{ failure() && !env.ACT }} | |
with: | |
name: crash-core-linux | |
path: /tmp/cores/ | |
# Cores are big; don't hold on to them too long. | |
retention-days: 5 | |
- name: Uploading objdir for debugging | |
uses: actions/upload-artifact@v2 | |
if: ${{ failure() && !env.ACT }} | |
with: | |
name: crash-objdir-linux | |
path: out/ | |
# objdirs are big; don't hold on to them too long. | |
retention-days: 5 | |
# TODO Log Upload https://github.com/project-chip/connectedhomeip/issues/2227 | |
# TODO https://github.com/project-chip/connectedhomeip/issues/1512 | |
# - name: Run Code Coverage | |
# if: ${{ contains('main', env.BUILD_TYPE) }} | |
# run: scripts/tools/codecoverage.sh | |
# - name: Upload Code Coverage | |
# if: ${{ contains('main', env.BUILD_TYPE) }} | |
# run: bash <(curl -s https://codecov.io/bash) | |
# - name: Remove third_party binaries for CodeQL Analysis | |
# run: find out -type d -name "third_party" -exec rm -rf {} + | |
# - name: Remove dbus binaries for CodeQL Analysis | |
# run: find out -type d -name "dbus" -exec rm -rf {} + | |
# - name: Remove nrfxlib binaries for CodeQL Analysis | |
# run: find . -type d -name "nrfxlib" -exec rm -rf {} + | |
# - name: Perform CodeQL Analysis | |
# if: ${{ github.event_name == 'push' && github.event.ref == 'refs/heads/master' }} | |
# uses: github/codeql-action/analyze@v1 | |
build_linux_python_lib: | |
name: Build on Linux (python_lib) | |
timeout-minutes: 60 | |
runs-on: ubuntu-latest | |
if: github.actor != 'restyled-io[bot]' | |
container: | |
image: connectedhomeip/chip-build:0.5.91 | |
volumes: | |
- "/tmp/log_output:/tmp/test_logs" | |
options: --sysctl "net.ipv6.conf.all.disable_ipv6=0 | |
net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" | |
steps: | |
- name: Dump GitHub context | |
env: | |
GITHUB_CONTEXT: ${{ toJSON(github) }} | |
run: echo "$GITHUB_CONTEXT" | |
- name: Dump Concurrency context | |
env: | |
CONCURRENCY_CONTEXT: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }} | |
run: echo "$CONCURRENCY_CONTEXT" | |
- uses: Wandalen/[email protected] | |
name: Checkout | |
with: | |
action: actions/checkout@v3 | |
with: | | |
token: ${{ github.token }} | |
attempt_limit: 3 | |
attempt_delay: 2000 | |
- name: Checkout submodules | |
run: scripts/checkout_submodules.py --shallow --platform linux | |
- name: Bootstrap | |
timeout-minutes: 10 | |
run: scripts/build/gn_bootstrap.sh | |
- name: Setup Build, Run Build and Run Tests | |
timeout-minutes: 50 | |
run: | | |
scripts/build/gn_gen.sh --args="enable_rtti=true enable_pylib=true chip_config_memory_debug_checks=false chip_config_memory_debug_dmalloc=false" | |
scripts/run_in_build_env.sh "ninja -C ./out" | |
scripts/tests/gn_tests.sh | |
- name: Run Python library specific unit tests | |
timeout-minutes: 5 | |
run: | | |
scripts/run_in_build_env.sh 'pip3 install ./out/controller/python/chip_core-0.0-cp37-abi3-linux_x86_64.whl' | |
scripts/run_in_build_env.sh 'pip3 install ./out/controller/python/chip_clusters-0.0-py3-none-any.whl' | |
scripts/run_in_build_env.sh 'pip3 install ./out/controller/python/chip_repl-0.0-py3-none-any.whl' | |
scripts/run_in_build_env.sh '(cd src/controller/python/test/unit_tests/ && python3 -m unittest -v)' | |
build_darwin: | |
name: Build on Darwin (clang, python_lib, simulated) | |
timeout-minutes: 200 | |
runs-on: macos-latest | |
if: github.actor != 'restyled-io[bot]' | |
steps: | |
- uses: Wandalen/[email protected] | |
name: Checkout | |
with: | |
action: actions/checkout@v3 | |
with: | | |
token: ${{ github.token }} | |
attempt_limit: 3 | |
attempt_delay: 2000 | |
#- name: Initialize CodeQL | |
# if: ${{ github.event_name == 'push' && github.event.ref == 'refs/heads/master' }} | |
# uses: github/codeql-action/init@v1 | |
# with: | |
# languages: "cpp" | |
- name: Checkout submodules | |
run: scripts/checkout_submodules.py --shallow --platform darwin | |
- name: Setup Environment | |
run: brew install openssl pkg-config | |
- name: Try to ensure the directory for diagnostic log collection exists | |
run: | | |
mkdir -p ~/Library/Logs/DiagnosticReports || true | |
- name: Fix pkgconfig link | |
working-directory: /usr/local/lib/pkgconfig | |
run: | | |
pwd | |
ls -la /usr/local/Cellar/ | |
ls -la /usr/local/Cellar/[email protected] | |
OPEN_SSL_VERSION=`ls -la /usr/local/Cellar/[email protected] | cat | tail -n1 | awk '{print $NF}'` | |
ln -s /usr/local/Cellar/[email protected]/$OPEN_SSL_VERSION/lib/pkgconfig/* . | |
- name: Bootstrap | |
timeout-minutes: 25 | |
run: scripts/build/gn_bootstrap.sh | |
- name: Uploading bootstrap logs | |
uses: actions/upload-artifact@v2 | |
if: ${{ always() && !env.ACT }} | |
with: | |
name: bootstrap-logs | |
path: | | |
.environment/gn_out/.ninja_log | |
.environment/pigweed-venv/*.log | |
- name: Setup and Build Simulated Device | |
timeout-minutes: 20 | |
run: | | |
BUILD_TYPE=simulated | |
GN_ARGS='chip_tests_zap_config="app1" chip_project_config_include_dirs=["../../examples/placeholder/linux/apps/app1/include", "../../config/standalone"] chip_config_network_layer_ble=false' | |
CHIP_ROOT_PATH=examples/placeholder/linux | |
CHIP_ROOT_PATH="$CHIP_ROOT_PATH" BUILD_TYPE="$BUILD_TYPE" scripts/build/gn_gen.sh --args="$GN_ARGS" | |
scripts/run_in_build_env.sh "ninja -C ./out/$BUILD_TYPE" | |
- name: Setup Build, Run Build and Run Tests | |
timeout-minutes: 120 | |
# We can't enable leak checking here in LSAN_OPTIONS, because on | |
# Darwin that's only supported with a new enough clang, and we're | |
# not building with the pigweed clang here. | |
run: | | |
for BUILD_TYPE in default python_lib; do | |
case $BUILD_TYPE in | |
# We want to build various standalone example apps | |
# (similar to what examples-linux-standalone.yaml | |
# does), so use target_os="all" to get those picked | |
# up as part of the "unified" build. But then to | |
# save CI resources we want to exclude the | |
# "host clang" build, which uses the pigweed | |
# clang. | |
"default") GN_ARGS='target_os="all" is_asan=true enable_host_clang_build=false';; | |
"python_lib") GN_ARGS='enable_rtti=true enable_pylib=true';; | |
esac | |
BUILD_TYPE=$BUILD_TYPE scripts/build/gn_gen.sh --args="$GN_ARGS" --export-compile-commands | |
scripts/run_in_build_env.sh "ninja -C ./out/$BUILD_TYPE" | |
BUILD_TYPE=$BUILD_TYPE scripts/tests/gn_tests.sh | |
done | |
- name: Clang-tidy validation | |
timeout-minutes: 45 | |
run: | | |
./scripts/run_in_build_env.sh \ | |
"./scripts/run-clang-tidy-on-compile-commands.py \ | |
--no-log-timestamps \ | |
--compile-database out/default/compile_commands.json \ | |
check \ | |
" | |
- name: Uploading diagnostic logs | |
uses: actions/upload-artifact@v2 | |
if: ${{ failure() && !env.ACT }} | |
with: | |
name: crash-log-darwin | |
path: ~/Library/Logs/DiagnosticReports/ | |
# - name: Perform CodeQL Analysis | |
# if: ${{ github.event_name == 'push' && github.event.ref == 'refs/heads/master' }} | |
# uses: github/codeql-action/analyze@v1 | |
# TODO Log Upload https://github.com/project-chip/connectedhomeip/issues/2227 | |
# TODO https://github.com/project-chip/connectedhomeip/issues/1512 | |
# - name: Run Code Coverage | |
# if: ${{ contains('main', env.BUILD_TYPE) }} | |
# run: scripts/tools/codecoverage.sh | |
# - name: Upload Code Coverage | |
# if: ${{ contains('main', env.BUILD_TYPE) }} | |
# run: bash <(curl -s https://codecov.io/bash) |