| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #!/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
|