Skip to content

Commit

Permalink
Improve CI workflows in master, and branching model refactor (#365)
Browse files Browse the repository at this point in the history
* Refs #21226: Improve CI workflows in master and apply Fast DDS branching model

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

* Refs #21226: Add RELEASE_SUPPORT.md file

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

* Refs #21226: Add suggested changes from previous / similar PRs

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

* Refs #21226: Apply rev suggestion

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

---------

Signed-off-by: JesusPoderoso <[email protected]>
(cherry picked from commit d912d11)

# Conflicts:
#	.github/actions/fetch-fastddsgen-repos/action.yml
#	.github/workflows/config/build.meta
  • Loading branch information
JesusPoderoso authored and mergify[bot] committed Jul 2, 2024
1 parent c619563 commit 1c4e271
Show file tree
Hide file tree
Showing 6 changed files with 428 additions and 0 deletions.
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
106 changes: 106 additions & 0 deletions .github/workflows/nightly-ubuntu-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
name: Fast DDS Gen Ubuntu CI (nightly)

on:
workflow_dispatch:
schedule:
- cron: '0 1 * * *'

jobs:
nightly-ubuntu-ci-master:
strategy:
fail-fast: false
matrix:
java-version:
- 'openjdk-11-jdk'
- 'openjdk-19-jdk'
uses: eProsima/Fast-DDS-Gen/.github/workflows/reusable-ubuntu-ci.yml@master
with:
os-version: 'ubuntu-22.04'
java-version: ${{ matrix.java-version }}
label: 'nightly-ubuntu-ci-master'
fastdds-gen-branch: 'master'
fastdds-branch: 'master'
fastcdr-branch: 'master'
fastdds-python-branch: 'main'
discovery-server-branch: 'master'
run-build: true
run-tests: true
use-ccache: false

nightly-ubuntu-ci-3_3_x:
strategy:
fail-fast: false
matrix:
java-version:
- 'openjdk-11-jdk'
- 'openjdk-19-jdk'
fastcdr-branch:
- '1.1.x'
- '2.x'
uses: eProsima/Fast-DDS-Gen/.github/workflows/[email protected]
with:
os-version: 'ubuntu-22.04'
java-version: ${{ matrix.java-version }}
label: 'nightly-ubuntu-ci-3.3.x'
fastdds-gen-branch: '3.3.x'
fastdds-branch: '2.14.x'
fastcdr-branch: ${{ matrix.fastcdr-branch }}
fastdds-python-branch: '1.4.x'
discovery-server-branch: 'v1.2.2'
run-build: true
run-tests: true
use-ccache: false

nightly-ubuntu-ci-3_2_x:
strategy:
fail-fast: false
matrix:
java-version:
- 'openjdk-11-jdk'
- 'openjdk-19-jdk'
fastcdr-branch:
- '1.1.x'
- '2.x'
uses: eProsima/Fast-DDS-Gen/.github/workflows/[email protected]
with:
os-version: 'ubuntu-22.04'
java-version: ${{ matrix.java-version }}
label: 'nightly-ubuntu-ci-3.2.x'
fastdds-gen-branch: '3.2.x'
fastdds-branch: '2.13.x'
fastcdr-branch: ${{ matrix.fastcdr-branch }}
fastdds-python-branch: '1.4.x'
discovery-server-branch: 'v1.2.2'
run-build: true
run-tests: true
use-ccache: false

nightly-ubuntu-ci-2_5_x:
uses: eProsima/Fast-DDS-Gen/.github/workflows/[email protected]
with:
os-version: 'ubuntu-22.04'
java-version: 'openjdk-11-jdk'
label: 'nightly-ubuntu-ci-2.5.x'
fastdds-gen-branch: '2.5.x'
fastdds-branch: '2.10.x'
fastcdr-branch: '1.0.x'
fastdds-python-branch: '1.2.x'
discovery-server-branch: 'v1.2.1'
run-build: true
run-tests: true
use-ccache: false

nightly-ubuntu-ci-2_1_x:
uses: eProsima/Fast-DDS-Gen/.github/workflows/[email protected]
with:
os-version: 'ubuntu-20.04'
java-version: 'openjdk-11-jdk'
label: 'nightly-ubuntu-ci-2.1.x'
fastdds-gen-branch: '2.1.x'
fastdds-branch: '2.6.x'
fastcdr-branch: '1.0.x'
fastdds-python-branch: '1.0.x'
discovery-server-branch: 'v1.2.1'
run-build: true
run-tests: true
use-ccache: false
214 changes: 214 additions & 0 deletions .github/workflows/reusable-ubuntu-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,214 @@
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: 'master'
fastcdr-branch:
description: 'Branch or tag of Fast CDR repository'
required: false
type: string
default: 'master'
fastdds-python-branch:
description: 'Branch or tag of Fast DDS Python repository'
required: false
type: string
default: 'main'
discovery-server-branch:
description: 'Branch or tag of Discovery Server repository'
required: false
type: string
default: 'master'
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 }}

- 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 }}

- 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: main

- 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: master

- 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/fastdds
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/fastdds/fastdds.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/fastdds
./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
Loading

0 comments on commit 1c4e271

Please sign in to comment.