Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gitpod-io
GitHub Repository: gitpod-io/gitpod
Path: blob/main/install/installer/pkg/components/migrations/job.go
2501 views
1
// Copyright (c) 2021 Gitpod GmbH. All rights reserved.
2
// Licensed under the GNU Affero General Public License (AGPL).
3
// See License.AGPL.txt in the project root for license information.
4
5
package migrations
6
7
import (
8
"github.com/gitpod-io/gitpod/installer/pkg/common"
9
10
batchv1 "k8s.io/api/batch/v1"
11
corev1 "k8s.io/api/core/v1"
12
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
13
"k8s.io/apimachinery/pkg/runtime"
14
"k8s.io/utils/pointer"
15
)
16
17
func job(ctx *common.RenderContext) ([]runtime.Object, error) {
18
if disableMigration := common.IsDatabaseMigrationDisabled(ctx); disableMigration {
19
return nil, nil
20
}
21
22
objectMeta := metav1.ObjectMeta{
23
Name: Component,
24
Namespace: ctx.Namespace,
25
Labels: common.CustomizeLabel(ctx, Component, common.TypeMetaBatchJob),
26
Annotations: common.CustomizeAnnotation(ctx, Component, common.TypeMetaBatchJob),
27
}
28
29
return []runtime.Object{&batchv1.Job{
30
TypeMeta: common.TypeMetaBatchJob,
31
ObjectMeta: objectMeta,
32
Spec: batchv1.JobSpec{
33
TTLSecondsAfterFinished: pointer.Int32(60),
34
Template: corev1.PodTemplateSpec{
35
ObjectMeta: objectMeta,
36
Spec: corev1.PodSpec{
37
RestartPolicy: corev1.RestartPolicyNever,
38
ServiceAccountName: Component,
39
EnableServiceLinks: pointer.Bool(false),
40
// The init container is designed to emulate Helm hooks
41
InitContainers: []corev1.Container{*common.DatabaseWaiterContainer(ctx)},
42
Containers: []corev1.Container{{
43
Name: Component,
44
Image: ctx.ImageName(ctx.Config.Repository, "db-migrations", ctx.VersionManifest.Components.DBMigrations.Version),
45
ImagePullPolicy: corev1.PullIfNotPresent,
46
Env: common.CustomizeEnvvar(ctx, Component, common.MergeEnv(
47
common.DatabaseEnv(&ctx.Config),
48
common.DefaultEnv(&ctx.Config),
49
)),
50
SecurityContext: &corev1.SecurityContext{
51
AllowPrivilegeEscalation: pointer.Bool(false),
52
},
53
Command: []string{
54
"sh",
55
"-c",
56
"cd /app/node_modules/@gitpod/gitpod-db && yarn run wait-for-db && yarn run typeorm migration:show || true && yarn run typeorm migration:run",
57
},
58
}},
59
Tolerations: common.WithTolerationWorkspaceComponentNotReady(ctx),
60
},
61
},
62
},
63
}}, nil
64
}
65
66