# # Copyright (c) 2020, The OpenThread Authors. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. Neither the name of the copyright holder nor the # names of its contributors may be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # name: Docker on: push: branches-ignore: - 'dependabot/**' pull_request: branches: - 'main' concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || (github.repository == 'openthread/ot-br-posix' && github.run_id) || github.ref }} cancel-in-progress: true jobs: docker-check: runs-on: ubuntu-latest env: OTBR_COVERAGE: 1 VERBOSE: 1 steps: - uses: actions/checkout@v4 with: submodules: true - name: Bootstrap env: BUILD_TARGET: "docker-check" run: tests/scripts/bootstrap.sh - name: Check run: tests/scripts/check-docker buildx: runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: include: - image_tag: "latest" base_image: "ubuntu:bionic" build_args: "" platforms: "linux/amd64,linux/arm/v7,linux/arm64" push: yes - image_tag: "focal" base_image: "ubuntu:focal" build_args: "" platforms: "linux/amd64,linux/arm64" push: yes - image_tag: "reference-device" base_image: "ubuntu:bionic" build_args: >- --build-arg REFERENCE_DEVICE=1 --build-arg BORDER_ROUTING=0 --build-arg BACKBONE_ROUTER=1 --build-arg NAT64=0 --build-arg WEB_GUI=0 --build-arg REST_API=0 --build-arg OTBR_OPTIONS='-DOTBR_DUA_ROUTING=ON -DOT_DUA=ON -DOT_MLR=ON' platforms: "linux/amd64,linux/arm/v7,linux/arm64" push: yes - image_tag: "test" base_image: "ubuntu:bionic" build_args: >- --build-arg OT_BACKBONE_CI=1 --build-arg REFERENCE_DEVICE=1 --build-arg BACKBONE_ROUTER=1 --build-arg OTBR_OPTIONS='-DOTBR_DUA_ROUTING=ON -DOT_DUA=ON -DOT_MLR=ON' platforms: "linux/amd64,linux/arm/v7,linux/arm64" push: no steps: - uses: actions/checkout@v4 with: submodules: true - name: Prepare id: prepare run: | DOCKER_IMAGE=openthread/otbr DOCKER_PLATFORMS=${{ matrix.platforms }} VERSION=${{ matrix.image_tag }} TAGS="--tag ${DOCKER_IMAGE}:${VERSION}" echo "docker_image=${DOCKER_IMAGE}" >> $GITHUB_OUTPUT echo "version=${VERSION}" >> $GITHUB_OUTPUT echo "buildx_args=--platform ${DOCKER_PLATFORMS} \ --build-arg BASE_IMAGE=${{ matrix.base_image }} \ --build-arg VERSION=${VERSION} \ --build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') \ --build-arg VCS_REF=${GITHUB_SHA::8} \ ${{ matrix.build_args }} \ ${TAGS} --file etc/docker/Dockerfile ." >> $GITHUB_OUTPUT - name: Set up QEMU uses: docker/setup-qemu-action@v3 with: image: tonistiigi/binfmt:qemu-v8.1.5 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Docker Buildx (build) run: | docker buildx build --output "type=image,push=false" ${{ steps.prepare.outputs.buildx_args }} - name: Login to DockerHub if: success() && github.repository == 'openthread/ot-br-posix' && github.event_name != 'pull_request' && matrix.push uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Docker Buildx (push) if: success() && github.repository == 'openthread/ot-br-posix' && github.event_name != 'pull_request' && matrix.push run: | docker buildx build --output "type=image,push=true" ${{ steps.prepare.outputs.buildx_args }} - name: Inspect Image if: always() && github.repository == 'openthread/ot-br-posix' && github.event_name != 'pull_request' && matrix.push run: | docker buildx imagetools inspect ${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}