diff --git a/.github/workflows/industrial_ci_action_jazzy.yml b/.github/workflows/industrial_ci_action_jazzy.yml new file mode 100644 index 00000000..a17e8067 --- /dev/null +++ b/.github/workflows/industrial_ci_action_jazzy.yml @@ -0,0 +1,56 @@ +# This config uses industrial_ci (https://github.com/ros-industrial/industrial_ci.git). +# For troubleshooting, see README (https://github.com/ros-industrial/industrial_ci/blob/master/README.rst) + +name: Continuous Integration + +on: # this determines when this workflow is run + push: + # branches: [ master, melodic-devel ] # when master or melodic-devel branch is pushed to + # pull_request: + # branches: [ master ] # when there is a pull request against master + # schedule: # uncomment to run periodically + # - cron: '0 4 * * *' # every day at 4 AM (UTC) + workflow_dispatch: # allow manually starting this workflow + +jobs: + industrial_ci: + name: ROS ${{ matrix.ROS_DISTRO }} (${{ matrix.ROS_REPO }}) + runs-on: ubuntu-latest + strategy: + # fail-fast: false # uncomment if failing jobs should not cancel the others immediately + matrix: # matrix is the product of entries + ROS_DISTRO: [jazzy] + ROS_REPO: [main] + # exclude: # specific configuration can be excludes + # - {ROS_DISTRO: melodic, ROS_REPO: testing} + # include: # add additional configurations + # - {ROS_DISTRO: kinetic, ROS_REPO: testing} + env: + CCACHE_DIR: "${{ github.workspace }}/.ccache" # directory for ccache (and how we enable ccache in industrial_ci) + steps: + - uses: actions/checkout@v4 # clone target repository + - uses: actions/cache@v4 # fetch/store the directory used by ccache before/after the ci run + with: + path: ${{ env.CCACHE_DIR }} + # This configuration will always create a new ccache cache starting off from the previous one (if any). + # In this simple version it will be shared between all builds of the same ROS_REPO and ROS_REPO + # and might need some fine-tuning to match the use case + key: ccache-${{ matrix.ROS_DISTRO }}-${{ matrix.ROS_REPO }}-${{github.run_id}} + restore-keys: | + ccache-${{ matrix.ROS_DISTRO }}-${{ matrix.ROS_REPO }}- + + - uses: 'ros-industrial/industrial_ci@master' # run industrial_ci + env: # either pass all entries explicitly + # Added back so testing without Dockerfile can be done + ROS_DISTRO: ${{ matrix.ROS_DISTRO }} + # DOCKER_IMAGE: ghcr.io/cwrurobotics/rov-25:iron + # Done to avoid permssion errors in the ros-industrial ci. + # DOCKER_RUN_OPTS: -u root + ROS_REPO: ${{ matrix.ROS_REPO }} + # Install missing libxcb-cursor0 xvfb for PyQt unit testing + # https://pytest-qt.readthedocs.io/en/latest/troubleshooting.html + ADDITIONAL_DEBS: 'libxcb-cursor0 xvfb' + # Crazy one liner for install python dependencies + AFTER_INSTALL_TARGET_DEPENDENCIES_EMBED: 'pip install --upgrade pip && pip install /root/target_ws/src/rov-25 --user && rm -r /root/target_ws/src/rov-25/build' + # Used for running our CI but don't necessarily want to run others failing unit tests (ej. ament_pep257) + UPSTREAM_WORKSPACE: 'github:InvincibleRMC/ament_pep257#main'