Skip to content

Commit

Permalink
Use Gradle Property and Provider for jib.container.creationTime and j…
Browse files Browse the repository at this point in the history
…ib.container.filesModificationTime (GoogleContainerTools#3708)
  • Loading branch information
creckord committed Jul 19, 2022
1 parent a789a11 commit 439a707
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
import javax.inject.Inject;
import org.gradle.api.model.ObjectFactory;
import org.gradle.api.provider.MapProperty;
import org.gradle.api.provider.Property;
import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.Optional;

Expand All @@ -50,12 +52,14 @@ public class ContainerParameters {
private String appRoot = "";
@Nullable private String user;
@Nullable private String workingDirectory;
private String filesModificationTime = "EPOCH_PLUS_SECOND";
private String creationTime = "EPOCH";
private Property<String> filesModificationTime;
private Property<String> creationTime;

@Inject
public ContainerParameters(ObjectFactory objectFactory) {
labels = objectFactory.mapProperty(String.class, String.class).empty();
filesModificationTime = objectFactory.property(String.class).value("EPOCH_PLUS_SECOND");
creationTime = objectFactory.property(String.class).value("EPOCH");
}

@Input
Expand Down Expand Up @@ -266,11 +270,15 @@ public String getFilesModificationTime() {
if (System.getProperty(PropertyNames.CONTAINER_FILES_MODIFICATION_TIME) != null) {
return System.getProperty(PropertyNames.CONTAINER_FILES_MODIFICATION_TIME);
}
return filesModificationTime;
return filesModificationTime.getOrNull();
}

public void setFilesModificationTime(Provider<String> filesModificationTime) {
this.filesModificationTime.set(filesModificationTime);
}

public void setFilesModificationTime(String filesModificationTime) {
this.filesModificationTime = filesModificationTime;
this.filesModificationTime.set(filesModificationTime);
}

@Input
Expand All @@ -279,10 +287,14 @@ public String getCreationTime() {
if (System.getProperty(PropertyNames.CONTAINER_CREATION_TIME) != null) {
return System.getProperty(PropertyNames.CONTAINER_CREATION_TIME);
}
return creationTime;
return creationTime.getOrNull();
}

public void setCreationTime(Provider<String> creationTime) {
this.creationTime.set(creationTime);
}

public void setCreationTime(String creationTime) {
this.creationTime = creationTime;
this.creationTime.set(creationTime);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -368,6 +368,14 @@ public void testLazyEvalForLabels() {
"labels contain values [firstkey:updated-first-label, secondKey:updated-second-label]");
}

@Test
public void testLazyEvalForContainerCreationAndFileModificationTimes() {
BuildResult showTimes = testProject.build("showtimes", "-Djib.console=plain");
String output = showTimes.getOutput();
assertThat(output).contains("creationTime=2022-07-19T10:23:42Z");
assertThat(output).contains("filesModificationTime=2022-07-19T11:23:42Z");
}

private Project createProject(String... plugins) {
Project project =
ProjectBuilder.builder().withProjectDir(testProjectRoot.getRoot()).withName("root").build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,13 @@ dependencies {
}

project.ext.value = 'original'
project.ext.jibCreationTime = '1970-01-23T00:23:42Z'
project.ext.jibFilesModificationTime = '1970-01-23T01:23:42Z'

project.afterEvaluate {
project.ext.value = 'updated'
project.ext.jibCreationTime = '2022-07-19T10:23:42Z'
project.ext.jibFilesModificationTime = '2022-07-19T11:23:42Z'
}

jib {
Expand All @@ -32,10 +36,19 @@ jib {
secondKey: project.ext.value + '-second-label'
]
}
creationTime = project.provider { project.ext.jibCreationTime }
filesModificationTime = project.provider { project.ext.jibFilesModificationTime }
}
}

tasks.register('showlabels') {
Map<String, String> prop = project.extensions.getByName('jib')['container']['labels'].get()
println('labels contain values ' + prop)
}

tasks.register('showtimes') {
String prop = project.extensions.getByName('jib')['container']['creationTime']
println('creationTime=' + prop)
prop = project.extensions.getByName('jib')['container']['filesModificationTime']
println('filesModificationTime=' + prop)
}

0 comments on commit 439a707

Please sign in to comment.