From 01006d241f214d422d3bbfc6f9795e59cf7f4535 Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Tue, 12 May 2026 20:23:27 -0700 Subject: [PATCH] [github-actions] combine simulation workflows into simulation.yml (#13097) This commit combines simulation-1.1.yml and simulation-1.4.yml into a single simulation.yml workflow. The combined workflow includes: - ot-commissioner (from 1.1) - simulation-local-host (from 1.1) - channel-manager-csl (from 1.4) - expects (renamed from 1.4's expects) The expects job from 1.1 is removed as requested. The jobs now rely on the project's default THREAD_VERSION instead of explicitly setting it in the environment. Artifact naming is updated to ensure unique coverage files are generated and correctly merged by the unified upload-coverage job. --- .github/workflows/simulation-1.4.yml | 177 ------------------ .../{simulation-1.1.yml => simulation.yml} | 155 +++++++++------ 2 files changed, 101 insertions(+), 231 deletions(-) delete mode 100644 .github/workflows/simulation-1.4.yml rename .github/workflows/{simulation-1.1.yml => simulation.yml} (78%) diff --git a/.github/workflows/simulation-1.4.yml b/.github/workflows/simulation-1.4.yml deleted file mode 100644 index 9fba92ea6..000000000 --- a/.github/workflows/simulation-1.4.yml +++ /dev/null @@ -1,177 +0,0 @@ -# -# Copyright (c) 2020, The OpenThread Authors. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. Neither the name of the copyright holder nor the -# names of its contributors may be used to endorse or promote products -# derived from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# - -name: Simulation 1.4 - -on: - push: - branches-ignore: - - 'dependabot/**' - pull_request: - branches: - - 'main' - -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || (github.repository == 'openthread/openthread' && github.run_id) || github.ref }} - cancel-in-progress: true - -permissions: # added using https://github.com/step-security/secure-workflows - contents: read - -jobs: - - channel-manager-csl: - runs-on: ubuntu-24.04 - env: - CFLAGS: -m32 - CXXFLAGS: -m32 - LDFLAGS: -m32 - COVERAGE: 1 - THREAD_VERSION: 1.4 - VIRTUAL_TIME: 1 - OT_VT_USE_UNIX_SOCKET: 1 - steps: - - name: Harden Runner - uses: step-security/harden-runner@5ef0c079ce82195b2a36a210272d6b661572d83e # v2.14.2 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - with: - submodules: recursive - - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 - with: - python-version: '3.12' - cache: pip - - name: Bootstrap - run: | - sudo apt-get update - sudo apt-get --no-install-recommends install -y g++-multilib lcov ninja-build - python3 -m pip install -r tests/scripts/thread-cert/requirements.txt - - name: Build - run: | - OT_OPTIONS="-DOT_CHANNEL_MANAGER_CSL=ON" ./script/test build - - name: Run - run: | - ulimit -c unlimited - ./script/test cert_suite ./tests/scripts/thread-cert/addon_test_channel_manager_autocsl*.py - - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - if: ${{ failure() }} - with: - name: channel-manager-csl - path: ot_testing - - name: Generate Coverage - run: | - ./script/test generate_coverage gcc - - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: cov-channel-manager-csl - path: tmp/coverage.info - retention-days: 1 - - expects: - runs-on: ubuntu-24.04 - env: - COVERAGE: 1 - THREAD_VERSION: 1.4 - VIRTUAL_TIME: 0 - steps: - - name: Harden Runner - uses: step-security/harden-runner@5ef0c079ce82195b2a36a210272d6b661572d83e # v2.14.2 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - with: - submodules: recursive - - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 - with: - python-version: '3.12' - cache: pip - - name: Bootstrap - run: | - sudo apt-get --no-install-recommends install -y expect ninja-build lcov - sudo bash script/install_socat - pip install bleak 'cryptography==43.0.0' - - name: Run RCP Mode - run: | - ulimit -c unlimited - ./script/test prepare_coredump_upload - OT_OPTIONS=-DOT_READLINE=OFF OT_NODE_TYPE=rcp ./script/test build expect - - name: Check Crash - if: ${{ failure() }} - run: | - CRASHED=$(./script/test check_crash | tail -1) - [[ $CRASHED -eq "1" ]] && echo "Crashed!" || echo "Not crashed." - echo "CRASHED=$CRASHED" >> $GITHUB_ENV - - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - if: ${{ failure() && env.CRASHED == '1' }} - with: - name: core-expect-1-4 - path: | - ./ot-core-dump/* - - name: Generate Coverage - run: | - ./script/test generate_coverage gcc - - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: cov-expects - path: tmp/coverage.info - retention-days: 1 - - upload-coverage: - needs: - - expects - runs-on: ubuntu-22.04 - steps: - - name: Harden Runner - uses: step-security/harden-runner@5ef0c079ce82195b2a36a210272d6b661572d83e # v2.14.2 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - with: - submodules: recursive - - name: Bootstrap - run: | - sudo apt-get --no-install-recommends install -y lcov - - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 - with: - path: coverage/ - pattern: cov-* - merge-multiple: true - - name: Combine Coverage - run: | - script/test combine_coverage - - name: Upload Coverage - uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2 - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - with: - files: final.info - fail_ci_if_error: true diff --git a/.github/workflows/simulation-1.1.yml b/.github/workflows/simulation.yml similarity index 78% rename from .github/workflows/simulation-1.1.yml rename to .github/workflows/simulation.yml index 8ff3c2b2c..340b350e3 100644 --- a/.github/workflows/simulation-1.1.yml +++ b/.github/workflows/simulation.yml @@ -26,7 +26,7 @@ # POSSIBILITY OF SUCH DAMAGE. # -name: Simulation 1.1 +name: Simulation on: push: @@ -45,60 +45,8 @@ permissions: jobs: - expects: - runs-on: ubuntu-24.04 - env: - CFLAGS: -DCLI_COAP_SECURE_USE_COAP_DEFAULT_HANDLER=1 -DOPENTHREAD_CONFIG_MLE_MAX_CHILDREN=15 - CXXFLAGS: -DCLI_COAP_SECURE_USE_COAP_DEFAULT_HANDLER=1 -DOPENTHREAD_CONFIG_MLE_MAX_CHILDREN=15 - THREAD_VERSION: 1.1 - steps: - - name: Harden Runner - uses: step-security/harden-runner@5ef0c079ce82195b2a36a210272d6b661572d83e # v2.14.2 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - with: - submodules: recursive - - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 - with: - python-version: '3.12' - cache: pip - - name: Bootstrap - run: | - sudo apt-get --no-install-recommends install -y expect ninja-build lcov - sudo bash script/install_socat - pip install bleak 'cryptography==43.0.0' - - name: Run - run: | - ulimit -c unlimited - ./script/test prepare_coredump_upload - OT_OPTIONS='-DOT_TIME_SYNC=ON -DOT_FULL_LOGS=ON -DOT_LOG_OUTPUT=PLATFORM_DEFINED' VIRTUAL_TIME=0 ./script/test build expect - - name: Check Crash - if: ${{ failure() }} - run: | - CRASHED=$(./script/test check_crash | tail -1) - [[ $CRASHED -eq "1" ]] && echo "Crashed!" || echo "Not crashed." - echo "CRASHED_CLI=$CRASHED" >> $GITHUB_ENV - - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - if: ${{ failure() && env.CRASHED_CLI == '1' }} - with: - name: core-expect-cli - path: | - ./ot-core-dump/* - - name: Generate Coverage - run: | - ./script/test generate_coverage gcc - - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: cov-expects - path: tmp/coverage.info - retention-days: 1 - ot-commissioner: runs-on: ubuntu-24.04 - env: - THREAD_VERSION: 1.1 steps: - name: Harden Runner uses: step-security/harden-runner@5ef0c079ce82195b2a36a210272d6b661572d83e # v2.14.2 @@ -177,10 +125,109 @@ jobs: path: tmp/coverage.info retention-days: 1 + channel-manager-csl: + runs-on: ubuntu-24.04 + env: + CFLAGS: -m32 + CXXFLAGS: -m32 + LDFLAGS: -m32 + COVERAGE: 1 + VIRTUAL_TIME: 1 + OT_VT_USE_UNIX_SOCKET: 1 + steps: + - name: Harden Runner + uses: step-security/harden-runner@5ef0c079ce82195b2a36a210272d6b661572d83e # v2.14.2 + with: + egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs + + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + with: + submodules: recursive + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 + with: + python-version: '3.12' + cache: pip + - name: Bootstrap + run: | + sudo apt-get update + sudo apt-get --no-install-recommends install -y g++-multilib lcov ninja-build + python3 -m pip install -r tests/scripts/thread-cert/requirements.txt + - name: Build + run: | + OT_OPTIONS="-DOT_CHANNEL_MANAGER_CSL=ON" ./script/test build + - name: Run + run: | + ulimit -c unlimited + ./script/test cert_suite ./tests/scripts/thread-cert/addon_test_channel_manager_autocsl*.py + - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + if: ${{ failure() }} + with: + name: channel-manager-csl + path: ot_testing + - name: Generate Coverage + run: | + ./script/test generate_coverage gcc + - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: cov-channel-manager-csl + path: tmp/coverage.info + retention-days: 1 + + expects: + runs-on: ubuntu-24.04 + env: + COVERAGE: 1 + VIRTUAL_TIME: 0 + steps: + - name: Harden Runner + uses: step-security/harden-runner@5ef0c079ce82195b2a36a210272d6b661572d83e # v2.14.2 + with: + egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs + + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + with: + submodules: recursive + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 + with: + python-version: '3.12' + cache: pip + - name: Bootstrap + run: | + sudo apt-get --no-install-recommends install -y expect ninja-build lcov + sudo bash script/install_socat + pip install bleak 'cryptography==43.0.0' + - name: Run RCP Mode + run: | + ulimit -c unlimited + ./script/test prepare_coredump_upload + OT_OPTIONS=-DOT_READLINE=OFF OT_NODE_TYPE=rcp ./script/test build expect + - name: Check Crash + if: ${{ failure() }} + run: | + CRASHED=$(./script/test check_crash | tail -1) + [[ $CRASHED -eq "1" ]] && echo "Crashed!" || echo "Not crashed." + echo "CRASHED=$CRASHED" >> $GITHUB_ENV + - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + if: ${{ failure() && env.CRASHED == '1' }} + with: + name: core-expect + path: | + ./ot-core-dump/* + - name: Generate Coverage + run: | + ./script/test generate_coverage gcc + - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: cov-expects + path: tmp/coverage.info + retention-days: 1 + upload-coverage: needs: - - expects - ot-commissioner + - simulation-local-host + - channel-manager-csl + - expects runs-on: ubuntu-22.04 steps: - name: Harden Runner