1
+ #! /usr/bin/env bash
2
+
3
+ # Copyright 2022 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ set -e
18
+
19
+ source ../../common.sh
20
+
21
+ SCRIPT_PATH=" $( cd -- " $( dirname " $0 " ) " > /dev/null 2>&1 ; pwd -P) "
22
+ # Root path to the web fingerprinter plugin.
23
+ PROJECT_ROOT=" $( cd -- " ${SCRIPT_PATH} /../../../.." > /dev/null 2>&1 ; pwd -P) "
24
+ # Path to the configurations for starting a live instance of Flyte.
25
+ FLYTE_APP_PATH=" ${SCRIPT_PATH} /app"
26
+ # Path to the temporary data holder.
27
+ TMP_DATA=" /tmp/FLYTE_fingerprints"
28
+ # Path to the local git repository for Flyte codebase.
29
+ GIT_REPO=" ${TMP_DATA} /repo"
30
+ # Path to the directory of all the updated fingerprints data.
31
+ FINGERPRINTS_PATH=" ${TMP_DATA} /fingerprints"
32
+ # Json data of the final result.
33
+ JSON_DATA=" ${FINGERPRINTS_PATH} /fingerprint.json"
34
+ # Binary proto data of the final result.
35
+ BIN_DATA=" ${FINGERPRINTS_PATH} /fingerprint.binproto"
36
+ # Read all the versions to be fingerprinted.
37
+ readarray -t ALL_VERSIONS < " ${SCRIPT_PATH} /versions.txt"
38
+ mkdir -p " ${FINGERPRINTS_PATH} "
39
+
40
+ startFlyteConsole () {
41
+ local version=" $1 "
42
+ pushd " ${FLYTE_APP_PATH} " > /dev/null
43
+ FLYTE_CONSOLE_VERSION=" ${version} " docker compose up -d
44
+ popd > /dev/null
45
+ }
46
+
47
+ stopFlyteConsole () {
48
+ local version=" $1 "
49
+ pushd " ${FLYTE_APP_PATH} " > /dev/null
50
+ FLYTE_CONSOLE_VERSION=" ${version} " docker compose down --volumes --remove-orphans
51
+ popd > /dev/null
52
+ }
53
+
54
+ createFingerprintForDashboard () {
55
+ local FLYTE_CONSOLE_VERSION=" $1 "
56
+
57
+ echo " Fingerprinting Flyte version ${FLYTE_CONSOLE_VERSION} ..."
58
+ # Start a live instance of Flyte.
59
+ startFlyteConsole " ${FLYTE_CONSOLE_VERSION} "
60
+ # Arbitrarily chosen so that FlyteFlyte is up and running.
61
+ echo " Waiting for Flyte ${FLYTE_CONSOLE_VERSION} to be ready ..."
62
+ sleep 10
63
+
64
+ # Checkout the repository to the correct tag.
65
+ checkOutRepo " ${GIT_REPO} " " ${FLYTE_CONSOLE_VERSION} "
66
+
67
+ updateFingerprint \
68
+ " flyte" \
69
+ " ${FLYTE_CONSOLE_VERSION} " \
70
+ " ${FINGERPRINTS_PATH} " \
71
+ " ${GIT_REPO} /website/console" \
72
+ " http://localhost:8080/console/"
73
+
74
+ # Stop the live instance of Flyte.
75
+ stopFlyteConsole " ${FLYTE_CONSOLE_VERSION} "
76
+ }
77
+
78
+
79
+ # Convert the existing data file to a human-readable json file.
80
+ convertFingerprint \
81
+ " ${PROJECT_ROOT} /src/main/resources/fingerprinters/web/data/community/flyte.binproto" \
82
+ " ${JSON_DATA} "
83
+
84
+ # Fetch Flyte codebase.
85
+ if [[ ! -d " ${GIT_REPO} " ]] ; then
86
+ git clone https://github.com/flyteorg/flyteconsole.git " ${GIT_REPO} "
87
+ fi
88
+
89
+ # Update for all the versions listed in versions.txt file.
90
+ for FLYTE_CONSOLE_VERSION in " ${ALL_VERSIONS[@]} " ; do
91
+ createFingerprintForDashboard " ${FLYTE_CONSOLE_VERSION} "
92
+ done
93
+
94
+ convertFingerprint " ${JSON_DATA} " " ${BIN_DATA} "
95
+
96
+ echo " Fingerprint updated for Flyte. Please commit the following file:"
97
+ echo " ${BIN_DATA} "
0 commit comments