#!/bin/bash # Copyright 2023 Google Inc. All rights reserved. # # 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. # validate number of arguments to equal 2 if [ "$#" -ne 2 ]; then echo "This script requires 2 parameters, server address and assigned base instance number" exit 1 fi if [ -z ${ANDROID_PRODUCT_OUT+x} ]; then echo "ANDROID_PRODUCT_OUT is not defined"; exit 1; fi if [ -z ${ANDROID_HOST_OUT+x} ]; then echo "ANDROID_HOST_OUT is not defined"; exit 1; fi set -ex # map arguments to variables server=$1 base_instance_num=$2 # create a temp directory to store the artifacts temp_dir=/tmp/cvd_dist rm -rf $temp_dir mkdir -p $temp_dir # copy and compress the artifacts to the temp directory ssh $server -t "mkdir -p ~/.cvd_artifact; mkdir -p ~/cvd_home" rsync -aSvch --recursive $ANDROID_PRODUCT_OUT --files-from=$ANDROID_PRODUCT_OUT/required_images $server:~/cvd_home --info=progress2 if [ -d $ANDROID_HOST_OUT/../linux_bionic-arm64/cvd-host_package ]; then echo "Use contents in cvd-host_package dir" rsync -avch $ANDROID_HOST_OUT/../linux_bionic-arm64/cvd-host_package/* $server:~/cvd_home --info=progress2 elif [ -f $ANDROID_HOST_OUT/../linux_bionic-arm64/cvd-host_package.tar.gz ]; then echo "Use contents in cvd-host_package.tar.gz" # re-compress with rsyncable option # TODO(b/275312073): remove this if toxbox supports rsyncable cd $ANDROID_HOST_OUT/../linux_bionic-arm64; pigz -d -c cvd-host_package.tar.gz | pigz -R > $temp_dir/cvd-host_package.tar.gz rsync -avh $temp_dir/* $server:.cvd_artifact --info=progress2 ssh $server -t "cd .cvd_artifact; tar -zxvf cvd-host_package.tar.gz -C ~/cvd_home/" else echo "There is neither cvd-host_package dir nor cvd-host_package.tar.gz" exit 1 fi web_ui_port=$((8443+$base_instance_num-1)) adb_port=$((6520+$base_instance_num-1)) fastboot_port=$((7520+$base_instance_num-1)) instance_id=$(uuidgen) # sets up SSH port forwarding to the remote server for various ports and launch cvd instance # port forward rule as base_instance_num=1 in local ssh $server -L 8443:127.0.0.1:$web_ui_port \ -L 15550:127.0.0.1:15550 -L 15551:127.0.0.1:15551 -L 15552:127.0.0.1:15552 \ -L 15553:127.0.0.1:15553 -L 15554:127.0.0.1:15554 -L 15555:127.0.0.1:15555 \ -L 15556:127.0.0.1:15556 -L 15557:127.0.0.1:15557 -L 15558:127.0.0.1:15558 \ -L 6520:127.0.0.1:$adb_port -L 7520:127.0.0.1:$fastboot_port \ -t "cd cvd_home && HOME=~/cvd_home bin/launch_cvd --base_instance_num=$base_instance_num"