diff --git a/CHANGELOG.md b/CHANGELOG.md index 363030c8a6..02c89a13eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,7 @@ Usage: * Fix #2472: Support for Helm Chart.yaml appVersion field defaulting to project version * Fix #2474: Remove Docker-related classes providing unused functionality * Fix #2477: Support for Spring Boot 3.2.0 (and newer) layered jar format +* Fix #2500: `oc:build` does not add git annotations in Openshift Build resource * Fix #2503: Container Images Jolokia agent bumped to 2.0.0 * Fix #2532: Bump version.kubernetes-client from 6.9.2 to 6.10.0 diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/GitEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/GitEnricher.java index 46bd35c2c6..9bbdd993ac 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/GitEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/GitEnricher.java @@ -15,6 +15,7 @@ import io.fabric8.kubernetes.api.builder.TypedVisitor; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; +import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; import io.fabric8.kubernetes.api.model.ReplicationControllerBuilder; import io.fabric8.kubernetes.api.model.ServiceBuilder; import io.fabric8.kubernetes.api.model.apps.DaemonSetBuilder; @@ -78,60 +79,11 @@ private Map getAnnotations(PlatformMode platformMode) { } @Override - public void create(PlatformMode platformMode, KubernetesListBuilder builder) { - builder.accept(new TypedVisitor() { + public void enrich(PlatformMode platformMode, KubernetesListBuilder builder) { + builder.accept(new TypedVisitor() { @Override - public void visit(ServiceBuilder serviceBuilder) { - serviceBuilder.editMetadata().addToAnnotations(getAnnotations(platformMode)).endMetadata(); - } - }); - - builder.accept(new TypedVisitor() { - @Override - public void visit(DeploymentBuilder builder) { - builder.editMetadata().addToAnnotations(getAnnotations(platformMode)).endMetadata(); - } - }); - - builder.accept(new TypedVisitor() { - @Override - public void visit(DeploymentConfigBuilder builder) { - builder.editMetadata().addToAnnotations(getAnnotations(platformMode)).endMetadata(); - } - }); - - builder.accept(new TypedVisitor() { - @Override - public void visit(ReplicaSetBuilder builder) { - builder.editMetadata().addToAnnotations(getAnnotations(platformMode)).endMetadata(); - } - }); - - builder.accept(new TypedVisitor() { - @Override - public void visit(ReplicationControllerBuilder builder) { - builder.editMetadata().addToAnnotations(getAnnotations(platformMode)).endMetadata(); - } - }); - - builder.accept(new TypedVisitor() { - @Override - public void visit(DaemonSetBuilder builder) { - builder.editMetadata().addToAnnotations(getAnnotations(platformMode)).endMetadata(); - } - }); - - builder.accept(new TypedVisitor() { - @Override - public void visit(StatefulSetBuilder builder) { - builder.editMetadata().addToAnnotations(getAnnotations(platformMode)).endMetadata(); - } - }); - - builder.accept(new TypedVisitor() { - @Override - public void visit(JobBuilder builder) { - builder.editMetadata().addToAnnotations(getAnnotations(platformMode)).endMetadata(); + public void visit(ObjectMetaBuilder objectMetaBuilder) { + objectMetaBuilder.addToAnnotations(getAnnotations(platformMode)); } }); } diff --git a/jkube-kit/enricher/generic/src/test/java/org/eclipse/jkube/enricher/generic/GitEnricherTest.java b/jkube-kit/enricher/generic/src/test/java/org/eclipse/jkube/enricher/generic/GitEnricherTest.java index f001db9e2c..c09eface9f 100644 --- a/jkube-kit/enricher/generic/src/test/java/org/eclipse/jkube/enricher/generic/GitEnricherTest.java +++ b/jkube-kit/enricher/generic/src/test/java/org/eclipse/jkube/enricher/generic/GitEnricherTest.java @@ -16,13 +16,16 @@ import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; import io.fabric8.kubernetes.api.model.ReplicationControllerBuilder; +import io.fabric8.kubernetes.api.model.SecretBuilder; import io.fabric8.kubernetes.api.model.ServiceBuilder; import io.fabric8.kubernetes.api.model.apps.DaemonSetBuilder; import io.fabric8.kubernetes.api.model.apps.DeploymentBuilder; import io.fabric8.kubernetes.api.model.apps.ReplicaSetBuilder; import io.fabric8.kubernetes.api.model.apps.StatefulSetBuilder; import io.fabric8.kubernetes.api.model.batch.v1.JobBuilder; +import io.fabric8.openshift.api.model.BuildConfigBuilder; import io.fabric8.openshift.api.model.DeploymentConfigBuilder; +import io.fabric8.openshift.api.model.ImageStreamBuilder; import org.assertj.core.api.InstanceOfAssertFactories; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.revwalk.RevCommit; @@ -70,7 +73,7 @@ class GitEnricherTest { @BeforeEach void setUp() throws Exception { - klb = new KubernetesListBuilder().withItems(new ServiceBuilder().build()); + klb = new KubernetesListBuilder().withItems(new ServiceBuilder().withNewMetadata().endMetadata().build()); properties = new Properties(); context = JKubeEnricherContext.builder() .project(JavaProject.builder() @@ -138,9 +141,9 @@ void getAnnotations_addedWithNullCommitValues() { @Test @DisplayName("no .git repository found, then no git annotations added") - void create_whenNoGitRepositoryFound_thenNoAnnotationsAdded() { + void enrich_whenNoGitRepositoryFound_thenNoAnnotationsAdded() { // When - gitEnricher.create(PlatformMode.kubernetes, klb); + gitEnricher.enrich(PlatformMode.kubernetes, klb); // Then HasMetadata result = klb.buildFirstItem(); @@ -162,7 +165,7 @@ void withEmptyGitDirectory_thenNoGitAnnotationsAdded() throws Exception { // Given FileUtil.createDirectory(new File(baseDirectory, ".git")); // When - gitEnricher.create(PlatformMode.kubernetes, klb); + gitEnricher.enrich(PlatformMode.kubernetes, klb); // Then HasMetadata result = klb.buildFirstItem(); assertThat(result) @@ -193,22 +196,27 @@ void setUp() throws Exception { Stream controllerResources() { return Stream.of( - arguments(new ServiceBuilder().build()), - arguments(new DeploymentBuilder().build()), - arguments(new DeploymentConfigBuilder().build()), - arguments(new ReplicaSetBuilder().build()), - arguments(new ReplicationControllerBuilder().build()), - arguments(new DaemonSetBuilder().build()), - arguments(new StatefulSetBuilder().build()), - arguments(new JobBuilder().build()) + arguments(new ServiceBuilder().withNewMetadata().endMetadata().build()), + arguments(new DeploymentBuilder().withNewMetadata().endMetadata().build()), + arguments(new DeploymentConfigBuilder().withNewMetadata().endMetadata().build()), + arguments(new ReplicaSetBuilder().withNewMetadata().endMetadata().build()), + arguments(new ReplicationControllerBuilder().withNewMetadata().endMetadata().build()), + arguments(new DaemonSetBuilder().withNewMetadata().endMetadata().build()), + arguments(new StatefulSetBuilder().withNewMetadata().endMetadata().build()), + arguments(new JobBuilder().withNewMetadata().endMetadata().build()), + arguments(new SecretBuilder().withNewMetadata().endMetadata().build()), + arguments(new ImageStreamBuilder().withNewMetadata().endMetadata().build()), + arguments(new BuildConfigBuilder().withNewMetadata().endMetadata().build()) ); } @ParameterizedTest(name = "Git annotations should be added to {0}") @MethodSource("controllerResources") - void create_whenResourceProvided_thenAddGitAnnotations(HasMetadata h) throws Exception { + void enrich_whenResourceProvided_thenAddGitAnnotations(HasMetadata h) { + // Given + klb = new KubernetesListBuilder().addToItems(h); // When - gitEnricher.create(PlatformMode.kubernetes, klb); + gitEnricher.enrich(PlatformMode.kubernetes, klb); // Then HasMetadata result = klb.buildFirstItem(); assertThat(result) @@ -227,7 +235,7 @@ void whenGitRemotePropertySpecified_thenUseProvidedGitRemoteInAnnotations() thro properties.put("jkube.remoteName", "upstream"); // When - gitEnricher.create(PlatformMode.kubernetes, klb); + gitEnricher.enrich(PlatformMode.kubernetes, klb); // Then HasMetadata result = klb.buildFirstItem(); @@ -246,7 +254,7 @@ void whenRemoteNotFound_thenGitUrlAnnotationNotAdded() throws Exception { git.remoteRemove().setRemoteName("origin").call(); // When - gitEnricher.create(PlatformMode.kubernetes, klb); + gitEnricher.enrich(PlatformMode.kubernetes, klb); // Then HasMetadata result = klb.buildFirstItem(); @@ -263,7 +271,7 @@ void whenRemoteNotFound_thenGitUrlAnnotationNotAdded() throws Exception { @DisplayName("OpenShift vcs-uri, vcs-ref annotations added in OpenShift Platform") void whenPlatformModeOpenShift_thenAddOpenShiftVcsAnnotations() { // When - gitEnricher.create(PlatformMode.openshift, klb); + gitEnricher.enrich(PlatformMode.openshift, klb); // Then HasMetadata result = klb.buildFirstItem(); @@ -286,3 +294,4 @@ private void assertJkubeAnnotationsRemoteUrlAndBranch(Map annota .containsEntry("jkube.io/git-branch", GIT_BRANCH); } } + diff --git a/kubernetes-maven-plugin/it/src/it/dependency-resources/expected/kubernetes.yml b/kubernetes-maven-plugin/it/src/it/dependency-resources/expected/kubernetes.yml index ae7b688dec..d78b6cabf0 100644 --- a/kubernetes-maven-plugin/it/src/it/dependency-resources/expected/kubernetes.yml +++ b/kubernetes-maven-plugin/it/src/it/dependency-resources/expected/kubernetes.yml @@ -62,6 +62,9 @@ items: metadata: annotations: image.openshift.io/triggers: "@ignore@" + jkube.eclipse.org/git-branch: "@ignore@" + jkube.eclipse.org/git-commit: "@ignore@" + jkube.eclipse.org/git-url: "@ignore@" labels: env: dev role: web @@ -73,6 +76,10 @@ items: role: web template: metadata: + annotations: + jkube.eclipse.org/git-branch: "@ignore@" + jkube.eclipse.org/git-commit: "@ignore@" + jkube.eclipse.org/git-url: "@ignore@" labels: role: web spec: diff --git a/kubernetes-maven-plugin/it/src/it/fragments/expected/kubernetes.yml b/kubernetes-maven-plugin/it/src/it/fragments/expected/kubernetes.yml index a79a2efd16..e7bc7cb4d9 100644 --- a/kubernetes-maven-plugin/it/src/it/fragments/expected/kubernetes.yml +++ b/kubernetes-maven-plugin/it/src/it/fragments/expected/kubernetes.yml @@ -20,6 +20,9 @@ items: kind: ServiceAccount metadata: annotations: + jkube.eclipse.org/git-url: "@ignore@" + jkube.eclipse.org/git-commit: "@ignore@" + jkube.eclipse.org/git-branch: "@ignore@" maven: Noted labels: app: fragments @@ -30,6 +33,10 @@ items: - apiVersion: v1 kind: ConfigMap metadata: + annotations: + jkube.eclipse.org/git-url: "@ignore@" + jkube.eclipse.org/git-commit: "@ignore@" + jkube.eclipse.org/git-branch: "@ignore@" labels: app: fragments provider: jkube @@ -43,6 +50,10 @@ items: - apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: + annotations: + jkube.eclipse.org/git-url: "@ignore@" + jkube.eclipse.org/git-commit: "@ignore@" + jkube.eclipse.org/git-branch: "@ignore@" labels: app: fragments provider: jkube @@ -52,6 +63,10 @@ items: - apiVersion: custom.resource.example.com/v1 kind: Example metadata: + annotations: + jkube.eclipse.org/git-url: "@ignore@" + jkube.eclipse.org/git-commit: "@ignore@" + jkube.eclipse.org/git-branch: "@ignore@" labels: app: custom-resources provider: jkube