Skip to content

Commit

Permalink
Update README and separate ci by platform (#160)
Browse files Browse the repository at this point in the history
Signed-off-by: Raul Sanchez-Mateos <raul@eprosima.com>
  • Loading branch information
rsanchez15 authored Oct 8, 2024
1 parent c85e9cd commit 7b209d0
Show file tree
Hide file tree
Showing 8 changed files with 477 additions and 224 deletions.
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
# Nightly test workflow for DDS Record & Replay
name: nightly
name: nightly-ubuntu-ci

on:
workflow_dispatch:

schedule:
- cron: '0 5 * * *'

jobs:

reusable_tests_v2:
name: reusable_tests_v2
uses: ./.github/workflows/reusable-workflow.yml
uses: ./.github/workflows/reusable-ubuntu-ci.yml
with:
custom_version_build: 'v2'
dependencies_artifact_postfix: '_nightly'
Expand All @@ -18,7 +20,7 @@ jobs:

reusable_tests_v3:
name: reusable_tests_v3
uses: ./.github/workflows/reusable-workflow.yml
uses: ./.github/workflows/reusable-ubuntu-ci.yml
with:
custom_version_build: 'v3'
dependencies_artifact_postfix: '_nightly'
Expand Down
28 changes: 28 additions & 0 deletions .github/workflows/nightly-windows-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Nightly test workflow for DDS Record & Replay
name: nightly-windows-ci

on:
workflow_dispatch:

schedule:
- cron: '0 5 * * *'

jobs:

reusable_tests_v2:
name: reusable_tests_v2
uses: ./.github/workflows/reusable-windows-ci.yml
with:
custom_version_build: 'v2'
dependencies_artifact_postfix: '_nightly'
ref: '0.x'
secrets: inherit

reusable_tests_v3:
name: reusable_tests_v3
uses: ./.github/workflows/reusable-windows-ci.yml
with:
custom_version_build: 'v3'
dependencies_artifact_postfix: '_nightly'
ref: 'main'
secrets: inherit
295 changes: 295 additions & 0 deletions .github/workflows/reusable-ubuntu-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,295 @@
# Reusable workflow to run the following jobs:
#
# - multiplatform-tests
# - [ ubuntu-22.04 | ubuntu-24.04 ]
# - [ Debug | Release ]
# - execute tests in different versions of ubuntu with different build types
#
# - asan
# - ubuntu-22.04
# - execute tests with ASAN flag
#
# - tsan
# - ubuntu-22.04
# - execute tests with TSAN flag
#
# - clang
# - ubuntu-22.04
# - execute clang-tidy check
#
# - coverage
# - ubuntu-22.04
# - execute test with coverage flag and upload results
#
# - flaky
# - ubuntu-22.04
# - execute flaky tests
#
# - docs
# - ubuntu-22.04
# - execute docs compile and tests
#
# - uncrustify
# - ubuntu-22.04
# - test uncrustify
#
# - python-linter
# - ubuntu-22.04
# - test python linter
#

name: ubuntu-ci

on:

workflow_dispatch:
workflow_call:
inputs:

custom_version_build:
description: >
Version of Fast DDS build from eProsima-CI.
required: true
type: string

dependencies_artifact_postfix:
description: >
Postfix name to add to artifact name to download dependencies.
This is use to download a specific artifact version from eProsima-CI.
required: true
default: '_nightly'
type: string

ref:
description: >
The branch or tag name to checkout.
required: true
type: string
default: 'main'

env:
# TODO: controller is not tested as it has no tests
code_packages_names: 'ddsrecorder_participants ddsrecorder_yaml ddsrecorder_tool ddsreplayer_tool'
docs_packages_names: 'ddsrecorder_docs'

jobs:

#####################################################################
# TEST

multiplatform-tests:
runs-on: ${{ matrix.os }}-ci
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04
- ubuntu-24.04
uses: ./.github/workflows/reusable-workflow.yml
with:
os: ${{ matrix.os }}
custom_version_build: ${{ inputs.custom_version_build || 'v3' }}
dependencies_artifact_postfix: ${{ inputs.dependencies_artifact_postfix || '_nightly' }}
ref: ${{ inputs.ref }}
secrets: inherit



#####################################################################
# ASAN

asan:
runs-on: ubuntu-22.04
steps:

- name: Sync repository
uses: eProsima/eProsima-CI/external/checkout@v0
with:
path: src
ref: ${{ inputs.ref }}

- name: Download dependencies and install requirements
uses: ./src/.github/actions/project_dependencies
with:
os: ubuntu-22.04
cmake_build_type: Debug
custom_version_build: ${{ inputs.custom_version_build }}
dependencies_artifact_postfix: ${{ inputs.dependencies_artifact_postfix }}
secret_token: ${{ secrets.GITHUB_TOKEN }}

- name: Compile and run tests
uses: eProsima/eProsima-CI/multiplatform/colcon_build_test@v0
with:
packages_names: ${{ env.code_packages_names }}
workspace_dependencies: './install'
cmake_build_type: Debug
cmake_args: -DBUILD_TESTS=ON -DASAN_BUILD=ON
ctest_args: --label-exclude "xfail|xasan"
test_report_artifact: test_report_asan${{ inputs.dependencies_artifact_postfix }}_${{ inputs.custom_version_build }}


#####################################################################
# TSAN

tsan:
runs-on: ubuntu-22.04
steps:

- name: Sync repository
uses: eProsima/eProsima-CI/external/checkout@v0
with:
path: src
ref: ${{ inputs.ref }}

- name: Download dependencies and install requirements
uses: ./src/.github/actions/project_dependencies
with:
os: ubuntu-22.04
cmake_build_type: Debug
custom_version_build: ${{ inputs.custom_version_build }}
dependencies_artifact_postfix: ${{ inputs.dependencies_artifact_postfix }}
secret_token: ${{ secrets.GITHUB_TOKEN }}

- name: Compile and run tests
uses: eProsima/eProsima-CI/multiplatform/colcon_build_test@v0
env:
# GCC 11.3 (Ubuntu Jammy default) produces several false positives regarding timed synchronization protocols
# These issues were fixed in GCC 12 so we upgrade to that version.
CC: gcc-12
CXX: g++-12
with:
packages_names: ${{ env.code_packages_names }}
workspace_dependencies: './install'
cmake_build_type: Debug
cmake_args: -DBUILD_TESTS=ON -DTSAN_BUILD=ON
ctest_args: --label-exclude "xfail|xtsan"
test_report_artifact: test_report_tsan${{ inputs.dependencies_artifact_postfix }}_${{ inputs.custom_version_build }}


#####################################################################
# CLANG

clang:
runs-on: ubuntu-22.04
steps:

- name: Sync repository
uses: eProsima/eProsima-CI/external/checkout@v0
with:
path: src
ref: ${{ inputs.ref }}

- name: Download dependencies and install requirements
uses: ./src/.github/actions/project_dependencies
with:
os: ubuntu-22.04
cmake_build_type: Debug
custom_version_build: ${{ inputs.custom_version_build }}
dependencies_artifact_postfix: ${{ inputs.dependencies_artifact_postfix }}
secret_token: ${{ secrets.GITHUB_TOKEN }}

- name: Compile and run tests
uses: eProsima/eProsima-CI/multiplatform/clang_build_test@v0
with:
packages_names: ${{ env.code_packages_names }}
workspace_dependencies: './install'


#####################################################################
# COVERAGE

coverage:
runs-on: ubuntu-22.04
environment:
name: codecov
steps:

- name: Sync repository
uses: eProsima/eProsima-CI/external/checkout@v0
with:
path: src
ref: ${{ inputs.ref }}

- name: Download dependencies and install requirements
uses: ./src/.github/actions/project_dependencies
with:
os: ubuntu-22.04
cmake_build_type: Release
custom_version_build: ${{ inputs.custom_version_build }}
dependencies_artifact_postfix: ${{ inputs.dependencies_artifact_postfix }}
secret_token: ${{ secrets.GITHUB_TOKEN }}

- name: Compile and run tests
uses: eProsima/eProsima-CI/ubuntu/coverage_build_test_upload@v0
with:
packages_names: ${{ env.code_packages_names }}
workspace_dependencies: './install'
codecov_token: ${{ secrets.CODECOV_TOKEN }}
codecov_fix_file_path: ./src/codecov.yml
test_report_artifact: test_report_coverage${{ inputs.dependencies_artifact_postfix }}_${{ inputs.custom_version_build }}


#####################################################################
# FLAKY

flaky:
runs-on: ubuntu-22.04
steps:

- name: Sync repository
uses: eProsima/eProsima-CI/external/checkout@v0
with:
path: src
ref: ${{ inputs.ref }}

- name: Download dependencies and install requirements
uses: ./src/.github/actions/project_dependencies
with:
os: ubuntu-22.04
cmake_build_type: Release
custom_version_build: ${{ inputs.custom_version_build }}
dependencies_artifact_postfix: ${{ inputs.dependencies_artifact_postfix }}
secret_token: ${{ secrets.GITHUB_TOKEN }}

- name: Compile and run tests
uses: eProsima/eProsima-CI/multiplatform/colcon_build_test_flaky@v0
with:
packages_names: ${{ env.code_packages_names }}
workspace_dependencies: './install'


#####################################################################
# DOCUMENTATION TEST

docs:
runs-on: ubuntu-22.04
steps:
- name: Build and test documentation
uses: eProsima/eProsima-CI/ubuntu/sphinx_docs@main
with:
checkout_path: "${{ github.workspace }}/src/ddsrecordreplay"
path_to_requirements: "${{ github.workspace }}/src/ddsrecordreplay/docs/requirements.txt"
docs_subpackage_name: ${{ env.docs_packages_names }}
secret_token: ${{ secrets.GITHUB_TOKEN }}


#####################################################################
# UNCRUSTIFY

uncrustify:
runs-on: ubuntu-22.04
steps:

- name: Uncrustify
uses: eProsima/eProsima-CI/ubuntu/uncrustify@v0


#####################################################################
# PYTHON LINTER

python-linter:
runs-on: ubuntu-22.04
steps:

- name: Python Linter
uses: eProsima/eProsima-CI/ubuntu/python_linter@v0
Loading

0 comments on commit 7b209d0

Please sign in to comment.