Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[17513] Add nightly Ubuntu Github CI (backport #4109) #4473

Merged
merged 6 commits into from
Mar 13, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .github/workflows/nightly-ubuntu-ci.yml
Original file line number Diff line number Diff line change
@@ -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: '2.12.x'
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.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'