| 
									
										
										
										
											2023-07-03 21:27:06 +08:00
										 |  |  | #!/usr/bin/env bash
 | 
					
						
							| 
									
										
										
										
											2020-10-27 04:46:26 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Copyright (c) Microsoft Corporation. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # 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. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | set -e | 
					
						
							|  |  |  | set +x | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [[ ($1 == '--help') || ($1 == '-h') ]]; then | 
					
						
							|  |  |  |   echo "usage: $(basename $0) <report.json>" | 
					
						
							|  |  |  |   echo | 
					
						
							|  |  |  |   echo "Upload report to the flakiness dashboard." | 
					
						
							|  |  |  |   exit 0 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-31 12:33:30 +08:00
										 |  |  | if [[ ("${GITHUB_REPOSITORY}" != "microsoft/playwright") && ("${GITHUB_REPOSITORY}" != "microsoft/playwright-browsers") ]]; then | 
					
						
							| 
									
										
										
										
											2021-04-19 23:39:10 +08:00
										 |  |  |   echo "NOTE: skipping dashboard uploading from fork" | 
					
						
							|  |  |  |   exit 0 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-08 14:58:33 +08:00
										 |  |  | if [[ "${GITHUB_REF}" != "refs/heads/main" && "${GITHUB_REF}" != 'refs/heads/release-'* ]]; then | 
					
						
							| 
									
										
										
										
											2021-04-19 23:39:10 +08:00
										 |  |  |   echo "NOTE: skipping dashboard uploading from Playwright branches" | 
					
						
							|  |  |  |   exit 0 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-27 04:46:26 +08:00
										 |  |  | if [[ $# == 0 ]]; then | 
					
						
							|  |  |  |   echo "ERROR: missing report name!" | 
					
						
							|  |  |  |   echo "try './$(basename $0) --help' for more information" | 
					
						
							|  |  |  |   exit 1 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-07 01:58:15 +08:00
										 |  |  | export BUILD_URL="https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" | 
					
						
							|  |  |  | export COMMIT_SHA=$(git rev-parse HEAD) | 
					
						
							|  |  |  | export COMMIT_TITLE=$(git show -s --format=%s HEAD) | 
					
						
							|  |  |  | export COMMIT_AUTHOR_NAME=$(git show -s --format=%an HEAD) | 
					
						
							|  |  |  | export COMMIT_AUTHOR_EMAIL=$(git show -s --format=%ae HEAD) | 
					
						
							|  |  |  | export COMMIT_TIMESTAMP=$(git show -s --format=%ct HEAD) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-27 07:44:32 +08:00
										 |  |  | export HOST_OS_NAME="$(uname)" | 
					
						
							| 
									
										
										
										
											2021-01-28 01:05:31 +08:00
										 |  |  | export HOST_ARCH="$(uname -m)" | 
					
						
							| 
									
										
										
										
											2020-10-27 07:44:32 +08:00
										 |  |  | export HOST_OS_VERSION="" | 
					
						
							|  |  |  | if [[ "$HOST_OS_NAME" == "Darwin" ]]; then | 
					
						
							|  |  |  |   HOST_OS_VERSION=$(sw_vers -productVersion | grep -o '^\d\+.\d\+') | 
					
						
							|  |  |  | elif [[ "$HOST_OS_NAME" == "Linux" ]]; then | 
					
						
							|  |  |  |   HOST_OS_NAME="$(bash -c 'source /etc/os-release && echo $NAME')" | 
					
						
							|  |  |  |   HOST_OS_VERSION="$(bash -c 'source /etc/os-release && echo $VERSION_ID')" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-07 01:58:15 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-27 04:46:26 +08:00
										 |  |  | EMBED_METADATA_SCRIPT=$(cat <<EOF | 
					
						
							|  |  |  |   const json = require('./' + process.argv[1]); | 
					
						
							|  |  |  |   json.metadata = { | 
					
						
							| 
									
										
										
										
											2022-05-07 01:58:15 +08:00
										 |  |  |     runURL: process.env.BUILD_URL, | 
					
						
							| 
									
										
										
										
											2023-05-03 20:58:16 +08:00
										 |  |  |     uuid: require('crypto').randomUUID(), | 
					
						
							| 
									
										
										
										
											2020-10-27 07:44:32 +08:00
										 |  |  |     osName: process.env.HOST_OS_NAME, | 
					
						
							| 
									
										
										
										
											2021-01-28 01:56:46 +08:00
										 |  |  |     arch: process.env.HOST_ARCH, | 
					
						
							| 
									
										
										
										
											2020-10-27 07:44:32 +08:00
										 |  |  |     osVersion: process.env.HOST_OS_VERSION, | 
					
						
							| 
									
										
										
										
											2022-05-07 01:58:15 +08:00
										 |  |  |     commitSHA: process.env.COMMIT_SHA, | 
					
						
							|  |  |  |     commitTimestamp: process.env.COMMIT_TIMESTAMP, | 
					
						
							|  |  |  |     commitTitle: process.env.COMMIT_TITLE, | 
					
						
							|  |  |  |     commitAuthorName: process.env.COMMIT_AUTHOR_NAME, | 
					
						
							|  |  |  |     commitAuthorEmail: process.env.COMMIT_AUTHOR_EMAIL, | 
					
						
							| 
									
										
										
										
											2022-10-07 12:58:30 +08:00
										 |  |  |     branchName: process.env.GITHUB_REF_NAME, | 
					
						
							| 
									
										
										
										
											2020-10-27 04:46:26 +08:00
										 |  |  |   }; | 
					
						
							|  |  |  |   console.log(JSON.stringify(json)); | 
					
						
							|  |  |  | EOF | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | REPORT_NAME=$(node -e "console.log(require('crypto').randomBytes(20).toString('hex'))") | 
					
						
							|  |  |  | node -e "${EMBED_METADATA_SCRIPT}" "$1" > "${REPORT_NAME}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | gzip "${REPORT_NAME}" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-20 02:36:15 +08:00
										 |  |  | AZ_STORAGE_ACCOUNT="folioflakinessdashboard" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-24 18:20:39 +08:00
										 |  |  | echo "Uploading ${REPORT_NAME}.gz" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-20 03:23:39 +08:00
										 |  |  | az storage blob upload --auth-mode login --account-name "${AZ_STORAGE_ACCOUNT}" -c uploads -f "${REPORT_NAME}.gz" -n "${REPORT_NAME}.gz" | 
					
						
							| 
									
										
										
										
											2022-09-14 01:55:39 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | UTC_DATE=$(cat <<EOF | node | 
					
						
							|  |  |  |   const date = new Date(); | 
					
						
							| 
									
										
										
										
											2022-09-15 05:56:28 +08:00
										 |  |  |   console.log(date.toISOString().substring(0, 10).replace(/-/g, '')); | 
					
						
							| 
									
										
										
										
											2022-09-14 01:55:39 +08:00
										 |  |  | EOF | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-20 03:23:39 +08:00
										 |  |  | az storage blob upload --auth-mode login --account-name "${AZ_STORAGE_ACCOUNT}" -c uploads-permanent -f "${REPORT_NAME}.gz" -n "${UTC_DATE}-${REPORT_NAME}.gz" | 
					
						
							| 
									
										
										
										
											2020-10-27 04:46:26 +08:00
										 |  |  | rm -rf "${REPORT_NAME}.gz" |