diff --git a/.github/workflows/docker-build-base.yaml b/.github/workflows/docker-build-base.yaml index 0ff51e27..9916153f 100644 --- a/.github/workflows/docker-build-base.yaml +++ b/.github/workflows/docker-build-base.yaml @@ -1,10 +1,9 @@ name: docker-build-base -# Only build base when any of the files in the base directory are modified on: push: paths: - - 'autonomy_core/base/**' + - 'autonomy_core/base/**' branches: [master] workflow_dispatch: schedule: @@ -12,30 +11,31 @@ on: jobs: main: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - - - name: Login to DockerHub - uses: docker/login-action@v1 + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up QEMU + if: github.repository == 'kumarrobotics/kr_autonomous_flight' + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to DockerHub + if: github.repository == 'kumarrobotics/kr_autonomous_flight' + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build and push - id: docker_build - uses: docker/build-push-action@v2 + + - name: Build base image (push only on upstream) + uses: docker/build-push-action@v5 with: - push: true - tags: kumarrobotics/autonomy:base + context: . file: ./autonomy_core/base/Dockerfile - platforms: linux/amd64,linux/arm64 - - - name: Image digest - run: echo ${{ steps.docker_build.outputs.digest }} + platforms: ${{ github.repository == 'kumarrobotics/kr_autonomous_flight' && 'linux/amd64,linux/arm64' || 'linux/amd64' }} + push: ${{ github.repository == 'kumarrobotics/kr_autonomous_flight' }} + tags: kumarrobotics/autonomy:base diff --git a/.github/workflows/docker-build-control.yaml b/.github/workflows/docker-build-control.yaml index 1e0775dc..fdf47bf0 100644 --- a/.github/workflows/docker-build-control.yaml +++ b/.github/workflows/docker-build-control.yaml @@ -11,42 +11,41 @@ on: workflow_dispatch: push: paths: - - 'autonomy_core/control/**' + - 'autonomy_core/control/**' branches: [master] # DO NOT add a schedule. This build will be triggered by base schedule. jobs: main: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - - - # This action is now required because we are building with context, - # required to clone a third party repo - name: Checkout - uses: actions/checkout@v2 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - - - name: Login to DockerHub - uses: docker/login-action@v1 + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up QEMU + if: github.repository == 'kumarrobotics/kr_autonomous_flight' + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to DockerHub + if: github.repository == 'kumarrobotics/kr_autonomous_flight' + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build and push + + - name: Build and push id: docker_build - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v5 with: context: . - push: true - tags: kumarrobotics/autonomy:control file: ./autonomy_core/control/Dockerfile - platforms: linux/amd64,linux/arm64 - - - name: Image digest + platforms: ${{ github.repository == 'kumarrobotics/kr_autonomous_flight' && 'linux/amd64,linux/arm64' || 'linux/amd64' }} + push: ${{ github.repository == 'kumarrobotics/kr_autonomous_flight' }} + tags: kumarrobotics/autonomy:control + + - name: Image digest run: echo ${{ steps.docker_build.outputs.digest }} diff --git a/autonomy_core/control/Dockerfile b/autonomy_core/control/Dockerfile index 2497da1b..d18885ff 100644 --- a/autonomy_core/control/Dockerfile +++ b/autonomy_core/control/Dockerfile @@ -1,10 +1,21 @@ FROM kumarrobotics/autonomy:base +# Fix ROS apt repo key (prevents EXPKEYSIG / 404 failures) +RUN apt-get update && apt-get install -y --no-install-recommends \ + curl gnupg2 ca-certificates lsb-release \ + && rm -rf /var/lib/apt/lists/* + +RUN curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc \ + | gpg --dearmor -o /usr/share/keyrings/ros-archive-keyring.gpg \ + && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" \ + > /etc/apt/sources.list.d/ros1-latest.list + RUN apt-get update \ && apt-get install -y \ ros-noetic-mavros \ ros-noetic-mavros-msgs \ - ros-noetic-mavros-extras + ros-noetic-mavros-extras \ + && rm -rf /var/lib/apt/lists/* RUN mkdir -p /root/control_ws/src WORKDIR /root/control_ws @@ -15,4 +26,3 @@ RUN catkin build -j2 --no-status -DCMAKE_BUILD_TYPE=Release COPY autonomy_core/control/docker/entrypoint.sh /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"] -