diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 1f7f42e8..878366b3 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -97,17 +97,12 @@ jobs: ] | map(select(.name as $n | $changed | index($n)))' } - # TODO remove if-statement after zed/realsense-arm64 is supported expand_matrix() { local original_matrix=$1 echo "$original_matrix" | jq -c '[ .[] | - if .name == "alliander_realsense" or .name == "alliander_zed" then - . + {"arch": "amd64", "runner": "ubuntu-24.04"} - else (. + {"arch": "amd64", "runner": "ubuntu-24.04"}), (. + {"arch": "arm64", "runner": "ubuntu-24.04-arm"}) - end ]' } @@ -238,17 +233,10 @@ jobs: - name: Create manifest for ${{ matrix.repository }} run: | - # TODO remove this when realsense-arm64 is supported - if docker manifest inspect allianderrobotics/${{ matrix.repository }}:latest-arm64 > /dev/null 2>&1; then - docker buildx imagetools create \ - -t allianderrobotics/${{ matrix.repository }}:latest \ - allianderrobotics/${{ matrix.repository }}:latest-amd64 \ - allianderrobotics/${{ matrix.repository }}:latest-arm64 - else - docker buildx imagetools create \ - -t allianderrobotics/${{ matrix.repository }}:latest \ - allianderrobotics/${{ matrix.repository }}:latest-amd64 - fi + docker buildx imagetools create \ + -t allianderrobotics/${{ matrix.repository }}:latest \ + allianderrobotics/${{ matrix.repository }}:latest-amd64 \ + allianderrobotics/${{ matrix.repository }}:latest-arm64 build-cuda: strategy: @@ -357,17 +345,10 @@ jobs: - name: Create manifest for ${{ matrix.repository }} run: | - # TODO fix this once zed-arm64 is supported - if docker manifest inspect allianderrobotics/${{ matrix.repository }}:latest-arm64 > /dev/null 2>&1; then - docker buildx imagetools create \ - -t allianderrobotics/${{ matrix.repository }}:latest \ - allianderrobotics/${{ matrix.repository }}:latest-amd64 \ - allianderrobotics/${{ matrix.repository }}:latest-arm64 - else - docker buildx imagetools create \ - -t allianderrobotics/${{ matrix.repository }}:latest \ - allianderrobotics/${{ matrix.repository }}:latest-amd64 - fi + docker buildx imagetools create \ + -t allianderrobotics/${{ matrix.repository }}:latest \ + allianderrobotics/${{ matrix.repository }}:latest-amd64 \ + allianderrobotics/${{ matrix.repository }}:latest-arm64 linting: runs-on: ubuntu-24.04 @@ -392,6 +373,7 @@ jobs: runner: [ubuntu-24.04, ubuntu-24.04-arm] runs-on: ${{ matrix.runner }} needs: [create-manifests-ubuntu, create-manifests-cuda] + if: always() steps: - uses: actions/checkout@v4 - name: Free disk space @@ -409,10 +391,5 @@ jobs: cache: "pip" - name: Install dependencies run: pip install pyyaml mashumaro - # TODO remove difference between ARM and non-ARM when zed/realsense-arm64 is supported: - - name: Run tests in alliander_tests container (ubuntu-24.04) - if: ${{ matrix.runner == 'ubuntu-24.04' }} + - name: Run tests in alliander_tests container run: python3 start.py --pytest-no-nvidia - - name: Run tests in alliander_tests container (ubuntu-24.04-arm) - if: ${{ matrix.runner == 'ubuntu-24.04-arm' }} - run: python3 start.py --pytest-no-nvidia --deselect=alliander_tests/src/alliander_tests/tests/test_camera.py diff --git a/alliander_realsense/alliander_realsense.Dockerfile b/alliander_realsense/alliander_realsense.Dockerfile index 4e04b79f..a1cc657d 100644 --- a/alliander_realsense/alliander_realsense.Dockerfile +++ b/alliander_realsense/alliander_realsense.Dockerfile @@ -16,14 +16,15 @@ RUN apt update && apt install -y --no-install-recommends \ && apt autoremove -y \ && apt clean -ARG ZIP_URL="https://github.com/IntelRealSense/librealsense/releases/download/v2.57.3/librealsense2_jammy_x86_debians_2_57_3_beta.zip" ARG TEMP_DIR="/tmp/realsense_install" -ARG ZIP_FILE="$TEMP_DIR/librealsense2_jammy_x86_debians_2_57_3_beta.zip" -RUN mkdir -p "$TEMP_DIR" \ - && wget -O "$ZIP_FILE" "$ZIP_URL" \ - && unzip "$ZIP_FILE" -d "$TEMP_DIR" \ - && dpkg -i "$TEMP_DIR"/*.deb \ - && rm -rf "$TEMP_DIR" +ARG ZIP_FILE="$TEMP_DIR/librealsense2.zip" +RUN mkdir -p "$TEMP_DIR" +RUN if [ $(dpkg --print-architecture) = "amd64" ]; \ + then wget -O "$ZIP_FILE" "https://github.com/realsenseai/librealsense/releases/download/v2.57.6/librealsense2_noble_x86_debians_2_57_6_beta.zip"; \ + elif [ $(dpkg --print-architecture) = "arm64" ]; \ + then wget -O "$ZIP_FILE" "https://github.com/realsenseai/librealsense/releases/download/v2.57.6/librealsense2_noble_ARM_debians_2_57_6_beta.zip"; \ + else echo "Unsupported architecture: $(dpkg --print-architecture)"; exit 1; fi +RUN unzip "$ZIP_FILE" -d "$TEMP_DIR" && dpkg -i "$TEMP_DIR"/*.deb && rm -rf "$TEMP_DIR" # Install Realsense Wrapper: WORKDIR /$WORKDIR/external diff --git a/alliander_zed/alliander_zed.Dockerfile b/alliander_zed/alliander_zed.Dockerfile index 20ceb8f3..ef96700b 100644 --- a/alliander_zed/alliander_zed.Dockerfile +++ b/alliander_zed/alliander_zed.Dockerfile @@ -8,21 +8,18 @@ ARG COLCON_BUILD_SEQUENTIAL ENV ROS_DISTRO=jazzy # Install ZED SDK: -ARG UBUNTU_RELEASE_YEAR=24 -ARG CUDA_MAJOR=12 -ARG CUDA_MINOR=9 -ARG ZED_SDK_MAJOR=5 -ARG ZED_SDK_MINOR=0 -RUN echo "CUDA Version ${CUDA_MAJOR}.${CUDA_MINOR}.0" > /usr/local/cuda/version.txt || true \ - && installer="ZED_SDK_Ubuntu${UBUNTU_RELEASE_YEAR}_cuda${CUDA_MAJOR}.${CUDA_MINOR}.run" \ - && sdk_url="https://download.stereolabs.com/zedsdk/${ZED_SDK_MAJOR}.${ZED_SDK_MINOR}/cu${CUDA_MAJOR}/ubuntu${UBUNTU_RELEASE_YEAR}" \ - && echo "Downloading ${sdk_url} → ${installer} ..." \ - && wget -q --show-progress -O "${installer}" "${sdk_url}" \ - && chmod +x "${installer}" \ - && echo "Running installer …" \ - && ./"${installer}" -- silent \ +ARG TEMP_DIR="/tmp/zed_install" +ARG RUN_FILE="$TEMP_DIR/zed_sdk.run" +RUN mkdir -p "$TEMP_DIR" +RUN if [ $(dpkg --print-architecture) = "amd64" ]; \ + then wget -O "$RUN_FILE" "https://stereolabs.sfo2.cdn.digitaloceanspaces.com/zedsdk/5.0/ZED_SDK_Ubuntu24_cuda12.8_tensorrt10.9_v5.0.7.zstd.run"; \ + elif [ $(dpkg --print-architecture) = "arm64" ]; \ + then wget -O "$RUN_FILE" "https://stereolabs.sfo2.cdn.digitaloceanspaces.com/zedsdk/5.0/ZED_SDK_Tegra_L4T36.4_v5.0.7.zstd.run"; \ + else echo "Unsupported architecture: $(dpkg --print-architecture)"; exit 1; fi +RUN chmod +x "${RUN_FILE}" \ + && "${RUN_FILE}" -- silent \ && chmod -R u+rwX,go+rX /usr/local/zed \ - && rm -f "${installer}" \ + && rm -f "${RUN_FILE}" \ && rm -rf /var/lib/apt/lists/* # Install ZED Wrapper: