Skip to content

fix(gateway): say in the schema that a configuration write needs a value #134

fix(gateway): say in the schema that a configuration write needs a value

fix(gateway): say in the schema that a configuration write needs a value #134

name: Docker Publish
on:
push:
branches:
- main
env:
REGISTRY: ghcr.io
jobs:
build-and-push:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
strategy:
fail-fast: false
matrix:
ros_distro: [jazzy, humble, lyrical]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: .
push: true
build-args: ROS_DISTRO=${{ matrix.ros_distro }}
tags: ${{ env.REGISTRY }}/${{ github.repository_owner }}/ros2_medkit-${{ matrix.ros_distro }}:latest
cache-from: type=gha,scope=${{ matrix.ros_distro }}
# mode=min, not max: max exports every intermediate build
# stage, which for three distros held ~3.1 GB of the repo's
# 10 GB Actions cache quota - about 30% of the budget, for a
# job that only runs on push to main. The quota was measured
# over the limit (10.54 GB active), so GitHub was evicting
# LRU, and the ccache entries the build jobs depend on were
# what it evicted.
#
# This is not free. The Dockerfile is two-stage and mode=min
# exports only the layers of the final image, so builder-stage
# layers are no longer restored at all. What that actually
# costs is smaller than it sounds: the COPY src/ layers sit
# above the rosdep+colcon RUN, so any push touching src/
# already invalidated the build layer under mode=max too. The
# layer genuinely lost across such a push is the build-deps
# apt-get. Accepted: this job is not on the pull request path,
# and the quota it was holding is what every pull request
# needs.
cache-to: type=gha,mode=min,scope=${{ matrix.ros_distro }}
platforms: linux/amd64