-
Notifications
You must be signed in to change notification settings - Fork 0
/
skaffold.yaml
137 lines (132 loc) · 5.31 KB
/
skaffold.yaml
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# yaml-language-server: $schema=https://raw.githubusercontent.com/GoogleContainerTools/skaffold/main/docs-v2/content/en/schemas/v4beta1.json
apiVersion: skaffold/v4beta1
kind: Config
metadata:
name: zuzi-site
build:
local:
useBuildkit: true
artifacts:
- image: zevisert/zuzi-site
context: site
docker:
dockerfile: site/Dockerfile
target: runner
secrets:
- id: nextenv
src: k8s/environments/staging/process.env
- id: sentry
src: site/.sentryclirc
sync:
manual:
- src: src/**/*.{js,ts,tsx,css}
dest: /site/
- src: public/**/*
dest: /site/
manifests:
rawYaml:
- k8s/environments/staging/namespace.yaml
- k8s/environments/staging/env.secret.yaml
- k8s/environments/staging/ingress.yaml
- k8s/http.service.yaml
- k8s/next.deployment.yaml
- k8s/postgres.yaml
deploy:
kubectl:
defaultNamespace: zuzi-staging
hooks: {}
portForward:
- resourceType: service
resourceName: db-primary
namespace: zuzi-dev
localPort: 5432
port: postgres
profiles:
- name: dev
activation:
- kubeContext: docker-desktop
command: dev
- kubeContext: docker-desktop
command: debug
patches:
- op: replace
path: /deploy/kubectl/defaultNamespace
value: zuzi-dev
- op: replace
path: /build/artifacts/0/docker/target
value: dev-server
- op: replace
path: /manifests/rawYaml/0
value: k8s/environments/dev/namespace.yaml
- op: replace
path: /build/artifacts/0/docker/secrets/0/src
value: k8s/environments/dev/process.env
- op: replace
path: /manifests/rawYaml/1
value: k8s/environments/dev/env.secret.yaml
- op: replace
path: /manifests/rawYaml/2
value: k8s/environments/dev/ingress.yaml
- op: add
path: /deploy/kubectl/hooks
value:
after:
- host:
command:
# This script:
# a) Waits for db ready (requires kubectl 1.23 and https://github.com/kubernetes/kubernetes/pull/109525 for jsonpath {.status.instances[*].readyReplicas}=1), then
# b) port-forwards in the background,
# c) runs npx prisma db push,
# d) then kills background port-forwarding
- bash
- -c
- >
set -e; set -x;
echo 'Waiting for postgres to be up before pushing prisma db';
function k { kubectl --namespace zuzi-dev --context docker-desktop "$@"; };
while ! k wait pod --for=condition=Ready --timeout=1m --selector postgres-operator.crunchydata.com/cluster=db,postgres-operator.crunchydata.com/role=master; do sleep 1; done;
PG_CLUSTER_PRIMARY_POD=$(k get pod --output name --selector postgres-operator.crunchydata.com/cluster=db,postgres-operator.crunchydata.com/role=master);
k port-forward $PG_CLUSTER_PRIMARY_POD 5432:5432 &
cd site;
DB_URI="$(k get secrets db-pguser-next --output go-template='{{ .data.uri | base64decode }}' | sed 's/db-primary.zuzi-dev.svc/localhost/')" npx prisma db push;
kill %1
- name: prod
patches:
- op: replace
path: /deploy/kubectl/defaultNamespace
value: zuzi-site
- op: replace
path: /manifests/rawYaml/0
value: k8s/environments/prod/namespace.yaml
- op: replace
path: /build/artifacts/0/docker/secrets/0/src
value: k8s/environments/prod/process.env
- op: replace
path: /manifests/rawYaml/1
value: k8s/environments/prod/env.secret.yaml
- op: replace
path: /manifests/rawYaml/2
value: k8s/environments/prod/ingress.yaml
- op: add
path: /deploy/kubectl/hooks
value:
after:
- host:
command:
# This script:
# a) Waits for db ready (requires kubectl 1.23 and https://github.com/kubernetes/kubernetes/pull/109525 for jsonpath {.status.instances[*].readyReplicas}=1), then
# b) port-forwards in the background,
# c) runs npx prisma migrate deploy,
# d) then kills background port-forwarding
- bash
- -c
- >
set -e; set -x;
echo 'Waiting for postgres to be up before pushing prisma db';
function k { kubectl --namespace zuzi-site --context doku "$@"; };
while ! k wait pod --for=condition=Ready --timeout=1m --selector postgres-operator.crunchydata.com/cluster=db,postgres-operator.crunchydata.com/role=master; do sleep 1; done;
PG_CLUSTER_PRIMARY_POD=$(k get pod --output name --selector postgres-operator.crunchydata.com/cluster=db,postgres-operator.crunchydata.com/role=master);
k port-forward $PG_CLUSTER_PRIMARY_POD 5432:5432 &
cd site;
DB_URI="$(k get secrets db-pguser-next --output go-template='{{ .data.uri | base64decode }}' | sed 's/db-primary.zuzi-site.svc/localhost/')" npx prisma migrate deploy;
kill %1