Skip to content

Commit

Permalink
feat (jkube-kit/generator) : Add configuration option in BaseGenerato…
Browse files Browse the repository at this point in the history
…r to add tags (eclipse-jkube#1188)

Right now there isn't a way to add tags to BuildConfiguration while
using zero config mode in generators. Adding a configuration field in
BaseGenerator which would expect comma separated tags which can be
picked up by Generator while building opinionated Image configuration

Signed-off-by: Rohan Kumar <rohaan@redhat.com>
  • Loading branch information
rohanKanojia authored and manusa committed May 6, 2022
1 parent 0401297 commit c6cca9e
Show file tree
Hide file tree
Showing 7 changed files with 42 additions and 3 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ Usage:
./scripts/extract-changelog-for-version.sh 1.3.37 5
```
### 1.8.0-SNAPSHOT
* Fix #1188: Add support for specifying multiple tags in Zero configuration mode
* Fix #1194: jkube controller name configuration ignored when using resource fragments
* Fix #1201: ThorntailV2Generator works with Gradle Plugins
* Fix #1208: Allow env variables to be passed to a webapp generator s2i builder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ or already added by a generator which has been run previously.
| *registry*
| A optional Docker registry used when doing Docker builds. It has no effect for OpenShift S2I builds.
| `jkube.generator.registry`

| *tags*
| A comma separated list of additional tags you want to tag your image with
| `jkube.generator.tags`
|===

When used as properties they can be directly referenced with the property names above.
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,12 @@

import java.io.IOException;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import org.eclipse.jkube.generator.api.FromSelector;
import org.eclipse.jkube.generator.api.Generator;
Expand Down Expand Up @@ -74,7 +76,10 @@ enum Config implements Configs.Config {
FROM_MODE("fromMode", null),

// Optional registry
REGISTRY("registry", null);
REGISTRY("registry", null),

// Tags
TAGS("tags", null);

@Getter
protected String key;
Expand Down Expand Up @@ -227,6 +232,16 @@ protected void addLatestTagIfSnapshot(BuildConfiguration.BuildConfigurationBuild
}
}

protected void addTagsFromConfig(BuildConfiguration.BuildConfigurationBuilder buildConfigurationBuilder) {
String commaSeparatedTags = getConfig(Config.TAGS);
if (StringUtils.isNotBlank(commaSeparatedTags)) {
List<String> tags = Arrays.stream(commaSeparatedTags.split(","))
.map(String::trim)
.collect(Collectors.toList());
buildConfigurationBuilder.tags(tags);
}
}

private boolean containsBuildConfiguration(List<ImageConfiguration> configs) {
for (ImageConfiguration imageConfig : configs) {
if (imageConfig.getBuildConfiguration() != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@
import org.junit.Test;
import org.junit.rules.TemporaryFolder;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.entry;
import static org.assertj.core.api.AssertionsForClassTypes.entry;
import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
Expand Down Expand Up @@ -353,6 +353,22 @@ public void addLatestTagIfSnapshot() {
assertTrue(tags.get(0).endsWith("latest"));
}

@Test
public void addTagsFromConfig() {
new Expectations() {{
ctx.getProject();
result = project;
}};
BuildConfiguration.BuildConfigurationBuilder builder = BuildConfiguration.builder();
properties.put("jkube.generator.test-generator.tags", " tag-1, tag-2 , other-tag");
BaseGenerator generator = createGenerator(null);
generator.addTagsFromConfig(builder);
BuildConfiguration config = builder.build();
assertThat(config.getTags())
.hasSize(3)
.containsExactlyInAnyOrder("tag-1", "tag-2", "other-tag");
}

public void inKubernetes() {
// @formatter:off
new Expectations() {{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ protected BuildConfiguration.BuildConfigurationBuilder initImageBuildConfigurati
addPrometheusPort(buildBuilder);

addLatestTagIfSnapshot(buildBuilder);
addTagsFromConfig(buildBuilder);
buildBuilder.workdir(getBuildWorkdir());
buildBuilder.entryPoint(getBuildEntryPoint());
return buildBuilder;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ public List<ImageConfiguration> customize(List<ImageConfiguration> configs, bool
buildBuilder.assembly(createDefaultAssembly());
}
addLatestTagIfSnapshot(buildBuilder);
addTagsFromConfig(buildBuilder);
imageBuilder
.name(getImageName())
.alias(getAlias())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ public List<ImageConfiguration> customize(List<ImageConfiguration> configs, bool
buildBuilder.assembly(createAssembly(handler));
}
addLatestTagIfSnapshot(buildBuilder);
addTagsFromConfig(buildBuilder);
imageBuilder
.name(getImageName())
.alias(getAlias())
Expand Down

0 comments on commit c6cca9e

Please sign in to comment.