diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2025-02-25 13:28:35 +0100 |
|---|---|---|
| committer | Aleksandr Nogikh <nogikh@google.com> | 2025-02-26 15:09:27 +0000 |
| commit | d24eb6a35a1d5f4564cf9ac9735b36f98f96f53d (patch) | |
| tree | 4c5cc910897d1569a6909b8d2128f5daaa725998 | |
| parent | 6b02abbc75ad23416e1aedd75799f3a68be7f681 (diff) | |
syz-cluster: add a DB migration job
The job can be created by a CD to apply the missing DB migrations.
Add a Makefile target to prepare the job's description.
| -rw-r--r-- | syz-cluster/Makefile | 7 | ||||
| -rw-r--r-- | syz-cluster/db-mgmt/deployment.yaml | 23 | ||||
| -rw-r--r-- | syz-cluster/db-mgmt/migrate-job.yaml | 19 | ||||
| -rw-r--r-- | syz-cluster/pkg/db/spanner.go | 5 |
4 files changed, 30 insertions, 24 deletions
diff --git a/syz-cluster/Makefile b/syz-cluster/Makefile index 58237cece..ab5a1c796 100644 --- a/syz-cluster/Makefile +++ b/syz-cluster/Makefile @@ -65,3 +65,10 @@ restart-spanner: build-db-mgmt k8s-config-dev: @kubectl kustomize ./overlays/minikube/ | IMAGE_PREFIX=${IMAGE_PREFIX} IMAGE_TAG=${IMAGE_TAG} envsubst + +migrate-job.yaml: + @if [ -z "${SPANNER_DATABASE_URI}" ]; then \ + echo "Error: SPANNER_DATABASE_URI must be defined."; \ + exit 1; \ + fi + @cat db-mgmt/migrate-job.yaml | IMAGE_PREFIX=${IMAGE_PREFIX} IMAGE_TAG=${IMAGE_TAG} envsubst diff --git a/syz-cluster/db-mgmt/deployment.yaml b/syz-cluster/db-mgmt/deployment.yaml deleted file mode 100644 index d81d7eced..000000000 --- a/syz-cluster/db-mgmt/deployment.yaml +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2025 syzkaller project authors. All rights reserved. -# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. - -apiVersion: apps/v1 -kind: Deployment -metadata: - name: db-mgmt -spec: - replicas: 1 - selector: - matchLabels: - app: db-mgmt - template: - metadata: - labels: - app: db-mgmt - spec: - containers: - - name: db-mgmt-local - image: db-mgmt-local:latest - imagePullPolicy: Never - command: ["db-mgmt", "migrate", "/migrations"] - restartPolicy: Never diff --git a/syz-cluster/db-mgmt/migrate-job.yaml b/syz-cluster/db-mgmt/migrate-job.yaml new file mode 100644 index 000000000..7a0fd0bc3 --- /dev/null +++ b/syz-cluster/db-mgmt/migrate-job.yaml @@ -0,0 +1,19 @@ +# Copyright 2025 syzkaller project authors. All rights reserved. +# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. + +apiVersion: batch/v1 +kind: Job +metadata: + name: db-migrate-job +spec: + template: + spec: + serviceAccountName: gke-service-ksa + containers: + - name: migrate + image: ${IMAGE_PREFIX}db-mgmt:${IMAGE_TAG} + env: + - name: SPANNER_DATABASE_URL + value: "${SPANNER_DATABASE_URI}" + args: ["migrate"] + restartPolicy: Never diff --git a/syz-cluster/pkg/db/spanner.go b/syz-cluster/pkg/db/spanner.go index 77b126be7..d114727b8 100644 --- a/syz-cluster/pkg/db/spanner.go +++ b/syz-cluster/pkg/db/spanner.go @@ -115,7 +115,10 @@ func RunMigrations(ctx context.Context, uri string) error { return err } m, err := migrate.NewWithInstance("iofs", sourceDriver, "spanner", dbDriver) - if err != nil { + if err == migrate.ErrNoChange { + // This is not a problem. + return nil + } else if err != nil { return err } return m.Up() |
