Skip to content

Commit

Permalink
Add manual Ubuntu Github CI (#4109) (#4476)
Browse files Browse the repository at this point in the history
* Refs #20542: Refactor nightly workflow to be wd (workflow dispatch) only

Signed-off-by: JesusPoderoso <[email protected]>
Signed-off-by: EduPonz <[email protected]>

* Refs #20542: Apply concurrency group suggestion

Signed-off-by: JesusPoderoso <[email protected]>
Signed-off-by: EduPonz <[email protected]>

* Refs #20542: Set ubuntu:20.04 as OS

Signed-off-by: JesusPoderoso <[email protected]>
Signed-off-by: EduPonz <[email protected]>

* Refs #20542: Use CMake 3.16.3

Signed-off-by: EduPonz <[email protected]>

---------

Signed-off-by: JesusPoderoso <[email protected]>
Signed-off-by: EduPonz <[email protected]>
Co-authored-by: JesusPoderoso <[email protected]>
Co-authored-by: EduPonz <[email protected]>
  • Loading branch information
3 people authored Mar 13, 2024
1 parent 8a6dae4 commit 9abff70
Show file tree
Hide file tree
Showing 2 changed files with 191 additions and 0 deletions.
144 changes: 144 additions & 0 deletions .github/workflows/reusable-ubuntu-ci.yml
Original file line number Diff line number Diff line change
@@ -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.16.3'

- 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'
47 changes: 47 additions & 0 deletions .github/workflows/ubuntu-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
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

concurrency:
group: ${{ github.workflow }}
cancel-in-progress: true

jobs:
ubuntu-ci:

strategy:
fail-fast: false
matrix:
os-image:
- 'ubuntu-20.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.6.x' }}

0 comments on commit 9abff70

Please sign in to comment.