63 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			63 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| 
								 | 
							
								#!/usr/bin/env bash
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
							 | 
						||
| 
								 | 
							
								REPO_ROOT=${DIR}/../..
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# shellcheck source=/dev/null # Ignore generated source target
							 | 
						||
| 
								 | 
							
								source "${REPO_ROOT}/net/config/config"
							 | 
						||
| 
								 | 
							
								# shellcheck source=system-test/automation_utils.sh
							 | 
						||
| 
								 | 
							
								source "${REPO_ROOT}/system-test/automation_utils.sh"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NET_SH="${REPO_ROOT}/net/net.sh"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set -x
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								: "${UPGRADE_INITIAL_DELAY:=0}" # Time to wait before starting rolling upgrade
							 | 
						||
| 
								 | 
							
								: "${UPGRADE_INTERVALIDATOR_DELAY:?}" # Time to wait between validators during upgrade
							 | 
						||
| 
								 | 
							
								: "${UPGRADE_POST_TEST_DELAY:=0}" #Time to wait after upgrade
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								sleep_if_positive() {
							 | 
						||
| 
								 | 
							
								  declare delay=$1
							 | 
						||
| 
								 | 
							
								  if [[ "$delay" -gt 0 ]]; then
							 | 
						||
| 
								 | 
							
								    sleep "$delay"
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Fetch new software and upload it to the bootstrap validator
							 | 
						||
| 
								 | 
							
								declare -g sw_version_args
							 | 
						||
| 
								 | 
							
								get_net_launch_software_version_launch_args "$UPGRADE_CHANNEL" "upgrade-release" sw_version_args
							 | 
						||
| 
								 | 
							
								# shellcheck disable=2086 # $sw_version_args holds two args. Don't quote!
							 | 
						||
| 
								 | 
							
								"$NET_SH" upgrade $sw_version_args
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Wait initial delay, if any
							 | 
						||
| 
								 | 
							
								sleep_if_positive "$UPGRADE_INITIAL_DELAY"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if [[ "$UPGRADE_INITIAL_DELAY" -gt 0 ]]; then
							 | 
						||
| 
								 | 
							
								  "$NET_SH" sanity
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Restart validators one by one
							 | 
						||
| 
								 | 
							
								# shellcheck disable=SC2154 # sourced from config above
							 | 
						||
| 
								 | 
							
								for i in "${!validatorIpList[@]}"; do
							 | 
						||
| 
								 | 
							
								  if [[ "$i" -eq 0 ]]; then
							 | 
						||
| 
								 | 
							
								    # net.sh doesn't support restarting the bootstrap validator yet
							 | 
						||
| 
								 | 
							
								    continue
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  declare ipAddress="${validatorIpList[$i]}"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  "$NET_SH" stopnode -i "$ipAddress"
							 | 
						||
| 
								 | 
							
								  "$NET_SH" startnode -r -i "$ipAddress"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  # This could be replaced with something based on `solana catchup`
							 | 
						||
| 
								 | 
							
								  sleep_if_positive "$UPGRADE_INTERVALIDATOR_DELAY"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  "$NET_SH" sanity
							 | 
						||
| 
								 | 
							
								done
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								sleep_if_positive "$UPGRADE_POST_TEST_DELAY"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if [[ "$UPGRADE_POST_TEST_DELAY" -gt 0 ]]; then
							 | 
						||
| 
								 | 
							
								  "$NET_SH" sanity
							 | 
						||
| 
								 | 
							
								fi
							 |