From f06911ea3b2fa2fd7e56199465d61bca9ae9eb6e Mon Sep 17 00:00:00 2001 From: Eduardo Ponz Segrelles Date: Thu, 29 Feb 2024 11:10:55 +0100 Subject: [PATCH 1/5] Add nightly Ubuntu Github CI (#4109) * Refs #17513: Add github actions Ubuntu CI Signed-off-by: EduPonz * Refs #17513: Do not update /etc/hosts as we don't have permissions Signed-off-by: EduPonz * Refs #17513: Correctly name job Signed-off-by: EduPonz * Refs #17513: Install python packages without sudo Signed-off-by: EduPonz * Refs #17513: Only run Ubuntu CI nightly, and do it in 22.04 Signed-off-by: EduPonz * DROP: Add push event for testing the workflow Signed-off-by: EduPonz * Revert "DROP: Add push event for testing the workflow" This reverts commit 5b27c03c0df138b3fa1947f07df2ccc5edbed60d. --------- Signed-off-by: EduPonz (cherry picked from commit b656a176cbf2e9afbd5dad9813e7d3db1ec81604) --- .github/workflows/nightly-ubuntu-ci.yml | 23 ++++ .github/workflows/reusable-ubuntu-ci.yml | 144 +++++++++++++++++++++++ 2 files changed, 167 insertions(+) create mode 100644 .github/workflows/nightly-ubuntu-ci.yml create mode 100644 .github/workflows/reusable-ubuntu-ci.yml diff --git a/.github/workflows/nightly-ubuntu-ci.yml b/.github/workflows/nightly-ubuntu-ci.yml new file mode 100644 index 00000000000..4784cb8808c --- /dev/null +++ b/.github/workflows/nightly-ubuntu-ci.yml @@ -0,0 +1,23 @@ +name: Fast-DDS Ubuntu CI (nightly) + +on: + workflow_dispatch: + schedule: + - cron: '0 1 * * *' + +jobs: + nightly-sec-ubuntu-ci: + + strategy: + fail-fast: false + matrix: + os-image: + - 'ubuntu-22.04' + + uses: ./.github/workflows/reusable-ubuntu-ci.yml + with: + os-image: ${{ matrix.os-image }} + label: '${{ matrix.os-image }}-nightly-sec-ubuntu-ci' + cmake-args: "-DSECURITY=ON" + ctest-args: "-LE xfail" + fastdds-branch: 'master' diff --git a/.github/workflows/reusable-ubuntu-ci.yml b/.github/workflows/reusable-ubuntu-ci.yml new file mode 100644 index 00000000000..7ea382d4972 --- /dev/null +++ b/.github/workflows/reusable-ubuntu-ci.yml @@ -0,0 +1,144 @@ +name: Fast-DDS Ubuntu CI reusable workflow + +on: + workflow_call: + inputs: + os-image: + description: 'The OS image for the workflow' + required: true + type: string + label: + description: 'ID associated to the workflow' + required: true + type: string + colcon-args: + description: 'Extra arguments for colcon cli' + required: false + type: string + cmake-args: + description: 'Extra arguments for cmake cli' + required: false + type: string + ctest-args: + description: 'Extra arguments for ctest cli' + required: false + type: string + fastdds-branch: + description: 'Branch or tag of Fast DDS repository (https://github.com/eProsima/Fast-DDS)' + required: true + type: string + +defaults: + run: + shell: bash + +jobs: + reusable-ubuntu-ci: + runs-on: ${{ inputs.os-image }} + if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip-ci') }} + strategy: + fail-fast: false + matrix: + cmake-build-type: + - 'RelWithDebInfo' + steps: + - name: Sync eProsima/Fast-DDS repository + uses: eProsima/eProsima-CI/external/checkout@v0 + with: + path: src/fastrtps + ref: ${{ inputs.fastdds-branch }} + + - name: Get minimum supported version of CMake + uses: lukka/get-cmake@latest + with: + cmakeVersion: '3.22.6' + + - name: Install apt dependencies + uses: eProsima/eProsima-CI/ubuntu/install_apt_packages@v0 + with: + packages: libasio-dev libtinyxml2-dev libssl-dev + update: false + upgrade: false + + - name: Install colcon + uses: eProsima/eProsima-CI/ubuntu/install_colcon@v0 + + - name: Install Python dependencies + uses: eProsima/eProsima-CI/multiplatform/install_python_packages@v0 + with: + packages: vcstool xmlschema + upgrade: false + + - name: Setup CCache + uses: eProsima/eProsima-CI/external/setup-ccache-action@v0 + + # TODO(eduponz): Update known hosts file for DNS resolver testing. NOTE: The runner cannot modify /etc/hosts. + # TODO(eduponz): Set up libp11 and SoftHSM. NOTE: using SoftHSM requires adding the runner to a group, + # which entails logout/login or rebooting the machine. This is not feasible in a CI environment. + + - name: Prepare colcon workspace + id: colcon_ws_setup + run: | + # Nightly job + if [[ "${{ inputs.label }}" == *"nightly"* ]] + then + DEPENDS_REPOS_PATH="./src/fastrtps/.github/workflows/config/nightly_${{ inputs.fastdds-branch }}.repos" + if [ ! -f ${DEPENDS_REPOS_PATH} ] + then + DEPENDS_REPOS_PATH="./src/fastrtps/.github/workflows/config/nightly_master.repos" + fi + META_PATH="./src/fastrtps/.github/workflows/config/nightly.meta" + + # Either PR or manual + else + DEPENDS_REPOS_PATH="./src/fastrtps/.github/workflows/config/default_ci_${{ inputs.fastdds-branch }}.repos" + if [ ! -f ${DEPENDS_REPOS_PATH} ] + then + DEPENDS_REPOS_PATH="./src/fastrtps/.github/workflows/config/default_ci_master.repos" + fi + META_PATH="./src/fastrtps/.github/workflows/config/default_ci.meta" + fi + + echo "Selected repos files: ${DEPENDS_REPOS_PATH}" + cat ${DEPENDS_REPOS_PATH} + + echo "Selected metas files: ${META_PATH}" + cp ${META_PATH} ci.meta + cat ci.meta + + # Create source dir and download the sources + vcs import src --input ${DEPENDS_REPOS_PATH} --skip-existing + + - name: Colcon build + continue-on-error: false + uses: eProsima/eProsima-CI/multiplatform/colcon_build@v0 + with: + colcon_meta_file: ${{ github.workspace }}/ci.meta + colcon_build_args: ${{ inputs.colcon-args }} + cmake_args: ${{ inputs.cmake-args }} + cmake_args_default: -DCMAKE_CXX_FLAGS="-Werror -Wall" + cmake_build_type: ${{ matrix.cmake-build-type }} + workspace: ${{ github.workspace }} + + - name: Colcon test + id: test + if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-test') }} + uses: eProsima/eProsima-CI/multiplatform/colcon_test@v0 + with: + colcon_test_args: ${{ inputs.colcon-args }} + colcon_test_args_default: --event-handlers=console_direct+ + ctest_args: ${{ inputs.ctest-args }} + ctest_args_default: --repeat until-pass:3 --timeout 300 --label-exclude "xfail" + packages_names: fastrtps + workspace: ${{ github.workspace }} + test_report_artifact: ${{ format('test_report_{0}_{1}_{2}', inputs.label, github.job, join(matrix.*, '_')) }} + + - name: Test summary + uses: eProsima/eProsima-CI/multiplatform/junit_summary@v0 + if: ${{ !cancelled() && !contains(github.event.pull_request.labels.*.name, 'no-test') }} + with: + junit_reports_dir: "${{ steps.test.outputs.ctest_results_path }}" + print_summary: 'True' + show_failed: 'True' + show_disabled: 'False' + show_skipped: 'False' From 3116df020a8d5168a56c1f7cd6cd5f78b3545e36 Mon Sep 17 00:00:00 2001 From: elianalf <62831776+elianalf@users.noreply.github.com> Date: Tue, 5 Mar 2024 09:56:32 +0100 Subject: [PATCH 2/5] Change default branch to 2.12.x Signed-off-by: elianalf <62831776+elianalf@users.noreply.github.com> --- .github/workflows/nightly-ubuntu-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/nightly-ubuntu-ci.yml b/.github/workflows/nightly-ubuntu-ci.yml index 4784cb8808c..3f744c0edc1 100644 --- a/.github/workflows/nightly-ubuntu-ci.yml +++ b/.github/workflows/nightly-ubuntu-ci.yml @@ -20,4 +20,4 @@ jobs: label: '${{ matrix.os-image }}-nightly-sec-ubuntu-ci' cmake-args: "-DSECURITY=ON" ctest-args: "-LE xfail" - fastdds-branch: 'master' + fastdds-branch: '2.12.x' From d45466c7be13d8542bc5c35c648cd858805f8e22 Mon Sep 17 00:00:00 2001 From: JesusPoderoso Date: Tue, 5 Mar 2024 12:52:51 +0100 Subject: [PATCH 3/5] Refs #20542: Refactor nightly workflow to be wd (workflow dispatch) only Signed-off-by: JesusPoderoso --- .github/workflows/nightly-ubuntu-ci.yml | 23 ------------- .github/workflows/ubuntu-ci.yml | 43 +++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 23 deletions(-) delete mode 100644 .github/workflows/nightly-ubuntu-ci.yml create mode 100644 .github/workflows/ubuntu-ci.yml diff --git a/.github/workflows/nightly-ubuntu-ci.yml b/.github/workflows/nightly-ubuntu-ci.yml deleted file mode 100644 index 4784cb8808c..00000000000 --- a/.github/workflows/nightly-ubuntu-ci.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Fast-DDS Ubuntu CI (nightly) - -on: - workflow_dispatch: - schedule: - - cron: '0 1 * * *' - -jobs: - nightly-sec-ubuntu-ci: - - strategy: - fail-fast: false - matrix: - os-image: - - 'ubuntu-22.04' - - uses: ./.github/workflows/reusable-ubuntu-ci.yml - with: - os-image: ${{ matrix.os-image }} - label: '${{ matrix.os-image }}-nightly-sec-ubuntu-ci' - cmake-args: "-DSECURITY=ON" - ctest-args: "-LE xfail" - fastdds-branch: 'master' diff --git a/.github/workflows/ubuntu-ci.yml b/.github/workflows/ubuntu-ci.yml new file mode 100644 index 00000000000..6c73a7dc85d --- /dev/null +++ b/.github/workflows/ubuntu-ci.yml @@ -0,0 +1,43 @@ +name: Fast-DDS Ubuntu CI + +on: + workflow_dispatch: + inputs: + label: + description: 'ID associated to the workflow' + required: true + type: string + colcon-args: + description: 'Extra arguments for colcon cli' + required: false + type: string + cmake-args: + description: 'Extra arguments for cmake cli' + required: false + type: string + ctest-args: + description: 'Extra arguments for ctest cli' + required: false + type: string + fastdds_branch: + description: 'Branch or tag of Fast DDS repository (https://github.com/eProsima/Fast-DDS)' + type: string + required: true + +jobs: + ubuntu-ci: + + strategy: + fail-fast: false + matrix: + os-image: + - 'ubuntu-22.04' + + uses: ./.github/workflows/reusable-ubuntu-ci.yml + with: + os-image: ${{ matrix.os-image }} + label: ${{ inputs.label || 'ubuntu-ci' }} + colcon-args: ${{ inputs.colcon-args }} + cmake-args: ${{ inputs.cmake-args || "-DSECURITY=ON" }} + ctest-args: ${{ inputs.ctest-args || "-LE xfail" }} + fastdds-branch: ${{ inputs.fastdds_branch || github.ref || '2.12.x' }} From c43d135c184f892da7988ce9e49fab19d537db13 Mon Sep 17 00:00:00 2001 From: JesusPoderoso Date: Wed, 6 Mar 2024 08:23:39 +0100 Subject: [PATCH 4/5] Refs #205442: Apply concurrency group suggestion Signed-off-by: JesusPoderoso --- .github/workflows/ubuntu-ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ubuntu-ci.yml b/.github/workflows/ubuntu-ci.yml index 6c73a7dc85d..e83e946b9ea 100644 --- a/.github/workflows/ubuntu-ci.yml +++ b/.github/workflows/ubuntu-ci.yml @@ -24,6 +24,10 @@ on: type: string required: true +concurrency: + group: ${{ github.workflow }} + cancel-in-progress: true + jobs: ubuntu-ci: From 0c9df5344867c71334741e2f4cec9f663971ce03 Mon Sep 17 00:00:00 2001 From: JesusPoderoso Date: Tue, 12 Mar 2024 10:35:19 +0100 Subject: [PATCH 5/5] Refs #20542: Remove nightly job Signed-off-by: JesusPoderoso --- .github/workflows/nightly-ubuntu-ci.yml | 23 ----------------------- 1 file changed, 23 deletions(-) delete mode 100644 .github/workflows/nightly-ubuntu-ci.yml diff --git a/.github/workflows/nightly-ubuntu-ci.yml b/.github/workflows/nightly-ubuntu-ci.yml deleted file mode 100644 index 3f744c0edc1..00000000000 --- a/.github/workflows/nightly-ubuntu-ci.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Fast-DDS Ubuntu CI (nightly) - -on: - workflow_dispatch: - schedule: - - cron: '0 1 * * *' - -jobs: - nightly-sec-ubuntu-ci: - - strategy: - fail-fast: false - matrix: - os-image: - - 'ubuntu-22.04' - - uses: ./.github/workflows/reusable-ubuntu-ci.yml - with: - os-image: ${{ matrix.os-image }} - label: '${{ matrix.os-image }}-nightly-sec-ubuntu-ci' - cmake-args: "-DSECURITY=ON" - ctest-args: "-LE xfail" - fastdds-branch: '2.12.x'