Skip to content

Merge pull request #2369 from lalten/iox-#2368 #8665

Merge pull request #2369 from lalten/iox-#2368

Merge pull request #2369 from lalten/iox-#2368 #8665

Workflow file for this run

# This workflow builds & runs test cases in iceoryx
name: Build & Test
# Triggers the workflow on push or pull request events but only for the main branch
on:
push:
branches: [ main ]
pull_request:
branches: [ main, release*, iox-* ]
jobs:
pre-flight-check:
# prevent stuck jobs consuming runners for 6 hours
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install iceoryx dependencies and clang-tidy
uses: ./.github/actions/install-iceoryx-deps-and-clang
- run: ./tools/scripts/clang_format.sh check
- run: ./tools/scripts/check_test_ids.sh
- run: ./tools/scripts/check_invalid_characters.sh
- run: ./tools/scripts/check_atomic_usage.sh
- run: ./tools/ci/cmake-linter.sh
check-status-of-nightly-action:
runs-on: ubuntu-latest
needs: pre-flight-check
steps:
- name: Install dependencies
run: |
sudo apt update
sudo apt install -y jq
- name: Check nightly action status
run: |
COLOR_OFF='\033[0m'
COLOR_RED='\033[1;31m'
COLOR_GREEN='\033[1;32m'
COLOR_YELLOW='\033[1;33m'
LAST_RUN_STATUS=$(curl -s "https://api.github.com/repos/eclipse-iceoryx/iceoryx/actions/workflows/nightly.yml/runs" | jq -r '.workflow_runs[0].conclusion')
if [[ "${LAST_RUN_STATUS}" == "success" ]]; then
echo -e "Last nightly run status: ${COLOR_GREEN}${LAST_RUN_STATUS}${COLOR_OFF}"
else
echo -e "Last nightly run status: ${COLOR_RED}${LAST_RUN_STATUS}${COLOR_OFF}"
echo -e "${COLOR_RED}Error! The nightly workflow failed on the last run. Please check and fix the nightly workflow before merging this PR.${COLOR_OFF}"
echo -e "${COLOR_YELLOW}You can trigger the nightly workflow manually from 'https://github.com/eclipse-iceoryx/iceoryx/actions/workflows/nightly.yml'.${COLOR_OFF}"
echo -e "${COLOR_YELLOW}Just look for the 'Run workflow' button. The branch where the workflow shall run can also be selected.${COLOR_OFF}"
exit 1
fi
build-test-ubuntu:
# prevent stuck jobs consuming runners for 6 hours
timeout-minutes: 60
runs-on: ubuntu-20.04
needs: pre-flight-check
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install iceoryx dependencies and clang-tidy
uses: ./.github/actions/install-iceoryx-deps-and-clang
- name: Setup GCC
uses: egor-tensin/[email protected]
with:
# gcc 8.3 is compiler used in QNX 7.1
version: 8
platform: x64
- name: Setup cmake
uses: jwlawson/[email protected]
with:
cmake-version: '3.16.3' # version used in Ubuntu 20.04 LTS
- run: ./tools/ci/build-test-ubuntu.sh
build-test-windows-msvc:
# prevent stuck jobs consuming runners for 6 hours
timeout-minutes: 60
runs-on: windows-latest
needs: pre-flight-check
steps:
- uses: actions/checkout@v4
- run: ./tools/ci/build-test-windows.ps1 -toolchain MSVC
shell: powershell
build-test-windows-mingw:
# prevent stuck jobs consuming runners for 6 hours
timeout-minutes: 60
runs-on: windows-latest
needs: pre-flight-check
steps:
- uses: actions/checkout@v4
- uses: egor-tensin/setup-mingw@v2
with:
version: 10.3
platform: x64
- run: ./tools/ci/build-test-windows.ps1 -toolchain MinGW
shell: powershell
# uses ubuntu to run freebsd in a virtualbox
build-test-unix-with-freebsd:
# prevent stuck jobs consuming runners for 6 hours
timeout-minutes: 60
needs: pre-flight-check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Unix (FreeBSD) test
id: Test
uses: vmactions/freebsd-vm@v1
with:
release: "14.0"
copyback: false
prepare: pkg install -y cmake git ncurses bash wget bison
run: |
git config --global --add safe.directory /home/runner/work/iceoryx/iceoryx
./tools/ci/build-test-freebsd.sh
run-integration-test:
# prevent stuck jobs consuming runners for 6 hours
timeout-minutes: 60
runs-on: ubuntu-22.04
needs: pre-flight-check
steps:
- name: Setup ROS
uses: ros-tooling/[email protected]
with:
required-ros-distributions: humble
- uses: actions/checkout@v4
- run: ./tools/ci/run-integration-test.sh
build-test-ubuntu-with-address-sanitizer-gcc-latest:
# prevent stuck jobs consuming runners for 1 hour
timeout-minutes: 60
runs-on: ubuntu-latest
needs: pre-flight-check
steps:
- uses: egor-tensin/[email protected]
with:
version: 13
platform: x64
- uses: actions/checkout@v4
- name: Run Address Sanitizer
run: ./tools/ci/build-test-ubuntu-with-sanitizers.sh gcc asan
build-test-ubuntu-with-address-sanitizer-clang-latest:
# prevent stuck jobs consuming runners for 1 hour
timeout-minutes: 60
runs-on: ubuntu-latest
needs: pre-flight-check
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install iceoryx dependencies and clang-tidy
uses: ./.github/actions/install-iceoryx-deps-and-clang
- name: Run Address Sanitizer
run: ./tools/ci/build-test-ubuntu-with-sanitizers.sh clang asan
build-test-macos-with-address-sanitizer:
# prevent stuck jobs consuming runners for 1 hour
timeout-minutes: 60
runs-on: macos-latest
needs: pre-flight-check
steps:
- uses: actions/checkout@v4
- name: Run Address Sanitizer
run: ./tools/ci/build-test-macos-with-sanitizers.sh asan
build-test-ubuntu-with-thread-sanitizer-clang-latest:
# prevent stuck jobs consuming runners for 3 hours
timeout-minutes: 180
runs-on: ubuntu-latest
needs: pre-flight-check
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install iceoryx dependencies and clang-tidy
uses: ./.github/actions/install-iceoryx-deps-and-clang
- name: Run Thread Sanitizer
run: ./tools/ci/build-test-ubuntu-with-sanitizers.sh clang tsan
build-test-ubuntu-32-bit:
# prevent stuck jobs consuming runners for 6 hours
timeout-minutes: 60
runs-on: ubuntu-latest
needs: pre-flight-check
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install iceoryx dependencies and clang-tidy
uses: ./.github/actions/install-iceoryx-deps-and-clang
- run: ./tools/ci/build-test-ubuntu.sh 32-bit-x86
build-test-ubuntu-32-64-bit-mix-mode:
# prevent stuck jobs consuming runners for 6 hours
timeout-minutes: 60
runs-on: ubuntu-latest
needs: pre-flight-check
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install iceoryx dependencies and clang-tidy
uses: ./.github/actions/install-iceoryx-deps-and-clang
- run: ./tools/ci/build-test-32-64-bit-mix-mode.sh
# Bazel sanity check
build-test-ubuntu-bazel:
# prevent stuck jobs consuming runners for 6 hours
timeout-minutes: 60
runs-on: ubuntu-latest
needs: pre-flight-check
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install iceoryx dependencies and clang-tidy
uses: ./.github/actions/install-iceoryx-deps-and-clang
- run: ./tools/ci/build-test-ubuntu-bazel.sh
coverage-and-docs:
# prevent stuck jobs consuming runners for 6 hours
timeout-minutes: 60
runs-on: ubuntu-22.04
needs: pre-flight-check
steps:
- uses: actions/checkout@v4
- run: ./tools/ci/coverage-and-docs.sh
- name: Archive generated doxygen
uses: actions/upload-artifact@v4
with:
name: iceoryx-pdf
path: |
./build/doc/*.pdf
retention-days: 30
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
file: ./lcov_results/unittest/lcov/iceoryx_lcov_result_unit.info
name: iceoryx
flags: unittests
fail_ci_if_error: false
token: ${{ secrets.CODECOV_TOKEN }}
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
file: ./lcov_results/unittest_timing/lcov/iceoryx_lcov_result_unit-timing.info
name: iceoryx
flags: unittests_timing
fail_ci_if_error: false
token: ${{ secrets.CODECOV_TOKEN }}