| #!/usr/bin/env bash |
| |
| # |
| # Copyright (c) 2021 Project CHIP Authors |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| |
| # otbr_docker_build.sh - utility for building (and optionally) tagging and pushing |
| # the otbr Docker image. |
| # |
| # Example usage: |
| # $ ./otbr_docker_build.sh --rev 15d556e --tag TE3 --push |
| # |
| |
| set -ex |
| |
| # Default parameters |
| ORG=connectedhomeip |
| IMAGE=otbr |
| PLATFORMS=linux/amd64,linux/arm/v7,linux/arm64 |
| ARGS=() |
| |
| # Temporary directory used, within $DIR |
| OTBR_DIR=$(mktemp -d) |
| |
| if [ ! -e "$OTBR_DIR" ]; then |
| echo "Error while creating the temporary directory" >&2 |
| exit 1 |
| fi |
| |
| # Ensure temporary folder is removed on exit |
| trap 'rm -rf "$OTBR_DIR"' EXIT |
| |
| usage() { |
| echo "Usage: $0 --rev <otbr_revision> [--org <organization> --image <image> --tag <tag> --push]" >&2 |
| exit 0 |
| } |
| |
| while (($#)); do |
| case "$1" in |
| --path) |
| OTBR_PATH="$2" |
| shift |
| ;; |
| --rev) |
| REVISION="$2" |
| shift |
| ;; |
| --org) |
| ORG="$2" |
| shift |
| ;; |
| --image) |
| IMAGE="$2" |
| shift |
| ;; |
| --tag) |
| TAG="$2" |
| shift |
| ;; |
| --push) ARGS+=("--push") ;; |
| --help) usage ;; |
| esac |
| shift |
| done |
| |
| [[ -n "$REVISION" ]] || usage |
| [[ -n "$TAG" ]] && ARGS+=("-t" "$ORG/$IMAGE:$TAG") |
| |
| VERSION=otbr-${REVISION:0:7} |
| |
| # Checkout ot-br-posix to the provided revision |
| git -C "$OTBR_DIR" clone https://github.com/openthread/ot-br-posix.git . |
| git -C "$OTBR_DIR" reset --hard "$REVISION" |
| |
| # Build docker image |
| docker run --rm --privileged multiarch/qemu-user-static --reset -p yes |
| docker buildx create --use --name otbr_builder --node otbr_node --driver docker-container --platform "$PLATFORMS" |
| docker buildx build --no-cache -t "$ORG/$IMAGE:$VERSION" -f "$OTBR_DIR/etc/docker/Dockerfile" --platform "$PLATFORMS" "${ARGS[@]}" "$OTBR_DIR" |
| |
| exit 0 |