| 
									
										
										
										
											2023-07-03 23:27:06 +10:00
										 |  |  | #!/usr/bin/env bash
 | 
					
						
							| 
									
										
										
										
											2021-12-07 15:28:47 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | set -e | 
					
						
							|  |  |  | set +x | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | trap "cd $(pwd -P)" EXIT | 
					
						
							|  |  |  | cd "$(dirname "$0")" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-24 18:10:34 +01:00
										 |  |  | MCR_IMAGE_NAME="playwright" | 
					
						
							| 
									
										
										
										
											2022-03-25 15:45:53 -06:00
										 |  |  | PW_VERSION=$(node ../../utils/workspace.js --get-version) | 
					
						
							| 
									
										
										
										
											2022-02-24 18:10:34 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-07 15:28:47 -08:00
										 |  |  | RELEASE_CHANNEL="$1" | 
					
						
							|  |  |  | if [[ "${RELEASE_CHANNEL}" == "stable" ]]; then | 
					
						
							|  |  |  |   if [[ "${PW_VERSION}" == *-* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: cannot publish stable docker with Playwright version '${PW_VERSION}'" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | elif [[ "${RELEASE_CHANNEL}" == "canary" ]]; then | 
					
						
							|  |  |  |   if [[ "${PW_VERSION}" != *-* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: cannot publish canary docker with Playwright version '${PW_VERSION}'" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   echo "ERROR: unknown release channel - ${RELEASE_CHANNEL}" | 
					
						
							|  |  |  |   echo "Must be either 'stable' or 'canary'" | 
					
						
							|  |  |  |   exit 1 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [[ -z "${GITHUB_SHA}" ]]; then | 
					
						
							|  |  |  |   echo "ERROR: GITHUB_SHA env variable must be specified" | 
					
						
							|  |  |  |   exit 1 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | FOCAL_TAGS=( | 
					
						
							|  |  |  |   "next" | 
					
						
							|  |  |  |   "sha-${GITHUB_SHA}" | 
					
						
							|  |  |  |   "next-focal" | 
					
						
							|  |  |  |   "v${PW_VERSION}-focal" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [[ "$RELEASE_CHANNEL" == "stable" ]]; then | 
					
						
							|  |  |  |   FOCAL_TAGS+=("focal") | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-09 23:19:54 +02:00
										 |  |  | JAMMY_TAGS=( | 
					
						
							|  |  |  |   "next-jammy" | 
					
						
							|  |  |  |   "v${PW_VERSION}-jammy" | 
					
						
							| 
									
										
										
										
											2023-04-12 19:40:23 +02:00
										 |  |  |   "v${PW_VERSION}" | 
					
						
							| 
									
										
										
										
											2022-06-09 23:19:54 +02:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [[ "$RELEASE_CHANNEL" == "stable" ]]; then | 
					
						
							| 
									
										
										
										
											2023-04-12 19:40:23 +02:00
										 |  |  |   FOCAL_TAGS+=("latest") | 
					
						
							|  |  |  |   FOCAL_TAGS+=("jammy") | 
					
						
							| 
									
										
										
										
											2022-06-09 23:19:54 +02:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-24 18:10:34 +01:00
										 |  |  | tag_and_push() { | 
					
						
							|  |  |  |   local source="$1" | 
					
						
							|  |  |  |   local target="$2" | 
					
						
							|  |  |  |   echo "-- tagging: $target" | 
					
						
							|  |  |  |   docker tag $source $target | 
					
						
							|  |  |  |   docker push $target | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-07 15:28:47 -08:00
										 |  |  | publish_docker_images_with_arch_suffix() { | 
					
						
							|  |  |  |   local FLAVOR="$1" | 
					
						
							|  |  |  |   local TAGS=() | 
					
						
							| 
									
										
										
										
											2022-11-21 11:23:45 -10:00
										 |  |  |   if [[ "$FLAVOR" == "focal" ]]; then | 
					
						
							| 
									
										
										
										
											2021-12-07 15:28:47 -08:00
										 |  |  |     TAGS=("${FOCAL_TAGS[@]}") | 
					
						
							| 
									
										
										
										
											2022-06-09 23:19:54 +02:00
										 |  |  |   elif [[ "$FLAVOR" == "jammy" ]]; then | 
					
						
							|  |  |  |     TAGS=("${JAMMY_TAGS[@]}") | 
					
						
							| 
									
										
										
										
											2021-12-07 15:28:47 -08:00
										 |  |  |   else | 
					
						
							| 
									
										
										
										
											2023-02-09 12:18:02 -08:00
										 |  |  |     echo "ERROR: unknown flavor - $FLAVOR. Must be either 'focal' or 'jammy'" | 
					
						
							| 
									
										
										
										
											2021-12-07 15:28:47 -08:00
										 |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   local ARCH="$2" | 
					
						
							|  |  |  |   if [[ "$ARCH" != "amd64" && "$ARCH" != "arm64" ]]; then | 
					
						
							|  |  |  |     echo "ERROR: unknown arch - $ARCH. Must be either 'amd64' or 'arm64'" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   # Prune docker images to avoid platform conflicts | 
					
						
							|  |  |  |   docker system prune -fa | 
					
						
							|  |  |  |   ./build.sh "--${ARCH}" "${FLAVOR}" playwright:localbuild | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   for ((i = 0; i < ${#TAGS[@]}; i++)) do | 
					
						
							|  |  |  |     local TAG="${TAGS[$i]}" | 
					
						
							| 
									
										
										
										
											2022-02-24 18:10:34 +01:00
										 |  |  |     tag_and_push playwright:localbuild "playwright.azurecr.io/public/${MCR_IMAGE_NAME}:${TAG}-${ARCH}" | 
					
						
							| 
									
										
										
										
											2021-12-07 15:28:47 -08:00
										 |  |  |   done | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | publish_docker_manifest () { | 
					
						
							|  |  |  |   local FLAVOR="$1" | 
					
						
							|  |  |  |   local TAGS=() | 
					
						
							| 
									
										
										
										
											2022-11-21 11:23:45 -10:00
										 |  |  |   if [[ "$FLAVOR" == "focal" ]]; then | 
					
						
							| 
									
										
										
										
											2021-12-07 15:28:47 -08:00
										 |  |  |     TAGS=("${FOCAL_TAGS[@]}") | 
					
						
							| 
									
										
										
										
											2022-06-14 11:20:29 +02:00
										 |  |  |   elif [[ "$FLAVOR" == "jammy" ]]; then | 
					
						
							|  |  |  |     TAGS=("${JAMMY_TAGS[@]}") | 
					
						
							| 
									
										
										
										
											2021-12-07 15:28:47 -08:00
										 |  |  |   else | 
					
						
							| 
									
										
										
										
											2023-02-09 12:18:02 -08:00
										 |  |  |     echo "ERROR: unknown flavor - $FLAVOR. Must be either 'focal' or 'jammy'" | 
					
						
							| 
									
										
										
										
											2021-12-07 15:28:47 -08:00
										 |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   for ((i = 0; i < ${#TAGS[@]}; i++)) do | 
					
						
							|  |  |  |     local TAG="${TAGS[$i]}" | 
					
						
							| 
									
										
										
										
											2022-02-24 18:10:34 +01:00
										 |  |  |     local BASE_IMAGE_TAG="playwright.azurecr.io/public/${MCR_IMAGE_NAME}:${TAG}" | 
					
						
							| 
									
										
										
										
											2021-12-07 15:28:47 -08:00
										 |  |  |     local IMAGE_NAMES="" | 
					
						
							|  |  |  |     if [[ "$2" == "arm64" || "$2" == "amd64" ]]; then | 
					
						
							|  |  |  |         IMAGE_NAMES="${IMAGE_NAMES} ${BASE_IMAGE_TAG}-$2" | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  |     if [[ "$3" == "arm64" || "$3" == "amd64" ]]; then | 
					
						
							|  |  |  |         IMAGE_NAMES="${IMAGE_NAMES} ${BASE_IMAGE_TAG}-$3" | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  |     docker manifest create "${BASE_IMAGE_TAG}" $IMAGE_NAMES | 
					
						
							|  |  |  |     docker manifest push "${BASE_IMAGE_TAG}" | 
					
						
							|  |  |  |   done | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | publish_docker_images_with_arch_suffix focal amd64 | 
					
						
							|  |  |  | publish_docker_images_with_arch_suffix focal arm64 | 
					
						
							|  |  |  | publish_docker_manifest focal amd64 arm64 | 
					
						
							| 
									
										
										
										
											2022-06-09 23:19:54 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | publish_docker_images_with_arch_suffix jammy amd64 | 
					
						
							|  |  |  | publish_docker_images_with_arch_suffix jammy arm64 | 
					
						
							|  |  |  | publish_docker_manifest jammy amd64 arm64 | 
					
						
							| 
									
										
										
										
											2022-12-07 15:57:01 -08:00
										 |  |  | 
 |