From 0299873fa7f6b8555639790adb1a3160a1aaa5bc Mon Sep 17 00:00:00 2001 From: Marc Nuri Date: Thu, 11 Apr 2024 18:58:20 +0200 Subject: [PATCH] ci: OpenShift 4 pipeline running on OSPO OSCI --- .github/workflows/e2e-osci-tests.yml | 53 +++++++++++++++++++ .../java/io/fabric8/openshift/AdaptIT.java | 2 + .../io/fabric8/openshift/BuildConfigIT.java | 2 + .../fabric8/openshift/BuildConfigWatchIT.java | 2 + .../java/io/fabric8/openshift/BuildIT.java | 2 + .../fabric8/openshift/DeploymentConfigIT.java | 2 + .../io/fabric8/openshift/ImageStreamIT.java | 2 + .../fabric8/openshift/ImageStreamTagIT.java | 2 + .../K8sAuthorizationOnOpenShiftIT.java | 2 + .../openshift/OpenShiftAuthorizationIT.java | 5 ++ .../java/io/fabric8/openshift/RouteIT.java | 4 +- .../openshift/SelfSubjectAccessReviewIT.java | 2 + .../java/io/fabric8/openshift/VersionIT.java | 2 + .../src/test/resources/buildconfig-it.yml | 10 ++-- .../test/resources/deploymentconfig-it.yml | 12 ++--- .../src/test/resources/imagestream-it.yml | 10 ++-- .../src/test/resources/route-it.yml | 10 ++-- .../src/test/resources/template-it.yml | 12 ++--- 18 files changed, 107 insertions(+), 29 deletions(-) create mode 100644 .github/workflows/e2e-osci-tests.yml diff --git a/.github/workflows/e2e-osci-tests.yml b/.github/workflows/e2e-osci-tests.yml new file mode 100644 index 00000000000..e617ecbd8d6 --- /dev/null +++ b/.github/workflows/e2e-osci-tests.yml @@ -0,0 +1,53 @@ +# +# Copyright (C) 2015 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +name: E2E osci.io Tests + +on: + workflow_dispatch: + schedule: + - cron: '0 4 * * *' # Every day at 4am + +concurrency: + group: single-instance-for-persistent-cluster + cancel-in-progress: true + +env: + IT_MODULE: kubernetes-itests + MAVEN_ARGS: -B -C -V -ntp -Dhttp.keepAlive=false -e + FAILSAFE_TEST_GROUPS: OSCI + +jobs: + e2e: + name: E2E OpenShift 4 + runs-on: ubuntu-latest + if: github.repository == 'fabric8io/kubernetes-client' + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Java 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + - name: Install oc + uses: redhat-actions/oc-installer@v1 + - name: Login to OpenShift + run: | + oc login --server=${{ secrets.OSCI_SERVER }} --token=${{ secrets.OSCI_TOKEN }} + - name: Run Integration Tests + run: | + ./mvnw ${MAVEN_ARGS} -Pitests -pl $IT_MODULE -Dgroups=$FAILSAFE_TEST_GROUPS verify diff --git a/kubernetes-itests/src/test/java/io/fabric8/openshift/AdaptIT.java b/kubernetes-itests/src/test/java/io/fabric8/openshift/AdaptIT.java index 23539b2b7e1..db2a71dfc06 100644 --- a/kubernetes-itests/src/test/java/io/fabric8/openshift/AdaptIT.java +++ b/kubernetes-itests/src/test/java/io/fabric8/openshift/AdaptIT.java @@ -20,11 +20,13 @@ import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.openshift.api.model.Project; import io.fabric8.openshift.client.OpenShiftClient; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; +@Tag("OSCI") @KubernetesTest(createEphemeralNamespace = false) @RequireK8sSupport(Project.class) class AdaptIT { diff --git a/kubernetes-itests/src/test/java/io/fabric8/openshift/BuildConfigIT.java b/kubernetes-itests/src/test/java/io/fabric8/openshift/BuildConfigIT.java index 1088e33013b..b76604fccba 100644 --- a/kubernetes-itests/src/test/java/io/fabric8/openshift/BuildConfigIT.java +++ b/kubernetes-itests/src/test/java/io/fabric8/openshift/BuildConfigIT.java @@ -24,6 +24,7 @@ import io.fabric8.openshift.api.model.BuildSourceBuilder; import io.fabric8.openshift.client.OpenShiftClient; import org.assertj.core.api.InstanceOfAssertFactories; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import java.util.Objects; @@ -34,6 +35,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; +@Tag("OSCI") @KubernetesTest(createEphemeralNamespace = false) @RequireK8sSupport(BuildConfig.class) @LoadKubernetesManifests("/buildconfig-it.yml") diff --git a/kubernetes-itests/src/test/java/io/fabric8/openshift/BuildConfigWatchIT.java b/kubernetes-itests/src/test/java/io/fabric8/openshift/BuildConfigWatchIT.java index ad4116152f8..159115389fe 100644 --- a/kubernetes-itests/src/test/java/io/fabric8/openshift/BuildConfigWatchIT.java +++ b/kubernetes-itests/src/test/java/io/fabric8/openshift/BuildConfigWatchIT.java @@ -26,6 +26,7 @@ import io.fabric8.openshift.api.model.BuildRequest; import io.fabric8.openshift.api.model.BuildRequestBuilder; import io.fabric8.openshift.client.OpenShiftClient; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import java.util.Objects; @@ -38,6 +39,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; +@Tag("OSCI") @KubernetesTest(createEphemeralNamespace = false) @RequireK8sSupport(BuildConfig.class) @LoadKubernetesManifests("/build-config-watch.yml") diff --git a/kubernetes-itests/src/test/java/io/fabric8/openshift/BuildIT.java b/kubernetes-itests/src/test/java/io/fabric8/openshift/BuildIT.java index 1fb70a64480..ca52e3f0704 100644 --- a/kubernetes-itests/src/test/java/io/fabric8/openshift/BuildIT.java +++ b/kubernetes-itests/src/test/java/io/fabric8/openshift/BuildIT.java @@ -32,6 +32,7 @@ import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.io.TempDir; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; @@ -45,6 +46,7 @@ import static io.fabric8.kubernetes.client.utils.Utils.generateId; import static org.assertj.core.api.Assertions.assertThat; +@Tag("OSCI") @KubernetesTest(createEphemeralNamespace = false) @RequireK8sSupport(Build.class) class BuildIT { diff --git a/kubernetes-itests/src/test/java/io/fabric8/openshift/DeploymentConfigIT.java b/kubernetes-itests/src/test/java/io/fabric8/openshift/DeploymentConfigIT.java index 016c360e9d6..9df3ac6e821 100644 --- a/kubernetes-itests/src/test/java/io/fabric8/openshift/DeploymentConfigIT.java +++ b/kubernetes-itests/src/test/java/io/fabric8/openshift/DeploymentConfigIT.java @@ -21,6 +21,7 @@ import io.fabric8.openshift.api.model.DeploymentConfig; import io.fabric8.openshift.api.model.DeploymentConfigList; import io.fabric8.openshift.client.OpenShiftClient; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import java.util.Objects; @@ -31,6 +32,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; +@Tag("OSCI") @KubernetesTest(createEphemeralNamespace = false) @RequireK8sSupport(DeploymentConfig.class) @LoadKubernetesManifests("/deploymentconfig-it.yml") diff --git a/kubernetes-itests/src/test/java/io/fabric8/openshift/ImageStreamIT.java b/kubernetes-itests/src/test/java/io/fabric8/openshift/ImageStreamIT.java index 6e256bc59a1..89cac02ccbd 100644 --- a/kubernetes-itests/src/test/java/io/fabric8/openshift/ImageStreamIT.java +++ b/kubernetes-itests/src/test/java/io/fabric8/openshift/ImageStreamIT.java @@ -22,6 +22,7 @@ import io.fabric8.openshift.api.model.ImageStreamBuilder; import io.fabric8.openshift.api.model.ImageStreamList; import io.fabric8.openshift.client.OpenShiftClient; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import java.util.Objects; @@ -32,6 +33,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; +@Tag("OSCI") @KubernetesTest(createEphemeralNamespace = false) @RequireK8sSupport(ImageStream.class) @LoadKubernetesManifests("/imagestream-it.yml") diff --git a/kubernetes-itests/src/test/java/io/fabric8/openshift/ImageStreamTagIT.java b/kubernetes-itests/src/test/java/io/fabric8/openshift/ImageStreamTagIT.java index 2d4d4bb87a7..86f30e80cc7 100644 --- a/kubernetes-itests/src/test/java/io/fabric8/openshift/ImageStreamTagIT.java +++ b/kubernetes-itests/src/test/java/io/fabric8/openshift/ImageStreamTagIT.java @@ -22,6 +22,7 @@ import io.fabric8.openshift.api.model.ImageStreamTagBuilder; import io.fabric8.openshift.api.model.ImageStreamTagList; import io.fabric8.openshift.client.OpenShiftClient; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import java.util.Optional; @@ -31,6 +32,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; +@Tag("OSCI") @KubernetesTest(createEphemeralNamespace = false) @RequireK8sSupport(ImageStreamTag.class) @LoadKubernetesManifests("/imagestreamtag-it.yml") diff --git a/kubernetes-itests/src/test/java/io/fabric8/openshift/K8sAuthorizationOnOpenShiftIT.java b/kubernetes-itests/src/test/java/io/fabric8/openshift/K8sAuthorizationOnOpenShiftIT.java index 8e863705827..986c429771b 100644 --- a/kubernetes-itests/src/test/java/io/fabric8/openshift/K8sAuthorizationOnOpenShiftIT.java +++ b/kubernetes-itests/src/test/java/io/fabric8/openshift/K8sAuthorizationOnOpenShiftIT.java @@ -32,6 +32,7 @@ import io.fabric8.openshift.api.model.Project; import io.fabric8.openshift.api.model.User; import io.fabric8.openshift.client.OpenShiftClient; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -44,6 +45,7 @@ class K8sAuthorizationOnOpenShiftIT { OpenShiftClient client; + @Tag("OSCI") @Test void createRoleK8s() { // Given diff --git a/kubernetes-itests/src/test/java/io/fabric8/openshift/OpenShiftAuthorizationIT.java b/kubernetes-itests/src/test/java/io/fabric8/openshift/OpenShiftAuthorizationIT.java index 3c32676d6b8..440bd89d7f4 100644 --- a/kubernetes-itests/src/test/java/io/fabric8/openshift/OpenShiftAuthorizationIT.java +++ b/kubernetes-itests/src/test/java/io/fabric8/openshift/OpenShiftAuthorizationIT.java @@ -34,6 +34,7 @@ import io.fabric8.openshift.api.model.SubjectRulesReview; import io.fabric8.openshift.api.model.SubjectRulesReviewBuilder; import io.fabric8.openshift.client.OpenShiftClient; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -62,6 +63,7 @@ void createSubjectAccessReviewOpenShift() { assertTrue(sarResponse.getAllowed()); } + @Tag("OSCI") @Test void createSubjectRulesReviewOpenShift() { // Given @@ -82,6 +84,7 @@ void createSubjectRulesReviewOpenShift() { assertFalse(createdSrr.getStatus().getRules().isEmpty()); } + @Tag("OSCI") @Test void createSelfSubjectRulesReview() { // Given @@ -98,6 +101,7 @@ void createSelfSubjectRulesReview() { assertFalse(createdSsrr.getStatus().getRules().isEmpty()); } + @Tag("OSCI") @Test void createLocalResourceAccessReview() { // Given @@ -117,6 +121,7 @@ void createLocalResourceAccessReview() { assertFalse(rarr.getGroups().isEmpty()); } + @Tag("OSCI") @Test void createLocalSubjectAccessReview() { // Given diff --git a/kubernetes-itests/src/test/java/io/fabric8/openshift/RouteIT.java b/kubernetes-itests/src/test/java/io/fabric8/openshift/RouteIT.java index 2cd5ee5a124..2aa5035b888 100644 --- a/kubernetes-itests/src/test/java/io/fabric8/openshift/RouteIT.java +++ b/kubernetes-itests/src/test/java/io/fabric8/openshift/RouteIT.java @@ -22,6 +22,7 @@ import io.fabric8.openshift.api.model.RouteBuilder; import io.fabric8.openshift.api.model.RouteList; import io.fabric8.openshift.client.OpenShiftClient; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import java.util.Collections; @@ -33,6 +34,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; +@Tag("OSCI") @KubernetesTest(createEphemeralNamespace = false) @RequireK8sSupport(Route.class) @LoadKubernetesManifests("/route-it.yml") @@ -83,14 +85,12 @@ void createOrReplace() { // When route.getMetadata().setAnnotations(Collections.singletonMap("foo", "bar")); - route.getSpec().setHost("test.fabric8.io"); route = client.routes().createOrReplace(route); // Then assertNotNull(route); assertEquals("route-createorreplace", route.getMetadata().getName()); assertEquals("bar", route.getMetadata().getAnnotations().get("foo")); - assertEquals("test.fabric8.io", route.getSpec().getHost()); } } diff --git a/kubernetes-itests/src/test/java/io/fabric8/openshift/SelfSubjectAccessReviewIT.java b/kubernetes-itests/src/test/java/io/fabric8/openshift/SelfSubjectAccessReviewIT.java index bd41f8c8646..7bb273109ac 100644 --- a/kubernetes-itests/src/test/java/io/fabric8/openshift/SelfSubjectAccessReviewIT.java +++ b/kubernetes-itests/src/test/java/io/fabric8/openshift/SelfSubjectAccessReviewIT.java @@ -21,10 +21,12 @@ import io.fabric8.kubernetes.api.model.authorization.v1.SelfSubjectAccessReviewBuilder; import io.fabric8.openshift.api.model.Project; import io.fabric8.openshift.client.OpenShiftClient; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertTrue; +@Tag("OSCI") @KubernetesTest(createEphemeralNamespace = false) @RequireK8sSupport(Project.class) class SelfSubjectAccessReviewIT { diff --git a/kubernetes-itests/src/test/java/io/fabric8/openshift/VersionIT.java b/kubernetes-itests/src/test/java/io/fabric8/openshift/VersionIT.java index 798cea68a68..ae4881259b8 100644 --- a/kubernetes-itests/src/test/java/io/fabric8/openshift/VersionIT.java +++ b/kubernetes-itests/src/test/java/io/fabric8/openshift/VersionIT.java @@ -20,10 +20,12 @@ import io.fabric8.kubernetes.client.VersionInfo; import io.fabric8.openshift.api.model.Project; import io.fabric8.openshift.client.OpenShiftClient; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +@Tag("OSCI") @KubernetesTest(createEphemeralNamespace = false) @RequireK8sSupport(Project.class) class VersionIT { diff --git a/kubernetes-itests/src/test/resources/buildconfig-it.yml b/kubernetes-itests/src/test/resources/buildconfig-it.yml index 0772a6828f9..469270446ca 100644 --- a/kubernetes-itests/src/test/resources/buildconfig-it.yml +++ b/kubernetes-itests/src/test/resources/buildconfig-it.yml @@ -16,7 +16,7 @@ --- kind: "BuildConfig" -apiVersion: "v1" +apiVersion: "build.openshift.io/v1" metadata: name: bc-get spec: @@ -45,7 +45,7 @@ spec: name: "origin-ruby-sample:latest" --- kind: "BuildConfig" -apiVersion: "v1" +apiVersion: "build.openshift.io/v1" metadata: name: bc-list spec: @@ -74,7 +74,7 @@ spec: name: "origin-ruby-sample:latest" --- kind: "BuildConfig" -apiVersion: "v1" +apiVersion: "build.openshift.io/v1" metadata: name: bc-update spec: @@ -103,7 +103,7 @@ spec: name: "origin-ruby-sample:latest" --- kind: "BuildConfig" -apiVersion: "v1" +apiVersion: "build.openshift.io/v1" metadata: name: bc-delete spec: @@ -132,7 +132,7 @@ spec: name: "origin-ruby-sample:latest" --- kind: "BuildConfig" -apiVersion: "v1" +apiVersion: "build.openshift.io/v1" metadata: name: bc-createorreplace spec: diff --git a/kubernetes-itests/src/test/resources/deploymentconfig-it.yml b/kubernetes-itests/src/test/resources/deploymentconfig-it.yml index f10e7ef513e..2104d421e84 100644 --- a/kubernetes-itests/src/test/resources/deploymentconfig-it.yml +++ b/kubernetes-itests/src/test/resources/deploymentconfig-it.yml @@ -16,7 +16,7 @@ --- kind: "DeploymentConfig" -apiVersion: "v1" +apiVersion: "apps.openshift.io/v1" metadata: name: dc-get spec: @@ -48,7 +48,7 @@ spec: type: "Rolling" --- kind: "DeploymentConfig" -apiVersion: "v1" +apiVersion: "apps.openshift.io/v1" metadata: name: dc-list spec: @@ -80,7 +80,7 @@ spec: type: "Rolling" --- kind: "DeploymentConfig" -apiVersion: "v1" +apiVersion: "apps.openshift.io/v1" metadata: name: dc-update spec: @@ -112,7 +112,7 @@ spec: type: "Rolling" --- kind: "DeploymentConfig" -apiVersion: "v1" +apiVersion: "apps.openshift.io/v1" metadata: name: dc-scale spec: @@ -144,7 +144,7 @@ spec: type: "Rolling" --- kind: "DeploymentConfig" -apiVersion: "v1" +apiVersion: "apps.openshift.io/v1" metadata: name: dc-delete spec: @@ -176,7 +176,7 @@ spec: type: "Rolling" --- kind: "DeploymentConfig" -apiVersion: "v1" +apiVersion: "apps.openshift.io/v1" metadata: name: dc-createorreplace spec: diff --git a/kubernetes-itests/src/test/resources/imagestream-it.yml b/kubernetes-itests/src/test/resources/imagestream-it.yml index d8bc5c20565..55580b3e635 100644 --- a/kubernetes-itests/src/test/resources/imagestream-it.yml +++ b/kubernetes-itests/src/test/resources/imagestream-it.yml @@ -15,35 +15,35 @@ # --- -apiVersion: "v1" +apiVersion: "image.openshift.io/v1" kind: "ImageStream" metadata: name: "is-get" spec: dockerImageRepository: "docker.io/openshift/ruby-20-centos7" --- -apiVersion: "v1" +apiVersion: "image.openshift.io/v1" kind: "ImageStream" metadata: name: "is-list" spec: dockerImageRepository: "docker.io/openshift/ruby-20-centos7" --- -apiVersion: "v1" +apiVersion: "image.openshift.io/v1" kind: "ImageStream" metadata: name: "is-update" spec: dockerImageRepository: "docker.io/openshift/ruby-20-centos7" --- -apiVersion: "v1" +apiVersion: "image.openshift.io/v1" kind: "ImageStream" metadata: name: "is-delete" spec: dockerImageRepository: "docker.io/openshift/ruby-20-centos7" --- -apiVersion: "v1" +apiVersion: "image.openshift.io/v1" kind: "ImageStream" metadata: name: "is-createorreplace" diff --git a/kubernetes-itests/src/test/resources/route-it.yml b/kubernetes-itests/src/test/resources/route-it.yml index ed5ed977256..17e96d097ad 100644 --- a/kubernetes-itests/src/test/resources/route-it.yml +++ b/kubernetes-itests/src/test/resources/route-it.yml @@ -15,7 +15,7 @@ # --- -apiVersion: v1 +apiVersion: route.openshift.io/v1 kind: Route metadata: name: route-get @@ -25,7 +25,7 @@ spec: kind: Service name: service-name --- -apiVersion: v1 +apiVersion: route.openshift.io/v1 kind: Route metadata: name: route-list @@ -35,7 +35,7 @@ spec: kind: Service name: service-name --- -apiVersion: v1 +apiVersion: route.openshift.io/v1 kind: Route metadata: name: route-update @@ -45,7 +45,7 @@ spec: kind: Service name: service-name --- -apiVersion: v1 +apiVersion: route.openshift.io/v1 kind: Route metadata: name: route-delete @@ -55,7 +55,7 @@ spec: kind: Service name: service-name --- -apiVersion: v1 +apiVersion: route.openshift.io/v1 kind: Route metadata: name: route-createorreplace diff --git a/kubernetes-itests/src/test/resources/template-it.yml b/kubernetes-itests/src/test/resources/template-it.yml index 1eb13cde57e..0d6e7257228 100644 --- a/kubernetes-itests/src/test/resources/template-it.yml +++ b/kubernetes-itests/src/test/resources/template-it.yml @@ -15,7 +15,7 @@ # --- -apiVersion: v1 +apiVersion: template.openshift.io/v1 kind: Template metadata: name: template-get @@ -23,7 +23,7 @@ objects: - apiVersion: v1 kind: Service metadata: - name: my-service + name: template-get spec: selector: app: MyApp @@ -37,7 +37,7 @@ objects: port: 443 targetPort: 9377 --- -apiVersion: v1 +apiVersion: template.openshift.io/v1 kind: Template metadata: name: template-list @@ -49,7 +49,7 @@ objects: - apiVersion: v1 kind: Service metadata: - name: my-service + name: template-list spec: selector: app: MyApp @@ -63,7 +63,7 @@ objects: port: 443 targetPort: 9377 --- -apiVersion: v1 +apiVersion: template.openshift.io/v1 kind: Template metadata: name: template-delete @@ -75,7 +75,7 @@ objects: - apiVersion: v1 kind: Service metadata: - name: my-service + name: template-delete spec: selector: app: MyApp