Support authentication to private docker registry
This commit adds the ability to configure Docker image registry authentication credentials in the Maven and Gradle plugins. The authentication credentials are passed to the Docker daemon with all daemon API calls, and the daemon forwards the credentials to the image registry when necessary. This makes it possible to use builder and run images stored in a private Docker registry. See gh-22972pull/23391/head
parent
f0dfff81d4
commit
e8f555e13d
@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2020 the original author or authors.
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* https://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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.buildpack.platform.docker.configuration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker configuration options.
|
||||||
|
*
|
||||||
|
* @author Wei Jiang
|
||||||
|
* @since 2.4.0
|
||||||
|
*/
|
||||||
|
public class DockerConfiguration {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The docker registry configuration.
|
||||||
|
*/
|
||||||
|
private DockerRegistryConfiguration dockerRegistryConfiguration;
|
||||||
|
|
||||||
|
public DockerConfiguration() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public DockerConfiguration(DockerRegistryConfiguration dockerRegistryConfiguration) {
|
||||||
|
super();
|
||||||
|
this.dockerRegistryConfiguration = dockerRegistryConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DockerRegistryConfiguration getDockerRegistryConfiguration() {
|
||||||
|
return this.dockerRegistryConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDockerRegistryConfiguration(DockerRegistryConfiguration dockerRegistryConfiguration) {
|
||||||
|
this.dockerRegistryConfiguration = dockerRegistryConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,129 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2020 the original author or authors.
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* https://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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.buildpack.platform.docker.configuration;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
|
import org.springframework.boot.buildpack.platform.json.SharedObjectMapper;
|
||||||
|
import org.springframework.util.Base64Utils;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker registry configuration options.
|
||||||
|
*
|
||||||
|
* @author Wei Jiang
|
||||||
|
* @since 2.4.0
|
||||||
|
*/
|
||||||
|
public class DockerRegistryConfiguration {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker registry server address.
|
||||||
|
*/
|
||||||
|
@JsonProperty("serveraddress")
|
||||||
|
private String url;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker registry authentication username.
|
||||||
|
*/
|
||||||
|
private String username;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker registry authentication password.
|
||||||
|
*/
|
||||||
|
private String password;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker registry authentication email.
|
||||||
|
*/
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker registry authentication identity token.
|
||||||
|
*/
|
||||||
|
@JsonIgnore
|
||||||
|
private String token;
|
||||||
|
|
||||||
|
public DockerRegistryConfiguration() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public DockerRegistryConfiguration(String url, String username, String password, String email, String token) {
|
||||||
|
super();
|
||||||
|
this.url = url;
|
||||||
|
this.username = username;
|
||||||
|
this.password = password;
|
||||||
|
this.email = email;
|
||||||
|
this.token = token;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String createDockerRegistryAuthToken() {
|
||||||
|
if (!StringUtils.isEmpty(this.getToken())) {
|
||||||
|
return this.getToken();
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
return Base64Utils.encodeToString(SharedObjectMapper.get().writeValueAsBytes(this));
|
||||||
|
}
|
||||||
|
catch (IOException ex) {
|
||||||
|
throw new IllegalStateException("create docker registry authentication token failed.", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUrl() {
|
||||||
|
return this.url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUrl(String url) {
|
||||||
|
this.url = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUsername() {
|
||||||
|
return this.username;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUsername(String username) {
|
||||||
|
this.username = username;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPassword() {
|
||||||
|
return this.password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPassword(String password) {
|
||||||
|
this.password = password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEmail() {
|
||||||
|
return this.email;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEmail(String email) {
|
||||||
|
this.email = email;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getToken() {
|
||||||
|
return this.token;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setToken(String token) {
|
||||||
|
this.token = token;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2020 the original author or authors.
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* https://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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker configuration options.
|
||||||
|
*/
|
||||||
|
package org.springframework.boot.buildpack.platform.docker.configuration;
|
@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2020 the original author or authors.
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* https://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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.buildpack.platform.docker.configuration;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests for {@link DockerConfiguration}.
|
||||||
|
*
|
||||||
|
* @author Wei Jiang
|
||||||
|
*/
|
||||||
|
public class DockerConfigurationTests {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void createDockerConfiguration() {
|
||||||
|
assertThat(new DockerConfiguration()).isNotNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,79 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2020 the original author or authors.
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* https://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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.buildpack.platform.docker.configuration;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import org.springframework.util.Base64Utils;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests for {@link DockerRegistryConfiguration}.
|
||||||
|
*
|
||||||
|
* @author Wei Jiang
|
||||||
|
*/
|
||||||
|
public class DockerRegistryConfigurationTests {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void createDockerRegistryAuthTokenWithToken() {
|
||||||
|
DockerRegistryConfiguration dockerRegistryConfiguration = new DockerRegistryConfiguration();
|
||||||
|
dockerRegistryConfiguration.setToken("mockToken");
|
||||||
|
assertThat(dockerRegistryConfiguration.createDockerRegistryAuthToken()).isEqualTo("mockToken");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void createDockerRegistryAuthTokenWithoutToken() {
|
||||||
|
DockerRegistryConfiguration dockerRegistryConfiguration = new DockerRegistryConfiguration();
|
||||||
|
dockerRegistryConfiguration.setUsername("username");
|
||||||
|
dockerRegistryConfiguration.setPassword("password");
|
||||||
|
dockerRegistryConfiguration.setEmail("mock@spring.com");
|
||||||
|
dockerRegistryConfiguration.setUrl("http://mock.docker.registry");
|
||||||
|
String token = dockerRegistryConfiguration.createDockerRegistryAuthToken();
|
||||||
|
assertThat(token).isEqualTo(
|
||||||
|
"ewogICJ1c2VybmFtZSIgOiAidXNlcm5hbWUiLAogICJwYXNzd29yZCIgOiAicGFzc3dvcmQiLAogICJlbWFpbCIgOiAibW9ja0BzcHJpbmcuY29tIiwKICAic2VydmVyYWRkcmVzcyIgOiAiaHR0cDovL21vY2suZG9ja2VyLnJlZ2lzdHJ5Igp9");
|
||||||
|
assertThat(new String(Base64Utils.decodeFromString(token))).isEqualTo("{\n" + " \"username\" : \"username\",\n"
|
||||||
|
+ " \"password\" : \"password\",\n" + " \"email\" : \"mock@spring.com\",\n"
|
||||||
|
+ " \"serveraddress\" : \"http://mock.docker.registry\"\n" + "}");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void createDockerRegistryAuthTokenWithUsernameAndPassword() {
|
||||||
|
DockerRegistryConfiguration dockerRegistryConfiguration = new DockerRegistryConfiguration();
|
||||||
|
dockerRegistryConfiguration.setUsername("username");
|
||||||
|
dockerRegistryConfiguration.setPassword("password");
|
||||||
|
String token = dockerRegistryConfiguration.createDockerRegistryAuthToken();
|
||||||
|
assertThat(dockerRegistryConfiguration.getEmail()).isNull();
|
||||||
|
assertThat(dockerRegistryConfiguration.getUrl()).isNull();
|
||||||
|
assertThat(token).isEqualTo(
|
||||||
|
"ewogICJ1c2VybmFtZSIgOiAidXNlcm5hbWUiLAogICJwYXNzd29yZCIgOiAicGFzc3dvcmQiLAogICJlbWFpbCIgOiBudWxsLAogICJzZXJ2ZXJhZGRyZXNzIiA6IG51bGwKfQ==");
|
||||||
|
assertThat(new String(Base64Utils.decodeFromString(token))).isEqualTo("{\n" + " \"username\" : \"username\",\n"
|
||||||
|
+ " \"password\" : \"password\",\n" + " \"email\" : null,\n" + " \"serveraddress\" : null\n" + "}");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void createDockerRegistryAuthTokenWithTokenAndUsername() {
|
||||||
|
DockerRegistryConfiguration dockerRegistryConfiguration = new DockerRegistryConfiguration();
|
||||||
|
dockerRegistryConfiguration.setToken("mockToken");
|
||||||
|
dockerRegistryConfiguration.setUsername("username");
|
||||||
|
dockerRegistryConfiguration.setPassword("password");
|
||||||
|
dockerRegistryConfiguration.setEmail("mock@spring.com");
|
||||||
|
dockerRegistryConfiguration.setUrl("http://mock.docker.registry");
|
||||||
|
assertThat(dockerRegistryConfiguration.createDockerRegistryAuthToken()).isEqualTo("mockToken");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2020 the original author or authors.
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* https://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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.gradle.tasks.bundling;
|
||||||
|
|
||||||
|
import org.springframework.boot.buildpack.platform.docker.configuration.DockerConfiguration;
|
||||||
|
import org.springframework.boot.buildpack.platform.docker.configuration.DockerRegistryConfiguration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker configuration options.
|
||||||
|
*
|
||||||
|
* @author Wei Jiang
|
||||||
|
* @since 2.4.0
|
||||||
|
*/
|
||||||
|
public class Docker {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The docker registry configuration.
|
||||||
|
*/
|
||||||
|
private DockerRegistry registry;
|
||||||
|
|
||||||
|
public DockerRegistry getRegistry() {
|
||||||
|
return this.registry;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRegistry(DockerRegistry registry) {
|
||||||
|
this.registry = registry;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DockerConfiguration getDockerConfiguration() {
|
||||||
|
DockerRegistryConfiguration dockerRegistryConfiguration = null;
|
||||||
|
|
||||||
|
if (this.registry != null) {
|
||||||
|
dockerRegistryConfiguration = this.registry.getDockerRegistryConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
|
return new DockerConfiguration(dockerRegistryConfiguration);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,98 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2020 the original author or authors.
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* https://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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.gradle.tasks.bundling;
|
||||||
|
|
||||||
|
import org.springframework.boot.buildpack.platform.docker.configuration.DockerRegistryConfiguration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker registry configuration options.
|
||||||
|
*
|
||||||
|
* @author Wei Jiang
|
||||||
|
* @since 2.4.0
|
||||||
|
*/
|
||||||
|
public class DockerRegistry {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker registry server address.
|
||||||
|
*/
|
||||||
|
private String url;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker registry authentication username.
|
||||||
|
*/
|
||||||
|
private String username;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker registry authentication password.
|
||||||
|
*/
|
||||||
|
private String password;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker registry authentication email.
|
||||||
|
*/
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker registry authentication identity token.
|
||||||
|
*/
|
||||||
|
private String token;
|
||||||
|
|
||||||
|
public String getUrl() {
|
||||||
|
return this.url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUrl(String url) {
|
||||||
|
this.url = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUsername() {
|
||||||
|
return this.username;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUsername(String username) {
|
||||||
|
this.username = username;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPassword() {
|
||||||
|
return this.password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPassword(String password) {
|
||||||
|
this.password = password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEmail() {
|
||||||
|
return this.email;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEmail(String email) {
|
||||||
|
this.email = email;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getToken() {
|
||||||
|
return this.token;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setToken(String token) {
|
||||||
|
this.token = token;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DockerRegistryConfiguration getDockerRegistryConfiguration() {
|
||||||
|
return new DockerRegistryConfiguration(this.url, this.username, this.password, this.email, this.token);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2020 the original author or authors.
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* https://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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.gradle.tasks.bundling;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import org.springframework.boot.buildpack.platform.docker.configuration.DockerRegistryConfiguration;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests for {@link DockerRegistry}.
|
||||||
|
*
|
||||||
|
* @author Wei Jiang
|
||||||
|
*/
|
||||||
|
public class DockerRegistryTests {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getDockerRegistryConfiguration() {
|
||||||
|
DockerRegistry dockerRegistry = new DockerRegistry();
|
||||||
|
dockerRegistry.setUsername("username");
|
||||||
|
dockerRegistry.setPassword("password");
|
||||||
|
dockerRegistry.setEmail("mock@spring.com");
|
||||||
|
dockerRegistry.setUrl("http://mock.docker.registry");
|
||||||
|
DockerRegistryConfiguration dockerRegistryConfiguration = dockerRegistry.getDockerRegistryConfiguration();
|
||||||
|
assertThat(dockerRegistryConfiguration).isNotNull();
|
||||||
|
assertThat(dockerRegistryConfiguration.getUsername()).isEqualTo(dockerRegistry.getUsername());
|
||||||
|
assertThat(dockerRegistryConfiguration.getPassword()).isEqualTo(dockerRegistry.getPassword());
|
||||||
|
assertThat(dockerRegistryConfiguration.getEmail()).isEqualTo(dockerRegistry.getEmail());
|
||||||
|
assertThat(dockerRegistryConfiguration.getUrl()).isEqualTo(dockerRegistry.getUrl());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2020 the original author or authors.
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* https://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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.maven;
|
||||||
|
|
||||||
|
import org.springframework.boot.buildpack.platform.docker.configuration.DockerConfiguration;
|
||||||
|
import org.springframework.boot.buildpack.platform.docker.configuration.DockerRegistryConfiguration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker configuration options.
|
||||||
|
*
|
||||||
|
* @author Wei Jiang
|
||||||
|
* @since 2.4.0
|
||||||
|
*/
|
||||||
|
public class Docker {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The docker registry configuration.
|
||||||
|
*/
|
||||||
|
private DockerRegistry registry;
|
||||||
|
|
||||||
|
public DockerRegistry getRegistry() {
|
||||||
|
return this.registry;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRegistry(DockerRegistry registry) {
|
||||||
|
this.registry = registry;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DockerConfiguration getDockerConfiguration() {
|
||||||
|
DockerRegistryConfiguration dockerRegistryConfiguration = null;
|
||||||
|
|
||||||
|
if (this.registry != null) {
|
||||||
|
dockerRegistryConfiguration = this.registry.getDockerRegistryConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
|
return new DockerConfiguration(dockerRegistryConfiguration);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,98 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2020 the original author or authors.
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* https://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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.maven;
|
||||||
|
|
||||||
|
import org.springframework.boot.buildpack.platform.docker.configuration.DockerRegistryConfiguration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker registry configuration options.
|
||||||
|
*
|
||||||
|
* @author Wei Jiang
|
||||||
|
* @since 2.4.0
|
||||||
|
*/
|
||||||
|
public class DockerRegistry {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker registry server address.
|
||||||
|
*/
|
||||||
|
private String url;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker registry authentication username.
|
||||||
|
*/
|
||||||
|
private String username;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker registry authentication password.
|
||||||
|
*/
|
||||||
|
private String password;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker registry authentication email.
|
||||||
|
*/
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docker registry authentication identity token.
|
||||||
|
*/
|
||||||
|
private String token;
|
||||||
|
|
||||||
|
public String getUrl() {
|
||||||
|
return this.url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUrl(String url) {
|
||||||
|
this.url = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUsername() {
|
||||||
|
return this.username;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUsername(String username) {
|
||||||
|
this.username = username;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPassword() {
|
||||||
|
return this.password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPassword(String password) {
|
||||||
|
this.password = password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEmail() {
|
||||||
|
return this.email;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEmail(String email) {
|
||||||
|
this.email = email;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getToken() {
|
||||||
|
return this.token;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setToken(String token) {
|
||||||
|
this.token = token;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DockerRegistryConfiguration getDockerRegistryConfiguration() {
|
||||||
|
return new DockerRegistryConfiguration(this.url, this.username, this.password, this.email, this.token);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2020 the original author or authors.
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* https://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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.maven;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import org.springframework.boot.buildpack.platform.docker.configuration.DockerRegistryConfiguration;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests for {@link DockerRegistry}.
|
||||||
|
*
|
||||||
|
* @author Wei Jiang
|
||||||
|
*/
|
||||||
|
public class DockerRegistryTests {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getDockerRegistryConfiguration() {
|
||||||
|
DockerRegistry dockerRegistry = new DockerRegistry();
|
||||||
|
dockerRegistry.setUsername("username");
|
||||||
|
dockerRegistry.setPassword("password");
|
||||||
|
dockerRegistry.setEmail("mock@spring.com");
|
||||||
|
dockerRegistry.setUrl("http://mock.docker.registry");
|
||||||
|
DockerRegistryConfiguration dockerRegistryConfiguration = dockerRegistry.getDockerRegistryConfiguration();
|
||||||
|
assertThat(dockerRegistryConfiguration).isNotNull();
|
||||||
|
assertThat(dockerRegistryConfiguration.getUsername()).isEqualTo(dockerRegistry.getUsername());
|
||||||
|
assertThat(dockerRegistryConfiguration.getPassword()).isEqualTo(dockerRegistry.getPassword());
|
||||||
|
assertThat(dockerRegistryConfiguration.getEmail()).isEqualTo(dockerRegistry.getEmail());
|
||||||
|
assertThat(dockerRegistryConfiguration.getUrl()).isEqualTo(dockerRegistry.getUrl());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue