-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjob-template.yml
More file actions
86 lines (80 loc) · 3.08 KB
/
Copy pathjob-template.yml
File metadata and controls
86 lines (80 loc) · 3.08 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
77
78
79
80
81
82
83
84
85
86
apiVersion: batch/v1
kind: Job
metadata:
name: ${JOB_NAME}
labels:
app.kubernetes.io/managed-by: github-actions
app.kubernetes.io/component: database-schema-setup
spec:
ttlSecondsAfterFinished: 60
template:
spec:
restartPolicy: Never
containers:
- name: prepare-preview-schema
image: ${POSTGRES_IMAGE}
command: [ "bash", "-c" ]
args:
- |
set -e
echo "### START $(date --iso-8601=seconds) ###"
if psql -t -A -c "SELECT 1 FROM information_schema.schemata WHERE schema_name = '${PREVIEW_SCHEMA_NAME}'" | grep -q 1; then
echo "Schema ${PREVIEW_SCHEMA_NAME} already exists. Skipping setup."
echo "Script finished successfully!"
echo "### END $(date --iso-8601=seconds) ###"
exit 0
fi
echo "Dumping base schema ${BASE_SCHEMA}..."
pg_dump --schema=${BASE_SCHEMA} \
--exclude-table-data="${BASE_SCHEMA}.databasechangeloglock" \
--no-comments \
--no-owner \
--no-acl \
--quote-all-identifiers \
--format=plain \
--file=preview-dump.sql
echo "Modifying dump file..."
sed -i preview-dump.sql \
-e "s/\"${BASE_SCHEMA}\"/\"${PREVIEW_SCHEMA_NAME}\"/g" \
-e 's/^SET /--SET /g' \
-e 's/SELECT pg_catalog/--SELECT pg_catalog/g' \
-e 's/--SELECT pg_catalog.setval/SELECT pg_catalog.setval/g'
echo "Creating schema ${PREVIEW_SCHEMA_NAME} with modified dump file..."
psql --echo-queries \
--echo-errors \
--single-transaction \
--set=ON_ERROR_STOP=1 \
--file=preview-dump.sql
echo "Script finished successfully!"
echo "### END $(date --iso-8601=seconds) ###"
env:
- name: PGHOST
valueFrom:
configMapKeyRef:
name: ${CONFIGMAP_NAME}
key: ${DB_HOST_KEY}
- name: PGPORT
valueFrom:
configMapKeyRef:
name: ${CONFIGMAP_NAME}
key: ${DB_PORT_KEY}
- name: PGDATABASE
valueFrom:
configMapKeyRef:
name: ${CONFIGMAP_NAME}
key: ${DB_NAME_KEY}
- name: PGSCHEMA
valueFrom:
configMapKeyRef:
name: ${CONFIGMAP_NAME}
key: ${DB_SCHEMA_KEY}
- name: PGUSER
valueFrom:
configMapKeyRef:
name: ${CONFIGMAP_NAME}
key: ${DB_USERNAME_KEY}
- name: PGPASSWORD
valueFrom:
secretKeyRef:
name: ${SECRET_NAME}
key: ${DB_PASSWORD_KEY}