Skip to content

Commit 8cc391a

Browse files
authored
Release docker image to dockerhub as well (#259)
1 parent 181a39d commit 8cc391a

File tree

6 files changed

+50
-52
lines changed

6 files changed

+50
-52
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
kind: Added
2+
body: starting with this release, deploying to dockerhub (ydbplatform/ydb-kubernetes-operator)
3+
time: 2024-11-13T18:16:28.275365313+01:00
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
kind: Fixed
2+
body: e2e tests and unit tests flapped because of the race between storage finalizers and uninstalling operator helm chart
3+
time: 2024-11-13T21:45:12.19273022+01:00

.github/workflows/upload-artifacts.yml

+11
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ jobs:
6767
# Public:
6868
docker build -t cr.yandex/crpl7ipeu79oseqhcgn2/ydb-operator:"$VERSION" .
6969
docker push cr.yandex/crpl7ipeu79oseqhcgn2/ydb-operator:"$VERSION"
70+
7071
# Private:
7172
# no rebuild will happen, docker will fetch from cache and just retag:
7273
docker build -t cr.yandex/crpsjg1coh47p81vh2lc/ydb-kubernetes-operator:"$VERSION" .
@@ -95,6 +96,16 @@ jobs:
9596
aws s3 --endpoint-url=https://storage.yandexcloud.net \
9697
cp ./charts/index.yaml s3://charts.ydb.tech/index.yaml
9798
99+
- name: login-to-dockerhub
100+
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
101+
with:
102+
username: ydbplatform
103+
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
104+
- name: retag-and-push-operator-image-to-dockerhub
105+
run: |
106+
docker build -t ydbplatform/ydb-kubernetes-operator:"$VERSION" .
107+
docker push ydbplatform/ydb-kubernetes-operator:"$VERSION"
108+
98109
- name: append-artifacts-info-to-release-notes
99110
run: |
100111
echo "" >> .changes/v$VERSION.md

.golangci.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ run:
44
concurrency: 4
55

66
# timeout for analysis, e.g. 30s, 5m, default is 1m
7-
deadline: 5m
7+
timeout: 5m
88

99
# exit code when at least one issue was found, default is 1
1010
issues-exit-code: 1

e2e/tests/smoke_test.go

+29-50
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,22 @@ func checkPodsRunningAndReady(ctx context.Context, podLabelKey, podLabelValue st
146146
}, test.Timeout, test.Interval).Should(BeTrue())
147147
}
148148

149+
func deleteStorageSafely(ctx context.Context, storageSample *v1alpha1.Storage) {
150+
// not checking that deletion completed successfully
151+
// because some tests delete storage themselves and
152+
// it may already be deleted.
153+
_ = k8sClient.Delete(ctx, storageSample)
154+
155+
Eventually(func() bool {
156+
fetched := v1alpha1.Storage{}
157+
err := k8sClient.Get(ctx, types.NamespacedName{
158+
Name: storageSample.Name,
159+
Namespace: testobjects.YdbNamespace,
160+
}, &fetched)
161+
return apierrors.IsNotFound(err)
162+
}, Timeout, Interval).Should(BeTrue())
163+
}
164+
149165
func bringYdbCliToPod(podName, podNamespace string) {
150166
Eventually(func(g Gomega) error {
151167
args := []string{
@@ -305,9 +321,7 @@ var _ = Describe("Operator smoke test", func() {
305321
It("Check webhook defaulter", func() {
306322
emptyStorageDefaultFields(storageSample)
307323
Expect(k8sClient.Create(ctx, storageSample)).Should(Succeed())
308-
defer func() {
309-
Expect(k8sClient.Delete(ctx, storageSample)).Should(Succeed())
310-
}()
324+
defer deleteStorageSafely(ctx, storageSample)
311325

312326
emptyDatabaseDefaultFields(databaseSample)
313327
Expect(k8sClient.Create(ctx, databaseSample)).Should(Succeed())
@@ -330,17 +344,13 @@ var _ = Describe("Operator smoke test", func() {
330344
},
331345
}
332346
Expect(k8sClient.Create(ctx, storageSample)).Should(Succeed())
333-
defer func() {
334-
Expect(k8sClient.Delete(ctx, storageSample)).Should(Succeed())
335-
}()
347+
defer deleteStorageSafely(ctx, storageSample)
336348
})
337349

338350
It("general smoke pipeline, create storage + database", func() {
339351
By("issuing create commands...")
340352
Expect(k8sClient.Create(ctx, storageSample)).Should(Succeed())
341-
defer func() {
342-
Expect(k8sClient.Delete(ctx, storageSample)).Should(Succeed())
343-
}()
353+
defer deleteStorageSafely(ctx, storageSample)
344354
Expect(k8sClient.Create(ctx, databaseSample)).Should(Succeed())
345355
defer func() {
346356
Expect(k8sClient.Delete(ctx, databaseSample)).Should(Succeed())
@@ -381,9 +391,7 @@ var _ = Describe("Operator smoke test", func() {
381391
It("pause and un-pause Storage, should destroy and bring up Pods", func() {
382392
By("issuing create commands...")
383393
Expect(k8sClient.Create(ctx, storageSample)).Should(Succeed())
384-
defer func() {
385-
Expect(k8sClient.Delete(ctx, storageSample)).Should(Succeed())
386-
}()
394+
defer deleteStorageSafely(ctx, storageSample)
387395

388396
By("waiting until Storage is ready...")
389397
waitUntilStorageReady(ctx, storageSample.Name, testobjects.YdbNamespace)
@@ -431,9 +439,7 @@ var _ = Describe("Operator smoke test", func() {
431439
It("freeze + delete StatefulSet + un-freeze Storage", func() {
432440
By("issuing create commands...")
433441
Expect(k8sClient.Create(ctx, storageSample)).Should(Succeed())
434-
defer func() {
435-
Expect(k8sClient.Delete(ctx, storageSample)).Should(Succeed())
436-
}()
442+
defer deleteStorageSafely(ctx, storageSample)
437443

438444
By("waiting until Storage is ready...")
439445
waitUntilStorageReady(ctx, storageSample.Name, testobjects.YdbNamespace)
@@ -503,20 +509,6 @@ var _ = Describe("Operator smoke test", func() {
503509

504510
By("checking that all the storage pods are running and ready...")
505511
checkPodsRunningAndReady(ctx, "ydb-cluster", "kind-storage", storageSample.Spec.Nodes)
506-
507-
/*
508-
// This test suite attempts to create a database on uninitialised storage
509-
510-
By("database can be healthily created after Frozen storage...")
511-
Expect(k8sClient.Create(ctx, databaseSample)).Should(Succeed())
512-
defer func() {
513-
Expect(k8sClient.Delete(ctx, databaseSample)).Should(Succeed())
514-
}()
515-
By("waiting until database is ready...")
516-
waitUntilDatabaseReady(ctx, databaseSample.Name, testobjects.YdbNamespace)
517-
By("checking that all the database pods are running and ready...")
518-
checkPodsRunningAndReady(ctx, "ydb-cluster", "kind-database", databaseSample.Spec.Nodes)
519-
*/
520512
})
521513

522514
It("create storage and database with nodeSets", func() {
@@ -538,9 +530,7 @@ var _ = Describe("Operator smoke test", func() {
538530
})
539531
}
540532
Expect(k8sClient.Create(ctx, storageSample)).Should(Succeed())
541-
defer func() {
542-
Expect(k8sClient.Delete(ctx, storageSample)).Should(Succeed())
543-
}()
533+
defer deleteStorageSafely(ctx, storageSample)
544534
Expect(k8sClient.Create(ctx, databaseSample)).Should(Succeed())
545535
defer func() {
546536
Expect(k8sClient.Delete(ctx, databaseSample)).Should(Succeed())
@@ -619,9 +609,7 @@ var _ = Describe("Operator smoke test", func() {
619609
},
620610
}
621611
Expect(k8sClient.Create(ctx, storageSample)).Should(Succeed())
622-
defer func() {
623-
Expect(k8sClient.Delete(ctx, storageSample)).Should(Succeed())
624-
}()
612+
defer deleteStorageSafely(ctx, storageSample)
625613

626614
By("waiting until Storage is ready...")
627615
waitUntilStorageReady(ctx, storageSample.Name, testobjects.YdbNamespace)
@@ -632,9 +620,7 @@ var _ = Describe("Operator smoke test", func() {
632620

633621
It("storage.State goes Pending -> Preparing -> Initializing -> Provisioning -> Ready", func() {
634622
Expect(k8sClient.Create(ctx, storageSample)).Should(Succeed())
635-
defer func() {
636-
Expect(k8sClient.Delete(ctx, storageSample)).Should(Succeed())
637-
}()
623+
defer deleteStorageSafely(ctx, storageSample)
638624

639625
By("waiting until Storage is ready...")
640626
waitUntilStorageReady(ctx, storageSample.Name, testobjects.YdbNamespace)
@@ -688,9 +674,7 @@ var _ = Describe("Operator smoke test", func() {
688674
Key: "ca.crt",
689675
}
690676
Expect(k8sClient.Create(ctx, storageSample)).Should(Succeed())
691-
defer func() {
692-
Expect(k8sClient.Delete(ctx, storageSample)).Should(Succeed())
693-
}()
677+
defer deleteStorageSafely(ctx, storageSample)
694678

695679
By("waiting until Storage is ready...")
696680
waitUntilStorageReady(ctx, storageSample.Name, testobjects.YdbNamespace)
@@ -742,6 +726,7 @@ var _ = Describe("Operator smoke test", func() {
742726
It("Check that Storage deleted after Database...", func() {
743727
By("create storage...")
744728
Expect(k8sClient.Create(ctx, storageSample)).Should(Succeed())
729+
defer deleteStorageSafely(ctx, storageSample)
745730

746731
By("create database...")
747732
Expect(k8sClient.Create(ctx, databaseSample)).Should(Succeed())
@@ -803,9 +788,7 @@ var _ = Describe("Operator smoke test", func() {
803788
storageSample = testobjects.DefaultStorage(filepath.Join(".", "data", "storage-mirror-3-dc-dynconfig.yaml"))
804789

805790
Expect(k8sClient.Create(ctx, storageSample)).Should(Succeed())
806-
defer func() {
807-
Expect(k8sClient.Delete(ctx, storageSample)).Should(Succeed())
808-
}()
791+
defer deleteStorageSafely(ctx, storageSample)
809792

810793
storage := v1alpha1.Storage{}
811794
By("waiting until StorageInitialized condition is true...")
@@ -919,9 +902,7 @@ var _ = Describe("Operator smoke test", func() {
919902
},
920903
}
921904
Expect(k8sClient.Create(ctx, storageSample)).Should(Succeed())
922-
defer func() {
923-
Expect(k8sClient.Delete(ctx, storageSample)).Should(Succeed())
924-
}()
905+
defer deleteStorageSafely(ctx, storageSample)
925906

926907
By("create database...")
927908
databaseSample.Spec.Nodes = 1
@@ -959,9 +940,7 @@ var _ = Describe("Operator smoke test", func() {
959940
It("Check encryption for Database", func() {
960941
By("create storage...")
961942
Expect(k8sClient.Create(ctx, storageSample)).Should(Succeed())
962-
defer func() {
963-
Expect(k8sClient.Delete(ctx, storageSample)).Should(Succeed())
964-
}()
943+
defer deleteStorageSafely(ctx, storageSample)
965944
By("create database...")
966945
databaseSample.Spec.Encryption = &v1alpha1.EncryptionConfig{
967946
Enabled: true,

internal/controllers/database/controller_test.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ func TestAPIs(t *testing.T) {
5656
var _ = Describe("Database controller medium tests", func() {
5757
var namespace corev1.Namespace
5858
var storageSample v1alpha1.Storage
59+
var databaseSample v1alpha1.Database
5960

6061
BeforeEach(func() {
6162
namespace = corev1.Namespace{
@@ -94,14 +95,15 @@ var _ = Describe("Database controller medium tests", func() {
9495
})
9596

9697
AfterEach(func() {
98+
Expect(k8sClient.Delete(ctx, &databaseSample)).Should(Succeed())
9799
Expect(k8sClient.Delete(ctx, &storageSample)).Should(Succeed())
98100
Expect(k8sClient.Delete(ctx, &namespace)).Should(Succeed())
99101
test.DeleteAllObjects(env, k8sClient, &namespace)
100102
})
101103

102104
It("Checking field propagation to objects", func() {
103105
By("Check that Shared Database was created...")
104-
databaseSample := *testobjects.DefaultDatabase()
106+
databaseSample = *testobjects.DefaultDatabase()
105107
databaseSample.Spec.SharedResources = &v1alpha1.DatabaseResources{
106108
StorageUnits: []v1alpha1.StorageUnit{
107109
{

0 commit comments

Comments
 (0)