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

[21226] Improve CI workflows in 2.1.x, and branching model refactor (backport #365) #369

Merged
merged 2 commits into from
Sep 2, 2024
Merged
Show file tree
Hide file tree
Changes from all 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
7 changes: 7 additions & 0 deletions .github/workflows/config/build.meta
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
names:
fastdds:
cmake-args:
- "-DEPROSIMA_BUILD_TESTS=ON"
fastdds_python:
cmake-args:
- "-DBUILD_TESTING=ON"
5 changes: 5 additions & 0 deletions .github/workflows/config/test.repos
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
repositories:
googletest-distribution:
type: git
url: https://github.com/google/googletest.git
version: release-1.11.0
218 changes: 218 additions & 0 deletions .github/workflows/reusable-ubuntu-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,218 @@
name: Fast DDS Gen Ubuntu CI reusable workflow

on:
workflow_call:
inputs:
os-version:
description: 'The OS image for the workflow'
required: true
type: string
java-version:
description: 'The Java version to be used'
required: true
type: string
label:
description: 'ID associated to the workflow'
required: true
type: string
fastddsgen-branch:
description: 'Fast DDS Gen branch to be used'
required: true
type: string
fastdds-branch:
description: 'Branch or tag of Fast DDS repository'
required: false
type: string
default: '2.6.x'
fastcdr-branch:
description: 'Branch or tag of Fast CDR repository'
required: false
type: string
default: '1.0.x'
fastdds-python-branch:
description: 'Branch or tag of Fast DDS Python repository'
required: false
type: string
default: '1.0.x'
discovery-server-branch:
description: 'Branch or tag of Discovery Server repository'
required: false
type: string
default: 'v1.2.1'
run-build:
description: 'Build Fast DDS Gen'
required: false
type: boolean
default: true
run-tests:
description: 'Run test suite of Fast DDS Gen'
required: false
type: boolean
default: true
use-ccache:
description: 'Use CCache to speed up the build'
required: false
type: boolean
default: false
defaults:
run:
shell: bash

jobs:
ubuntu-build-test:
runs-on: ${{ inputs.os-version }}
if: ${{ inputs.run-build == true }}
strategy:
fail-fast: false
matrix:
cmake-build-type:
- 'RelWithDebInfo'
steps:
- name: Add ci-pending label if PR
if: ${{ github.event_name == 'pull_request' }}
uses: eProsima/eProsima-CI/external/add_labels@v0
with:
labels: ci-pending
number: ${{ github.event.number }}
repo: eProsima/Fast-DDS-Gen

- name: Sync eProsima/Fast-DDS-Gen repository
uses: eProsima/eProsima-CI/external/checkout@v0
with:
path: ${{ github.workspace }}/src/fastddsgen
ref: ${{ inputs.fastddsgen-branch }}

- name: Install Fix Python version
uses: eProsima/eProsima-CI/external/setup-python@v0
with:
python-version: '3.11'

- name: Get minimum supported version of CMake
uses: eProsima/eProsima-CI/external/get-cmake@v0
with:
cmakeVersion: 3.22.6

- name: Install apt packages
uses: eProsima/eProsima-CI/ubuntu/install_apt_packages@v0
with:
packages: libasio-dev libtinyxml2-dev libssl-dev swig ${{ inputs.java-version }}

- name: Configure Java to ${{ inputs.java-version }}
shell: bash
run: |
jv=$(echo ${{ inputs.java-version }} | sed -r 's/.*-([0-9]*)-.*/\1/g'); jvs=$(update-alternatives --list java | grep "$jv" | head -1); sudo update-alternatives --set java "$jvs"
jv=$(echo ${{ inputs.java-version }} | sed -r 's/.*-([0-9]*)-.*/\1/g'); jvs=$(update-alternatives --list javac | grep "$jv" | head -1); sudo update-alternatives --set javac "$jvs"

- name: Install colcon
uses: eProsima/eProsima-CI/multiplatform/install_colcon@v0

- name: Install Python dependencies
uses: eProsima/eProsima-CI/multiplatform/install_python_packages@v0
with:
packages: vcstool xmlschema xmltodict==0.13.0 jsondiff==2.0.0 pandas==1.5.2
upgrade: false

- name: Setup CCache
uses: eProsima/eProsima-CI/external/setup-ccache-action@v0
if: ${{ inputs.use-ccache == true }}
with:
api_token: ${{ secrets.GITHUB_TOKEN }}

- name: Get Fast DDS branch
id: get_fastdds_branch
uses: eProsima/eProsima-CI/ubuntu/get_related_branch_from_repo@v0
with:
remote_repository: eProsima/Fast-DDS
fallback_branch: ${{ inputs.fastdds-branch }}
skip_base: 'true'

- name: Get Fast CDR branch
id: get_fastcdr_branch
uses: eProsima/eProsima-CI/ubuntu/get_related_branch_from_repo@v0
with:
remote_repository: eProsima/Fast-CDR
fallback_branch: ${{ inputs.fastcdr-branch }}
skip_base: 'true'

- name: Get Fast DDS Python branch
id: get_fastdds_python_branch
uses: eProsima/eProsima-CI/ubuntu/get_related_branch_from_repo@v0
with:
remote_repository: eProsima/Fast-DDS-python
fallback_branch: ${{ inputs.fastdds-python-branch }}
skip_base: 'true'

- name: Get Discovery Server branch
id: get_discovery_server_branch
uses: eProsima/eProsima-CI/ubuntu/get_related_branch_from_repo@v0
with:
remote_repository: eProsima/Discovery-Server
fallback_branch: ${{ inputs.discovery-server-branch }}
skip_base: 'true'

- name: Download Fast CDR, Fast DDS Python, and Discovery Server
run: |
cd src
git clone -b ${{ steps.get_fastcdr_branch.outputs.deduced_branch }} https://github.com/eProsima/Fast-CDR.git fastcdr
git clone -b ${{ steps.get_fastdds_python_branch.outputs.deduced_branch }} https://github.com/eProsima/Fast-DDS-python.git fastdds_python
git clone -b ${{ steps.get_discovery_server_branch.outputs.deduced_branch }} https://github.com/eProsima/Discovery-Server.git discovery_server
cd ..
shell: bash

- name: Download Fast DDS repo
uses: eProsima/eProsima-CI/external/checkout@v0
with:
repository: eProsima/Fast-DDS
path: ${{ github.workspace }}/src/fastrtps
ref: ${{ steps.get_fastdds_branch.outputs.deduced_branch }}

- name: Fetch Fast DDS dependencies
uses: eProsima/eProsima-CI/multiplatform/vcs_import@v0
with:
vcs_repos_file: ${{ github.workspace }}/src/fastrtps/fastrtps.repos
destination_workspace: src
skip_existing: 'true'

- name: Build fastddsgen
run: |
cd ${{ github.workspace }}/src/fastddsgen
./gradlew assemble
echo "$(pwd)/scripts" >> ${{ github.path }}

- name: Regenerate IDL files for Fast DDS, Fast DDS Python, and Discovery Server
run: |
cd ${{ github.workspace }}/src/fastrtps
./utils/scripts/update_generated_code_from_idl.sh
cd -

cd ${{ github.workspace }}/src/fastdds_python
./utils/scripts/update_generated_code_from_idl.sh
cd -

cd ${{ github.workspace }}/src/discovery_server
./utils/scripts/update_generated_code_from_idl.sh
cd -

- name: Fetch Fast DDS Gen CI dependencies
uses: eProsima/eProsima-CI/multiplatform/vcs_import@v0
if: ${{ inputs.run-tests == true }}
with:
vcs_repos_file: ${{ github.workspace }}/src/fastddsgen/.github/workflows/config/test.repos
destination_workspace: src
skip_existing: 'true'

- name: Colcon build
continue-on-error: false
uses: eProsima/eProsima-CI/multiplatform/colcon_build@v0
with:
colcon_meta_file: ${{ github.workspace }}/src/fastddsgen/.github/workflows/config/build.meta
colcon_build_args_default: '--event-handlers=console_direct+'
cmake_build_type: ${{ matrix.cmake-build-type }}
workspace: ${{ github.workspace }}

- name: Test fastddsgen
if: ${{ inputs.run-tests == true }}
run: |
source ${{ github.workspace }}/install/local_setup.bash
cd ${{ github.workspace }}/src/fastddsgen
./gradlew test
70 changes: 70 additions & 0 deletions .github/workflows/ubuntu-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: Fast DDS Gen Ubuntu CI

on:
workflow_dispatch:
inputs:
fastddsgen-branch:
description: 'Fast DDS Gen branch to be used'
required: true
type: string
fastdds-branch:
description: 'Branch or tag of Fast DDS repository'
required: false
type: string
default: '2.6.x'
fastcdr-branch:
description: 'Branch or tag of Fast CDR repository'
required: false
type: string
default: '1.0.x'
fastdds-python-branch:
description: 'Branch or tag of Fast DDS Python repository'
required: false
type: string
default: '1.0.x'
discovery-server-branch:
description: 'Branch or tag of Discovery Server repository'
required: false
type: string
default: 'v1.2.1'
run-tests:
description: 'Run test suite of Fast DDS Gen'
required: false
type: boolean
default: true
use-ccache:
description: 'Use CCache to speed up the build'
required: false
type: boolean
default: false

pull_request:
types:
- review_requested
paths-ignore:
- '**.md'
- '**.txt'
- '!**/CMakeLists.txt'

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
ubuntu-ci:
if: ${{ !(github.event_name == 'pull_request') || !contains(github.event.pull_request.labels.*.name, 'conflicts') }}
uses: ./.github/workflows/reusable-ubuntu-ci.yml
with:
# It would be desirable to have a matrix of ubuntu OS for this job, but due to the issue opened in this ticket:
# https://github.com/orgs/community/discussions/128118 , it has been set as a single OS job.
os-version: 'ubuntu-20.04'
java-version: 'openjdk-11-jdk'
label: 'ubuntu-ci-openjdk-11-jdk'
fastddsgen-branch: ${{ inputs.fastddsgen-branch || github.ref }}
fastdds-branch: ${{ inputs.fastdds-branch || '2.6.x' }}
fastcdr-branch: ${{ inputs.fastcdr-branch || '1.0.x' }}
fastdds-python-branch: ${{ inputs.fastdds-python-branch || '1.0.x' }}
discovery-server-branch: ${{ inputs.discovery-server-branch || 'v1.2.1' }}
run-build: ${{ !(github.event_name == 'pull_request') || !contains(github.event.pull_request.labels.*.name, 'skip-ci') }}
run-tests: ${{ (inputs.run-tests == true) || ((github.event_name == 'pull_request') && (!contains(github.event.pull_request.labels.*.name, 'no-test'))) }}
use-ccache: ${{ (inputs.use-ccache == true) || false }}
6 changes: 6 additions & 0 deletions RELEASE_SUPPORT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Release support


Please, refer to the [master branch](https://github.com/eProsima/Fast-DDS-Gen/blob/master/RELEASE_SUPPORT.md) for the latest version of this document.

For detailed information about the lifecycle of the different *Fast DDS* versions (and their corresponding counterpart in this repository), please refer to the [release support section of the Fast DDS repository](https://github.com/eProsima/Fast-DDS/blob/master/RELEASE_SUPPORT.md).
Loading