-
Notifications
You must be signed in to change notification settings - Fork 2k
Expand file tree
/
Copy pathsql-proxy.sh
More file actions
executable file
·76 lines (65 loc) · 2.38 KB
/
sql-proxy.sh
File metadata and controls
executable file
·76 lines (65 loc) · 2.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/bin/bash -ex
# Copyright 2025 Google LLC
#
# 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.
# Shared Cloud SQL Proxy setup
# Presumes the following variables in ci-setup.json:
# * CLOUD_SQL_CONNECTION_NAME - the project:region:instance of a Cloud SQL instance.
# * UNIX_SOCKET_DIR - a local directory to set the proxy to (default tmp/cloudsql)
#
# Note: in GitHub Actions environments, `/cloudsql` is not valid.
# Ensure any INSTANCE_UNIX_SOCKET value is ~= $UNIX_SOCKET_DIR/$CLOUD_SQL_CONNECTION_NAME
#
# Usage:
# sql-proxy.sh [..]
#
# Defaults to TCP socket proxy. Set `SOCKET=unix` for Unix sockets.
#
# Usage in package.json:
#
# "proxy": "bash $GITHUB_WORKSPACE/.github/workflows/utils/debug-sql-proxy.sh",
# "system-test": "npm run proxy -- c8 mocha test/... ",
# "system-test-unix": "SOCKET=unix npm run proxy -- c8 mocha test/... ",
PROXY_VERSION="v2.15.1"
SOCKET=${SOCKET:-tcp}
echop(){
echo "👾 $1"
}
if [[ $SOCKET == "unix" ]]; then
UNIX_SOCKET_DIR=${UNIX_SOCKET_DIR:-"tmp/cloudsql"}
mkdir -p $UNIX_SOCKET_DIR && chmod 777 $UNIX_SOCKET_DIR
socket="--unix-socket $UNIX_SOCKET_DIR"
fi
echop "Setting up cloud-sql-proxy for $SOCKET socket connections"
# Download the Cloud SQL Auth Proxy (only once)
if [[ ! -f cloud-sql-proxy ]]; then
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/${PROXY_VERSION}/cloud-sql-proxy.linux.amd64
if [[ $? -ne 0 ]]; then
echo "Failed to download cloud-sql-proxy"
exit 1
fi
chmod +x cloud-sql-proxy
else
echo "cloud-sql-proxy already downloaded"
fi
# Setup proxy
./cloud-sql-proxy $socket $CLOUD_SQL_CONNECTION_NAME &
sleep 5
echop "Proxy ready for use"
# Run whatever command was passed to this script
$@ || STATUS=$?
# Cleanup
echop "Shutting down proxy process"
pkill -f "cloud-sql-proxy" || echo "cloud-sql-proxy process not found. Was it already stopped?"
# Fail if the tests failed
exit $STATUS