diff --git a/.github/actions/fetch-fastddsgen-repos/action.yml b/.github/actions/fetch-fastddsgen-repos/action.yml deleted file mode 100644 index 6195e986..00000000 --- a/.github/actions/fetch-fastddsgen-repos/action.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: 'fetch-fastddsgen-repos' -description: 'Fetch Fast DDS dependencies' - -inputs: - foonathan-memory-vendor-branch: - description: 'foonathan_memory_vendor branch to be used' - required: true - fastcdr-branch: - description: 'Fast-CDR branch to be used' - required: true - fastdds-branch: - description: 'Fast-DDS branch to be used' - required: true - fastdds-python-branch: - description: 'Fast-DDS-Python branch to be used' - required: true - discovery-server-branch: - description: 'Discovery Server branch to be used' - required: true - -runs: - using: "composite" - steps: - - id: fetch-fastddsgen-repos - run: | - cd src - git clone https://github.com/google/googletest.git --branch release-1.11.0 - git clone https://github.com/eProsima/foonathan_memory_vendor.git --branch ${{ inputs.foonathan-memory-vendor-branch }} - git clone https://github.com/eProsima/Fast-CDR.git --branch ${{ inputs.fastcdr-branch }} - git clone https://github.com/eProsima/Fast-DDS.git --branch ${{ inputs.fastdds-branch }} - git clone https://github.com/eProsima/Fast-DDS-python.git --branch ${{ inputs.fastdds-python-branch }} - git clone https://github.com/eProsima/Discovery-Server.git --branch ${{ inputs.discovery-server-branch }} - cd .. - shell: bash diff --git a/.github/fastddsgen.meta b/.github/workflows/config/build.meta similarity index 100% rename from .github/fastddsgen.meta rename to .github/workflows/config/build.meta diff --git a/.github/workflows/config/test.repos b/.github/workflows/config/test.repos new file mode 100644 index 00000000..5052ee82 --- /dev/null +++ b/.github/workflows/config/test.repos @@ -0,0 +1,5 @@ +repositories: + googletest-distribution: + type: git + url: https://github.com/google/googletest.git + version: release-1.11.0 diff --git a/.github/workflows/nightly-ubuntu-ci.yml b/.github/workflows/nightly-ubuntu-ci.yml new file mode 100644 index 00000000..f6482961 --- /dev/null +++ b/.github/workflows/nightly-ubuntu-ci.yml @@ -0,0 +1,91 @@ +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/reusable-ubuntu-ci.yml@3.3.x + 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/reusable-ubuntu-ci.yml@3.2.x + 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/reusable-ubuntu-ci.yml@2.5.x + 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 diff --git a/.github/workflows/reusable-ubuntu-ci.yaml b/.github/workflows/reusable-ubuntu-ci.yaml deleted file mode 100644 index ff80320a..00000000 --- a/.github/workflows/reusable-ubuntu-ci.yaml +++ /dev/null @@ -1,131 +0,0 @@ -name: Fast DDS Gen Ubuntu CI reusable workflow - -on: - workflow_call: - inputs: - os_image: - description: 'The OS image for the workflow' - required: true - type: string - java_version: - description: 'The Java version to be used' - required: true - type: string - fastddsgen_branch: - description: 'Fast DDS Gen branch to be used' - required: true - type: string - -defaults: - run: - shell: bash - -jobs: - ubuntu-build-test: - runs-on: ${{ inputs.os_image }} - strategy: - fail-fast: false - - steps: - - uses: eProsima/eProsima-CI/external/checkout@v0 - with: - path: src/fastddsgen - ref: ${{ inputs.fastddsgen_branch }} - - - name: Get minimum supported version of CMake - uses: eProsima/eProsima-CI/external/get-cmake@v0 - with: - cmakeVersion: 3.22.6 - - - name: Setup CCache - uses: eProsima/eProsima-CI/external/setup-ccache-action@v0 - with: - api_token: ${{ secrets.GITHUB_TOKEN }} - - - name: Install apt packages - uses: eProsima/eProsima-CI/ubuntu/install_apt_packages@v0 - with: - packages: libasio-dev libtinyxml2-dev ${{ 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 python packages - uses: eProsima/eProsima-CI/multiplatform/install_colcon@v0 - - - name: Get Foonathan Memory Vendor branch - id: get_foonathan_memory_vendor_branch - uses: eProsima/eProsima-CI/ubuntu/get_related_branch_from_repo@v0 - with: - remote_repository: eProsima/foonathan_memory_vendor - fallback_branch: master - - - 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: master - - - 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: master - - - 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 - - - uses: ./src/fastddsgen/.github/actions/fetch-fastddsgen-repos - with: - foonathan-memory-vendor-branch: ${{ steps.get_foonathan_memory_vendor_branch.outputs.deduced_branch }} - fastcdr-branch: ${{ steps.get_fastcdr_branch.outputs.deduced_branch }} - fastdds-branch: ${{ steps.get_fastdds_branch.outputs.deduced_branch }} - fastdds-python-branch: ${{ steps.get_fastdds_python_branch.outputs.deduced_branch }} - discovery-server-branch: ${{ steps.get_discovery_server_branch.outputs.deduced_branch }} - - - name: Build fastddsgen - run: | - cd src/fastddsgen - ./gradlew assemble - echo "$(pwd)/scripts" >> ${{ github.path }} - - - name: Regenerate IDL files for Fast DDS, Fast DDS Python, and Discovery Server - run: | - cd src/Fast-DDS - ./utils/scripts/update_generated_code_from_idl.sh - cd - - - cd src/Fast-DDS-python - ./utils/scripts/update_generated_code_from_idl.sh - cd - - - cd src/Discovery-Server - ./utils/scripts/update_generated_code_from_idl.sh - cd - - - - name: Build workspace - run: | - cmake --version - colcon build --event-handlers=console_direct+ --mixin rel-with-deb-info ccache --metas src/fastddsgen/.github/fastddsgen.meta - - - name: Test fastddsgen - run: | - source install/local_setup.bash - cd src/fastddsgen - ./gradlew test diff --git a/.github/workflows/reusable-ubuntu-ci.yml b/.github/workflows/reusable-ubuntu-ci.yml new file mode 100644 index 00000000..123b9f83 --- /dev/null +++ b/.github/workflows/reusable-ubuntu-ci.yml @@ -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 diff --git a/.github/workflows/ubuntu-ci.yaml b/.github/workflows/ubuntu-ci.yaml deleted file mode 100644 index 24256456..00000000 --- a/.github/workflows/ubuntu-ci.yaml +++ /dev/null @@ -1,32 +0,0 @@ -name: Fast DDS Gen Ubuntu CI - -on: - workflow_dispatch: - inputs: - fastddsgen_branch: - description: 'Fast-DDS-Gen branch to be used' - required: true - type: string - - pull_request: - -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -jobs: - ubuntu-ci: - strategy: - fail-fast: false - matrix: - os_image: - - 'ubuntu-22.04' - java_version: - - 'openjdk-11-jdk' - - 'openjdk-19-jdk' - - uses: ./.github/workflows/reusable-ubuntu-ci.yaml - with: - os_image: ${{ matrix.os_image }} - java_version: ${{ matrix.java_version }} - fastddsgen_branch: ${{ inputs.fastddsgen_branch || github.ref || 'master' }} diff --git a/.github/workflows/ubuntu-ci.yml b/.github/workflows/ubuntu-ci.yml new file mode 100644 index 00000000..8b440ed4 --- /dev/null +++ b/.github/workflows/ubuntu-ci.yml @@ -0,0 +1,77 @@ +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: '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-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: + strategy: + fail-fast: false + matrix: + java-version: + - 'openjdk-11-jdk' + - 'openjdk-19-jdk' + + 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-22.04' + java-version: ${{ matrix.java-version }} + label: 'ubuntu-ci-${{ matrix.java-version }}' + fastddsgen-branch: ${{ inputs.fastddsgen-branch || github.ref }} + fastdds-branch: ${{ inputs.fastdds-branch || 'master' }} + fastcdr-branch: ${{ inputs.fastcdr-branch || 'master' }} + fastdds-python-branch: ${{ inputs.fastdds-python-branch || 'main' }} + discovery-server-branch: ${{ inputs.discovery-server-branch || 'master' }} + 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 }} diff --git a/.github/workflows/weekly-ubuntu-ci.yml b/.github/workflows/weekly-ubuntu-ci.yml new file mode 100644 index 00000000..88552436 --- /dev/null +++ b/.github/workflows/weekly-ubuntu-ci.yml @@ -0,0 +1,22 @@ +name: Fast DDS Gen Ubuntu CI (weekly) + +on: + workflow_dispatch: + schedule: + - cron: '0 * * * 1' # Run at minute 0 on Monday + +jobs: + weekly-ubuntu-ci-2_1_x: + uses: eProsima/Fast-DDS-Gen/.github/workflows/reusable-ubuntu-ci.yml@2.1.x + with: + os-version: 'ubuntu-20.04' + java-version: 'openjdk-11-jdk' + label: 'weekly-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 diff --git a/RELEASE_SUPPORT.md b/RELEASE_SUPPORT.md new file mode 100644 index 00000000..e6232319 --- /dev/null +++ b/RELEASE_SUPPORT.md @@ -0,0 +1,19 @@ +# 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. + +*eProsima Fast DDS-Gen* maintains several releases with different support cycles. +**All of them are attached to different *eProsima Fast DDS* releases.** + +## *eProsima Fast DDS* and *Fast DDS-Gen* version compatibility + +|Fast DDS Version|Fast DDS-Gen Version|Fast DDS-Gen Version branch|Fast DDS-Gen Latest Release| +|----------------|--------------------|---------------------------|---------------------------| +|2.14|3.3|[3.3.x](https://github.com/eProsima/Fast-DDS-Gen/tree/3.3.x)|[v3.3.0](https://github.com/eProsima/Fast-DDS-Gen/releases/tag/v3.3.0)| +|2.13|3.2|[3.2.x](https://github.com/eProsima/Fast-DDS-Gen/tree/3.2.x)|[v3.2.1](https://github.com/eProsima/Fast-DDS-Gen/releases/tag/v3.2.1)| +|2.10|2.5|[2.5.x](https://github.com/eProsima/Fast-DDS-Gen/tree/2.5.x)|[v2.4.0](https://github.com/eProsima/Fast-DDS-Gen/releases/tag/v2.4.0)| +|2.6|2.1|[2.1.x](https://github.com/eProsima/Fast-DDS-Gen/tree/2.1.x)|[v2.1.3](https://github.com/eProsima/Fast-DDS-Gen/releases/tag/v2.1.3)| + + +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).