Changed modules
This commit is contained in:
@@ -26,10 +26,10 @@ import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.buildsystem.CustomBomParser;
|
||||
import org.springframework.cloud.release.internal.buildsystem.PomReader;
|
||||
import org.springframework.cloud.release.internal.buildsystem.Project;
|
||||
import org.springframework.cloud.release.internal.buildsystem.VersionsFromBom;
|
||||
import org.springframework.cloud.release.internal.buildsystem.VersionsFromBomBuilder;
|
||||
import org.springframework.cloud.release.internal.project.Project;
|
||||
import org.springframework.cloud.release.internal.tech.PomReader;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import static org.springframework.cloud.release.cloud.buildsystem.SpringCloudBomConstants.BOOT_DEPENDENCIES_ARTIFACT_ID;
|
||||
@@ -44,7 +44,7 @@ import static org.springframework.cloud.release.cloud.buildsystem.SpringCloudBom
|
||||
import static org.springframework.cloud.release.cloud.buildsystem.SpringCloudBomConstants.CLOUD_STARTER_PARENT_ARTIFACT_ID;
|
||||
import static org.springframework.cloud.release.cloud.buildsystem.SpringCloudBomConstants.SPRING_BOOT;
|
||||
|
||||
public class SpringCloudMavenBomParser implements CustomBomParser {
|
||||
class SpringCloudMavenBomParser implements CustomBomParser {
|
||||
|
||||
private static final Logger log = LoggerFactory
|
||||
.getLogger(SpringCloudMavenBomParser.class);
|
||||
|
||||
@@ -23,9 +23,9 @@ import java.nio.file.Files;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.docs.CustomProjectDocumentationUpdater;
|
||||
import org.springframework.cloud.release.internal.git.ProjectGitHandler;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
|
||||
/**
|
||||
* @author Marcin Grzejszczak
|
||||
|
||||
@@ -24,13 +24,13 @@ import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.springframework.cloud.release.internal.buildsystem.GradleUpdater;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectPomUpdater;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.docs.DocumentationUpdater;
|
||||
import org.springframework.cloud.release.internal.git.ProjectGitHandler;
|
||||
import org.springframework.cloud.release.internal.github.ProjectGitHubHandler;
|
||||
import org.springframework.cloud.release.internal.postrelease.PostReleaseActions;
|
||||
import org.springframework.cloud.release.internal.project.ProcessedProject;
|
||||
import org.springframework.cloud.release.internal.project.ProjectCommandExecutor;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
import org.springframework.cloud.release.internal.sagan.SaganUpdater;
|
||||
import org.springframework.cloud.release.internal.tech.MakeBuildUnstableException;
|
||||
@@ -48,8 +48,6 @@ public class Releaser implements ReleaserPropertiesAware {
|
||||
|
||||
private static boolean SKIP_SNAPSHOT_ASSERTION = false;
|
||||
|
||||
private ReleaserProperties releaserProperties;
|
||||
|
||||
private final ProjectPomUpdater projectPomUpdater;
|
||||
|
||||
private final ProjectCommandExecutor projectCommandExecutor;
|
||||
@@ -68,6 +66,8 @@ public class Releaser implements ReleaserPropertiesAware {
|
||||
|
||||
private final PostReleaseActions postReleaseActions;
|
||||
|
||||
private ReleaserProperties releaserProperties;
|
||||
|
||||
public Releaser(ReleaserProperties releaserProperties,
|
||||
ProjectPomUpdater projectPomUpdater,
|
||||
ProjectCommandExecutor projectCommandExecutor,
|
||||
|
||||
@@ -968,6 +968,11 @@ public class ReleaserProperties implements Serializable {
|
||||
|
||||
public static class Gradle implements Serializable {
|
||||
|
||||
/**
|
||||
* Placeholder for system properties.
|
||||
*/
|
||||
public static final String SYSTEM_PROPS_PLACEHOLDER = "{{systemProps}}";
|
||||
|
||||
/**
|
||||
* A mapping that should be applied to {@code gradle.properties} in order to
|
||||
* perform a substitution of properties. The mapping is from a property inside
|
||||
@@ -998,11 +1003,6 @@ public class ReleaserProperties implements Serializable {
|
||||
"^.*spring-cloud-contract-maven-plugin/target/.*$",
|
||||
"^.*samples/standalone/[a-z]+/.*$");
|
||||
|
||||
/**
|
||||
* Placeholder for system properties.
|
||||
*/
|
||||
public static final String SYSTEM_PROPS_PLACEHOLDER = "{{systemProps}}";
|
||||
|
||||
/**
|
||||
* Command to be executed to build the project.
|
||||
*/
|
||||
|
||||
@@ -21,6 +21,7 @@ import java.util.LinkedHashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.project.Project;
|
||||
import org.springframework.lang.Nullable;
|
||||
|
||||
/**
|
||||
@@ -28,6 +29,21 @@ import org.springframework.lang.Nullable;
|
||||
*/
|
||||
public interface CustomBomParser {
|
||||
|
||||
CustomBomParser NO_OP = new CustomBomParser() {
|
||||
@Override
|
||||
public boolean isApplicable(File thisProjectRoot, ReleaserProperties properties,
|
||||
Set<Project> projects) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VersionsFromBom parseBom(File thisProjectRoot,
|
||||
ReleaserProperties properties) {
|
||||
return VersionsFromBom.EMPTY_VERSION;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Different projects can have different parsers. This method will tell whether the
|
||||
* current parser should be applied or not.
|
||||
@@ -69,19 +85,4 @@ public interface CustomBomParser {
|
||||
return new File(thisProjectRoot, "build.gradle").exists();
|
||||
}
|
||||
|
||||
CustomBomParser NO_OP = new CustomBomParser() {
|
||||
@Override
|
||||
public boolean isApplicable(File thisProjectRoot, ReleaserProperties properties,
|
||||
Set<Project> projects) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VersionsFromBom parseBom(File thisProjectRoot,
|
||||
ReleaserProperties properties) {
|
||||
return VersionsFromBom.EMPTY_VERSION;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -37,6 +37,7 @@ import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.ReleaserPropertiesAware;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
|
||||
/**
|
||||
|
||||
@@ -31,6 +31,8 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.project.Project;
|
||||
import org.springframework.cloud.release.internal.tech.PomReader;
|
||||
|
||||
/**
|
||||
* Parses the poms for a given project and populates versions from a release train.
|
||||
|
||||
@@ -40,6 +40,8 @@ import org.codehaus.stax2.XMLInputFactory2;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.springframework.cloud.release.internal.project.Project;
|
||||
import org.springframework.cloud.release.internal.tech.PomReader;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import static org.springframework.util.StringUtils.hasText;
|
||||
|
||||
@@ -38,6 +38,8 @@ import org.slf4j.LoggerFactory;
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.ReleaserPropertiesAware;
|
||||
import org.springframework.cloud.release.internal.git.ProjectGitHandler;
|
||||
import org.springframework.cloud.release.internal.project.Project;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
|
||||
/**
|
||||
@@ -60,10 +62,10 @@ public class ProjectPomUpdater implements ReleaserPropertiesAware {
|
||||
|
||||
private final PomUpdater pomUpdater = new PomUpdater();
|
||||
|
||||
private ReleaserProperties properties;
|
||||
|
||||
private final List<BomParser> bomParsers;
|
||||
|
||||
private ReleaserProperties properties;
|
||||
|
||||
public ProjectPomUpdater(ReleaserProperties properties, List<BomParser> bomParsers) {
|
||||
this.properties = properties;
|
||||
this.gitRepo = new ProjectGitHandler(properties);
|
||||
|
||||
@@ -26,6 +26,8 @@ import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.project.Project;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
|
||||
/**
|
||||
@@ -174,6 +176,10 @@ public class VersionsFromBom {
|
||||
this.projects.removeIf(project -> expectedProjectName.equals(project.name));
|
||||
}
|
||||
|
||||
public Set<Project> projects() {
|
||||
return this.projects;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Projects=\n\t" + this.projects.stream().map(Object::toString)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* 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
|
||||
* 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,
|
||||
@@ -23,6 +23,7 @@ import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.project.Project;
|
||||
|
||||
public class VersionsFromBomBuilder {
|
||||
|
||||
|
||||
@@ -18,13 +18,30 @@ package org.springframework.cloud.release.internal.docs;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
|
||||
/**
|
||||
* @author Marcin Grzejszczak
|
||||
*/
|
||||
public interface CustomProjectDocumentationUpdater {
|
||||
|
||||
/**
|
||||
* NO OP implementation of the updater.
|
||||
*/
|
||||
CustomProjectDocumentationUpdater NO_OP = new CustomProjectDocumentationUpdater() {
|
||||
@Override
|
||||
public boolean isApplicable(File clonedDocumentationProject,
|
||||
ProjectVersion currentProject, String bomBranch) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public File updateDocsRepo(File clonedDocumentationProject,
|
||||
ProjectVersion currentProject, String bomBranch) {
|
||||
return clonedDocumentationProject;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Different projects can have different documentation updaters. This method will tell
|
||||
* whether the current updater should be applied or not. Updates the documentation
|
||||
@@ -48,21 +65,4 @@ public interface CustomProjectDocumentationUpdater {
|
||||
File updateDocsRepo(File clonedDocumentationProject, ProjectVersion currentProject,
|
||||
String bomBranch);
|
||||
|
||||
/**
|
||||
* NO OP implementation of the updater.
|
||||
*/
|
||||
CustomProjectDocumentationUpdater NO_OP = new CustomProjectDocumentationUpdater() {
|
||||
@Override
|
||||
public boolean isApplicable(File clonedDocumentationProject,
|
||||
ProjectVersion currentProject, String bomBranch) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public File updateDocsRepo(File clonedDocumentationProject,
|
||||
ProjectVersion currentProject, String bomBranch) {
|
||||
return clonedDocumentationProject;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -17,11 +17,12 @@
|
||||
package org.springframework.cloud.release.internal.docs;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.ReleaserPropertiesAware;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.git.ProjectGitHandler;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
import org.springframework.cloud.release.internal.template.TemplateGenerator;
|
||||
|
||||
@@ -38,9 +39,10 @@ public class DocumentationUpdater implements ReleaserPropertiesAware {
|
||||
|
||||
public DocumentationUpdater(ProjectGitHandler gitHandler,
|
||||
ReleaserProperties properties, TemplateGenerator templateGenerator,
|
||||
ProjectDocumentationUpdater updater) {
|
||||
List<CustomProjectDocumentationUpdater> updaters) {
|
||||
this.properties = properties;
|
||||
this.projectDocumentationUpdater = updater;
|
||||
this.projectDocumentationUpdater = new ProjectDocumentationUpdater(properties,
|
||||
gitHandler, updaters);
|
||||
this.releaseTrainContentsUpdater = new ReleaseTrainContentsUpdater(
|
||||
this.properties, gitHandler, templateGenerator);
|
||||
}
|
||||
|
||||
@@ -24,24 +24,24 @@ import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.ReleaserPropertiesAware;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.git.ProjectGitHandler;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
|
||||
/**
|
||||
* @author Marcin Grzejszczak
|
||||
*/
|
||||
public class ProjectDocumentationUpdater implements ReleaserPropertiesAware {
|
||||
class ProjectDocumentationUpdater implements ReleaserPropertiesAware {
|
||||
|
||||
private static final Logger log = LoggerFactory
|
||||
.getLogger(ProjectDocumentationUpdater.class);
|
||||
|
||||
private final ProjectGitHandler gitHandler;
|
||||
|
||||
private ReleaserProperties properties;
|
||||
|
||||
private final List<CustomProjectDocumentationUpdater> updaters;
|
||||
|
||||
public ProjectDocumentationUpdater(ReleaserProperties properties,
|
||||
private ReleaserProperties properties;
|
||||
|
||||
ProjectDocumentationUpdater(ReleaserProperties properties,
|
||||
ProjectGitHandler gitHandler,
|
||||
List<CustomProjectDocumentationUpdater> updaters) {
|
||||
this.gitHandler = gitHandler;
|
||||
|
||||
@@ -32,8 +32,8 @@ import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.ReleaserPropertiesAware;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.git.ProjectGitHandler;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
import org.springframework.cloud.release.internal.tech.HandlebarsHelper;
|
||||
import org.springframework.cloud.release.internal.template.TemplateGenerator;
|
||||
|
||||
@@ -21,7 +21,7 @@ import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
|
||||
/**
|
||||
|
||||
@@ -27,7 +27,7 @@ import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.ReleaserPropertiesAware;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.tech.TemporaryFileStorage;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
@@ -57,6 +57,10 @@ public class ProjectGitHandler implements ReleaserPropertiesAware {
|
||||
registerShutdownHook();
|
||||
}
|
||||
|
||||
static void clearCache() {
|
||||
CACHE.clear();
|
||||
}
|
||||
|
||||
private void registerShutdownHook() {
|
||||
Runtime.getRuntime().addShutdownHook(new Thread(TemporaryFileStorage::cleanup));
|
||||
}
|
||||
@@ -79,10 +83,6 @@ public class ProjectGitHandler implements ReleaserPropertiesAware {
|
||||
}
|
||||
}
|
||||
|
||||
static void clearCache() {
|
||||
CACHE.clear();
|
||||
}
|
||||
|
||||
public void commitAfterBumpingVersions(File project, ProjectVersion bumpedVersion) {
|
||||
if (bumpedVersion.isSnapshot()) {
|
||||
log.info("Snapshot version [{}] found. Will only commit the changed poms",
|
||||
|
||||
@@ -30,7 +30,7 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
@@ -32,7 +32,7 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.ReleaserPropertiesAware;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
import org.springframework.cloud.release.internal.tech.TemporaryFileStorage;
|
||||
|
||||
|
||||
@@ -34,10 +34,10 @@ import org.slf4j.LoggerFactory;
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.buildsystem.GradleUpdater;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectPomUpdater;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.git.ProjectGitHandler;
|
||||
import org.springframework.cloud.release.internal.project.ProcessedProject;
|
||||
import org.springframework.cloud.release.internal.project.ProjectCommandExecutor;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
import org.springframework.cloud.release.internal.versions.VersionsFetcher;
|
||||
import org.springframework.core.NestedExceptionUtils;
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package org.springframework.cloud.release.internal.project;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
|
||||
/**
|
||||
* Represents a processed project.
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* 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
|
||||
* 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,
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.cloud.release.internal.buildsystem;
|
||||
package org.springframework.cloud.release.internal.project;
|
||||
|
||||
/**
|
||||
* Represents a single project.
|
||||
@@ -23,10 +23,19 @@ package org.springframework.cloud.release.internal.buildsystem;
|
||||
*/
|
||||
public class Project {
|
||||
|
||||
/**
|
||||
* An empty project.
|
||||
*/
|
||||
public static Project EMPTY_PROJECT = new Project("", "");
|
||||
|
||||
/**
|
||||
* Project name.
|
||||
*/
|
||||
public final String name;
|
||||
|
||||
/**
|
||||
* Project version.
|
||||
*/
|
||||
public final String version;
|
||||
|
||||
public Project(String name, String version) {
|
||||
@@ -40,7 +40,6 @@ import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.ReleaserPropertiesAware;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
@@ -304,47 +303,6 @@ class CommandPicker {
|
||||
|
||||
private static final Log log = LogFactory.getLog(CommandPicker.class);
|
||||
|
||||
private enum ProjectType {
|
||||
|
||||
MAVEN, GRADLE, BASH;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Enumeration over commonly used Maven profiles.
|
||||
*/
|
||||
private enum MavenProfile {
|
||||
|
||||
/**
|
||||
* Profile used for milestone versions.
|
||||
*/
|
||||
MILESTONE,
|
||||
|
||||
/**
|
||||
* Profile used for ga versions.
|
||||
*/
|
||||
CENTRAL,
|
||||
|
||||
/**
|
||||
* Profile used to run integration tests.
|
||||
*/
|
||||
INTEGRATION,
|
||||
|
||||
/**
|
||||
* Profile used to run guides publishing.
|
||||
*/
|
||||
GUIDES;
|
||||
|
||||
/**
|
||||
* Converts the profile to lowercase, maven command line property.
|
||||
* @return profile with prepended -P
|
||||
*/
|
||||
public String asMavenProfile() {
|
||||
return "-P" + this.name().toLowerCase();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private final ReleaserProperties releaserProperties;
|
||||
|
||||
private final ProjectType projectType;
|
||||
@@ -530,6 +488,47 @@ class CommandPicker {
|
||||
.collect(Collectors.joining(" "));
|
||||
}
|
||||
|
||||
private enum ProjectType {
|
||||
|
||||
MAVEN, GRADLE, BASH;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Enumeration over commonly used Maven profiles.
|
||||
*/
|
||||
private enum MavenProfile {
|
||||
|
||||
/**
|
||||
* Profile used for milestone versions.
|
||||
*/
|
||||
MILESTONE,
|
||||
|
||||
/**
|
||||
* Profile used for ga versions.
|
||||
*/
|
||||
CENTRAL,
|
||||
|
||||
/**
|
||||
* Profile used to run integration tests.
|
||||
*/
|
||||
INTEGRATION,
|
||||
|
||||
/**
|
||||
* Profile used to run guides publishing.
|
||||
*/
|
||||
GUIDES;
|
||||
|
||||
/**
|
||||
* Converts the profile to lowercase, maven command line property.
|
||||
* @return profile with prepended -P
|
||||
*/
|
||||
public String asMavenProfile() {
|
||||
return "-P" + this.name().toLowerCase();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class HtmlFileWalker extends SimpleFileVisitor<Path> {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.cloud.release.internal.buildsystem;
|
||||
package org.springframework.cloud.release.internal.project;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
@@ -25,7 +25,7 @@ import java.util.regex.Pattern;
|
||||
|
||||
import org.apache.maven.model.Model;
|
||||
|
||||
import org.springframework.cloud.release.internal.project.ProjectCommandExecutor;
|
||||
import org.springframework.cloud.release.internal.tech.PomReader;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
@@ -26,8 +26,6 @@ import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.buildsystem.Project;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
|
||||
/**
|
||||
* Abstraction over collection of projects.
|
||||
|
||||
@@ -28,7 +28,7 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.cloud.release.internal.buildsystem;
|
||||
package org.springframework.cloud.release.internal.tech;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
@@ -39,7 +39,7 @@ import org.springframework.boot.context.properties.source.MapConfigurationProper
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.ReleaserPropertiesAware;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectPomUpdater;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
import org.springframework.core.io.InputStreamResource;
|
||||
import org.springframework.util.StringUtils;
|
||||
@@ -54,12 +54,12 @@ public class VersionsFetcher implements ReleaserPropertiesAware {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(VersionsFetcher.class);
|
||||
|
||||
private ReleaserProperties properties;
|
||||
|
||||
private final ProjectPomUpdater projectPomUpdater;
|
||||
|
||||
private final ToPropertiesConverter toPropertiesConverter;
|
||||
|
||||
private ReleaserProperties properties;
|
||||
|
||||
public VersionsFetcher(ReleaserProperties properties,
|
||||
ProjectPomUpdater projectPomUpdater) {
|
||||
this.properties = properties;
|
||||
|
||||
@@ -2,16 +2,17 @@ On behalf of the community, I am pleased to announce that the {{ availability }}
|
||||
|
||||
## Notable Changes in the {{ releaseName }} Release Train
|
||||
{{#each projects}}
|
||||
### {{ name }}
|
||||
### {{ name }}
|
||||
|
||||
Some text related to project
|
||||
Some text related to project
|
||||
{{/each}}
|
||||
|
||||
The following modules were updated as part of {{ releaseVersion }}:
|
||||
|
||||
| Module | Version | Issues
|
||||
|--- |--- |--- |---
|
||||
{{#each projects}}| {{name}} | {{version}} | {{#if closedMilestoneUrl}}([issues]({{{ closedMilestoneUrl }}})){{/if}}{{^closedMilestoneUrl}} {{/closedMilestoneUrl}}
|
||||
| Module | Version | Issues
|
||||
|--- |--- |--- |---
|
||||
{{#each projects}}| {{name}} | {{version}} | {{#if
|
||||
closedMilestoneUrl}}([issues]({{{ closedMilestoneUrl }}})){{/if}}{{^closedMilestoneUrl}} {{/closedMilestoneUrl}}
|
||||
{{/each}}
|
||||
|
||||
As always, we welcome feedback on [GitHub](https://github.com/spring-cloud/), on [Gitter](https://gitter.im/spring-cloud/spring-cloud), on [Stack Overflow](https://stackoverflow.com/questions/tagged/spring-cloud), or on [Twitter](https://twitter.com/SpringCloud).
|
||||
@@ -19,16 +20,17 @@ As always, we welcome feedback on [GitHub](https://github.com/spring-cloud/), on
|
||||
To get started with Maven with a BOM (dependency management only):
|
||||
|
||||
```
|
||||
{{#if nonRelease}}<repositories>
|
||||
<repository>
|
||||
<id>spring-milestones</id>
|
||||
<name>Spring Milestones</name>
|
||||
<url>https://repo.spring.io/milestone</url>
|
||||
<snapshots>
|
||||
<enabled>false</enabled>
|
||||
</snapshots>
|
||||
</repository>
|
||||
</repositories>{{/if}}
|
||||
{{#if nonRelease}}
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>spring-milestones</id>
|
||||
<name>Spring Milestones</name>
|
||||
<url>https://repo.spring.io/milestone</url>
|
||||
<snapshots>
|
||||
<enabled>false</enabled>
|
||||
</snapshots>
|
||||
</repository>
|
||||
</repositories>{{/if}}
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
@@ -57,28 +59,28 @@ or with Gradle:
|
||||
|
||||
```
|
||||
buildscript {
|
||||
dependencies {
|
||||
classpath "io.spring.gradle:dependency-management-plugin:1.0.2.RELEASE"
|
||||
}
|
||||
dependencies {
|
||||
classpath "io.spring.gradle:dependency-management-plugin:1.0.2.RELEASE"
|
||||
}
|
||||
}
|
||||
|
||||
{{#if nonRelease}}repositories {
|
||||
maven {
|
||||
url 'https://repo.spring.io/milestone'
|
||||
}
|
||||
maven {
|
||||
url 'https://repo.spring.io/milestone'
|
||||
}
|
||||
}{{/if}}
|
||||
|
||||
apply plugin: "io.spring.dependency-management"
|
||||
|
||||
dependencyManagement {
|
||||
imports {
|
||||
mavenBom 'org.springframework.cloud:spring-cloud-dependencies:{{ releaseVersion }}'
|
||||
}
|
||||
imports {
|
||||
mavenBom 'org.springframework.cloud:spring-cloud-dependencies:{{ releaseVersion }}'
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile 'org.springframework.cloud:spring-cloud-starter-config'
|
||||
compile 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
|
||||
...
|
||||
compile 'org.springframework.cloud:spring-cloud-starter-config'
|
||||
compile 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
@@ -5,15 +5,15 @@ title: Spring Cloud
|
||||
badges:
|
||||
|
||||
|
||||
# Customize your project's badges. Delete any entries that do not apply.
|
||||
custom:
|
||||
- name: Source (GitHub)
|
||||
url: https://github.com/spring-cloud
|
||||
icon: github
|
||||
# Customize your project's badges. Delete any entries that do not apply.
|
||||
custom:
|
||||
- name: Source (GitHub)
|
||||
url: https://github.com/spring-cloud
|
||||
icon: github
|
||||
|
||||
- name: StackOverflow
|
||||
url: https://stackoverflow.com/questions/tagged/spring-cloud
|
||||
icon: stackoverflow
|
||||
- name: StackOverflow
|
||||
url: https://stackoverflow.com/questions/tagged/spring-cloud
|
||||
icon: stackoverflow
|
||||
|
||||
|
||||
---
|
||||
@@ -42,7 +42,7 @@ Spring Cloud builds on Spring Boot by providing a bunch of libraries
|
||||
that enhance the behaviour of an application when added to the
|
||||
classpath. You can take advantage of the basic default behaviour to
|
||||
get started really quickly, and then when you need to, you can
|
||||
configure or extend to create a custom solution.
|
||||
configure or extend to create a custom solution.
|
||||
|
||||
<span id="quick-start"></span>
|
||||
|
||||
@@ -59,7 +59,8 @@ and eureka (change the artifact ids to pull in other starters):
|
||||
|
||||
## Features
|
||||
|
||||
Spring Cloud focuses on providing good out of box experience for typical use cases and extensibility mechanism to cover others.
|
||||
Spring Cloud focuses on providing good out of box experience for typical use cases and extensibility mechanism to cover
|
||||
others.
|
||||
|
||||
* Distributed/versioned configuration
|
||||
* Service registration and discovery
|
||||
@@ -79,9 +80,9 @@ annotation. Example application that is a discovery client:
|
||||
@SpringBootApplication
|
||||
@EnableDiscoveryClient
|
||||
public class Application {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(Application.class, args);
|
||||
}
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(Application.class, args);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
@@ -91,119 +92,160 @@ public class Application {
|
||||
|
||||
<!-- Spring Cloud Config -->
|
||||
{% capture project_description %}
|
||||
Centralized external configuration management backed by a git repository. The configuration resources map directly to Spring `Environment` but could be used by non-Spring applications if desired.
|
||||
Centralized external configuration management backed by a git repository. The configuration resources map directly to
|
||||
Spring `Environment` but could be used by non-Spring applications if desired.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-config" repo_url="https://github.com/spring-cloud/spring-cloud-config" project_title="Spring Cloud Config" project_description=project_description %}
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-config"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-config" project_title="Spring Cloud Config"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Netflix -->
|
||||
{% capture project_description %}
|
||||
Integration with various Netflix OSS components (Eureka, Hystrix, Zuul, Archaius, etc.).
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-netflix" repo_url="https://github.com/spring-cloud/spring-cloud-netflix" project_title="Spring Cloud Netflix" project_description=project_description %}
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-netflix"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-netflix" project_title="Spring Cloud Netflix"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Bus -->
|
||||
{% capture project_description %}
|
||||
An event bus for linking services and service instances together with distributed messaging. Useful for propagating state changes across a cluster (e.g. config change events).
|
||||
An event bus for linking services and service instances together with distributed messaging. Useful for propagating
|
||||
state changes across a cluster (e.g. config change events).
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-bus" repo_url="https://github.com/spring-cloud/spring-cloud-bus" project_title="Spring Cloud Bus" project_description=project_description %}
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-bus"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-bus" project_title="Spring Cloud Bus"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Cloudfoundry -->
|
||||
{% capture project_description %}
|
||||
Integrates your application with Pivotal Cloud Foundry. Provides a service discovery implementation and also makes it easy to implement SSO and OAuth2 protected resources.
|
||||
Integrates your application with Pivotal Cloud Foundry. Provides a service discovery implementation and also makes it
|
||||
easy to implement SSO and OAuth2 protected resources.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-cloudfoundry" repo_url="https://github.com/spring-cloud/spring-cloud-cloudfoundry" project_title="Spring Cloud for Cloud Foundry" project_description=project_description %}
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-cloudfoundry"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-cloudfoundry" project_title="Spring Cloud for Cloud Foundry"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Open Service Broker -->
|
||||
{% capture project_description %}
|
||||
Provides a starting point for building a service broker that implements the Open Service Broker API.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-open-service-broker/" repo_url="https://github.com/spring-cloud/spring-cloud-open-service-broker" project_title="Spring Cloud Open Service Broker" project_description=project_description %}
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-open-service-broker/"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-open-service-broker" project_title="Spring Cloud Open Service
|
||||
Broker" project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Cluster -->
|
||||
{% capture project_description %}
|
||||
Leadership election and common stateful patterns with an abstraction and implementation for Zookeeper, Redis, Hazelcast, Consul.
|
||||
Leadership election and common stateful patterns with an abstraction and implementation for Zookeeper, Redis, Hazelcast,
|
||||
Consul.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="/spring-cloud" repo_url="https://github.com/spring-cloud/spring-cloud-cluster" project_title="Spring Cloud Cluster" project_description=project_description %}
|
||||
{% include project_block.md site_url="/spring-cloud" repo_url="https://github.com/spring-cloud/spring-cloud-cluster"
|
||||
project_title="Spring Cloud Cluster" project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Consul -->
|
||||
{% capture project_description %}
|
||||
Service discovery and configuration management with Hashicorp Consul.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-consul" repo_url="https://github.com/spring-cloud/spring-cloud-consul" project_title="Spring Cloud Consul" project_description=project_description %}
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-consul"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-consul" project_title="Spring Cloud Consul"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Security -->
|
||||
{% capture project_description %}
|
||||
Provides support for load-balanced OAuth2 rest client and authentication header relays in a Zuul proxy.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-security" repo_url="https://github.com/spring-cloud/spring-cloud-security" project_title="Spring Cloud Security" project_description=project_description %}
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-security"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-security" project_title="Spring Cloud Security"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Sleuth -->
|
||||
{% capture project_description %}
|
||||
Distributed tracing for Spring Cloud applications, compatible with Zipkin, HTrace and log-based (e.g. ELK) tracing.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-sleuth" repo_url="https://github.com/spring-cloud/spring-cloud-sleuth" project_title="Spring Cloud Sleuth" project_description=project_description %}
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-sleuth"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-sleuth" project_title="Spring Cloud Sleuth"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Data Flow -->
|
||||
{% capture project_description %}
|
||||
A cloud-native orchestration service for composable microservice applications on modern runtimes. Easy-to-use DSL, drag-and-drop GUI, and REST-APIs together simplifies the overall orchestration of microservice based data pipelines.
|
||||
A cloud-native orchestration service for composable microservice applications on modern runtimes. Easy-to-use DSL,
|
||||
drag-and-drop GUI, and REST-APIs together simplifies the overall orchestration of microservice based data pipelines.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-dataflow" repo_url="https://github.com/spring-cloud/spring-cloud-dataflow" project_title="Spring Cloud Data Flow" project_description=project_description %}
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-dataflow"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-dataflow" project_title="Spring Cloud Data Flow"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Stream -->
|
||||
{% capture project_description %}
|
||||
A lightweight event-driven microservices framework to quickly build applications that can connect to external systems. Simple declarative model to send and receive messages using Apache Kafka or RabbitMQ between Spring Boot apps.
|
||||
A lightweight event-driven microservices framework to quickly build applications that can connect to external systems.
|
||||
Simple declarative model to send and receive messages using Apache Kafka or RabbitMQ between Spring Boot apps.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-stream" repo_url="https://github.com/spring-cloud/spring-cloud-stream" project_title="Spring Cloud Stream" project_description=project_description %}
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-stream"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-stream" project_title="Spring Cloud Stream"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Stream App Starters -->
|
||||
{% capture project_description %}
|
||||
Spring Cloud Stream App Starters are Spring Boot based Spring Integration applications that provide integration with external systems.
|
||||
Spring Cloud Stream App Starters are Spring Boot based Spring Integration applications that provide integration with
|
||||
external systems.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-stream-app-starters" repo_url="https://github.com/spring-cloud/spring-cloud-stream-app-starters" project_title="Spring Cloud Stream App Starters" project_description=project_description %}
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-stream-app-starters"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-stream-app-starters" project_title="Spring Cloud Stream App
|
||||
Starters" project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Task -->
|
||||
{% capture project_description %}
|
||||
A short-lived microservices framework to quickly build applications that perform finite amounts of data processing. Simple declarative for adding both functional and non-functional features to Spring Boot apps.
|
||||
A short-lived microservices framework to quickly build applications that perform finite amounts of data processing.
|
||||
Simple declarative for adding both functional and non-functional features to Spring Boot apps.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-task" repo_url="https://github.com/spring-cloud/spring-cloud-task" project_title="Spring Cloud Task" project_description=project_description %}
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-task"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-task" project_title="Spring Cloud Task"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Task App Starters -->
|
||||
{% capture project_description %}
|
||||
Spring Cloud Task App Starters are Spring Boot applications that may be any process including Spring Batch jobs that do not run forever, and they end/stop after a finite period of data processing.
|
||||
Spring Cloud Task App Starters are Spring Boot applications that may be any process including Spring Batch jobs that do
|
||||
not run forever, and they end/stop after a finite period of data processing.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-task-app-starters" repo_url="https://github.com/spring-cloud/spring-cloud-task-app-starters" project_title="Spring Cloud Task App Starters" project_description=project_description %}
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-task-app-starters"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-task-app-starters" project_title="Spring Cloud Task App Starters"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Zookeeper -->
|
||||
{% capture project_description %}
|
||||
Service discovery and configuration management with Apache Zookeeper.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-zookeeper" repo_url="https://github.com/spring-cloud/spring-cloud-zookeeper" project_title="Spring Cloud Zookeeper" project_description=project_description %}
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-zookeeper"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-zookeeper" project_title="Spring Cloud Zookeeper"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud AWS -->
|
||||
{% capture project_description %}
|
||||
Easy integration with hosted Amazon Web Services. It offers a convenient way to interact with AWS provided services using well-known Spring idioms and APIs, such as the messaging or caching API. Developers can build their application around the hosted services without having to care about infrastructure or maintenance.
|
||||
Easy integration with hosted Amazon Web Services. It offers a convenient way to interact with AWS provided services
|
||||
using well-known Spring idioms and APIs, such as the messaging or caching API. Developers can build their application
|
||||
around the hosted services without having to care about infrastructure or maintenance.
|
||||
{% endcapture %}
|
||||
|
||||
{% capture site_url %}
|
||||
{{ site.projects_site_url }}/spring-cloud-aws
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url=site_url repo_url="https://github.com/spring-cloud/spring-cloud-aws" project_title="Spring Cloud for Amazon Web Services" project_description=project_description %}
|
||||
{% include project_block.md site_url=site_url repo_url="https://github.com/spring-cloud/spring-cloud-aws"
|
||||
project_title="Spring Cloud for Amazon Web Services" project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Connectors -->
|
||||
{% capture project_description %}
|
||||
@@ -215,57 +257,77 @@ databases and message brokers (the project formerly known as "Spring Cloud").
|
||||
{{ site.projects_site_url }}/spring-cloud-connectors
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url=site_url repo_url="https://github.com/spring-cloud/spring-cloud-connectors" project_title="Spring Cloud Connectors" project_description=project_description %}
|
||||
{% include project_block.md site_url=site_url repo_url="https://github.com/spring-cloud/spring-cloud-connectors"
|
||||
project_title="Spring Cloud Connectors" project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Starters -->
|
||||
{% capture project_description %}
|
||||
Spring Boot-style starter projects to ease dependency management for consumers of Spring Cloud. (Discontinued as a project and merged with the other projects after Angel.SR2.)
|
||||
Spring Boot-style starter projects to ease dependency management for consumers of Spring Cloud. (Discontinued as a
|
||||
project and merged with the other projects after Angel.SR2.)
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://github.com/spring-cloud/spring-cloud-starters" repo_url="https://github.com/spring-cloud/spring-cloud-starters" project_title="Spring Cloud Starters" project_description=project_description %}
|
||||
{% include project_block.md site_url="https://github.com/spring-cloud/spring-cloud-starters"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-starters" project_title="Spring Cloud Starters"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud CLI -->
|
||||
{% capture project_description %}
|
||||
Spring Boot CLI plugin for creating Spring Cloud component applications quickly in Groovy
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://github.com/spring-cloud/spring-cloud-cli" repo_url="https://github.com/spring-cloud/spring-cloud-cli" project_title="Spring Cloud CLI" project_description=project_description %}
|
||||
|
||||
{% include project_block.md site_url="https://github.com/spring-cloud/spring-cloud-cli"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-cli" project_title="Spring Cloud CLI"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Contract -->
|
||||
{% capture project_description %}
|
||||
Spring Cloud Contract is an umbrella project holding solutions that help users in successfully implementing the Consumer Driven Contracts approach.
|
||||
Spring Cloud Contract is an umbrella project holding solutions that help users in successfully implementing the Consumer
|
||||
Driven Contracts approach.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-contract" repo_url="https://github.com/spring-cloud/spring-cloud-contract" project_title="Spring Cloud Contract" project_description=project_description %}
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-contract"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-contract" project_title="Spring Cloud Contract"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Gateway -->
|
||||
{% capture project_description %}
|
||||
Spring Cloud Gateway is an intelligent and programmable router based on Project Reactor.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-gateway" repo_url="https://github.com/spring-cloud/spring-cloud-gateway" project_title="Spring Cloud Gateway" project_description=project_description %}
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-gateway"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-gateway" project_title="Spring Cloud Gateway"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud OpenFeign -->
|
||||
{% capture project_description %}
|
||||
Spring Cloud OpenFeign provides integrations for Spring Boot apps through autoconfiguration and binding to the Spring Environment and other Spring programming model idioms.
|
||||
Spring Cloud OpenFeign provides integrations for Spring Boot apps through autoconfiguration and binding to the Spring
|
||||
Environment and other Spring programming model idioms.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-openfeign" repo_url="https://github.com/spring-cloud/spring-cloud-openfeign" project_title="Spring Cloud OpenFeign" project_description=project_description %}
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-openfeign"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-openfeign" project_title="Spring Cloud OpenFeign"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Pipelines -->
|
||||
{% capture project_description %}
|
||||
Spring Cloud Pipelines provides an opinionated deployment pipeline with steps to ensure that your application can be deployed in zero downtime fashion and easilly rolled back of something goes wrong.
|
||||
Spring Cloud Pipelines provides an opinionated deployment pipeline with steps to ensure that your application can be
|
||||
deployed in zero downtime fashion and easilly rolled back of something goes wrong.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-pipelines" repo_url="https://github.com/spring-cloud/spring-cloud-pipelines" project_title="Spring Cloud Pipelines" project_description=project_description %}
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-pipelines"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-pipelines" project_title="Spring Cloud Pipelines"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Function -->
|
||||
{% capture project_description %}
|
||||
Spring Cloud Function promotes the implementation of business logic via functions. It supports a uniform programming model across serverless providers, as well as the ability to run standalone (locally or in a PaaS).
|
||||
Spring Cloud Function promotes the implementation of business logic via functions. It supports a uniform programming
|
||||
model across serverless providers, as well as the ability to run standalone (locally or in a PaaS).
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-function" repo_url="https://github.com/spring-cloud/spring-cloud-function" project_title="Spring Cloud Function" project_description=project_description %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-function"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-function" project_title="Spring Cloud Function"
|
||||
project_description=project_description %}
|
||||
|
||||
## Release Trains
|
||||
|
||||
Spring Cloud is an umbrella project consisting of independent projects with, in principle, different
|
||||
@@ -273,7 +335,7 @@ release cadences. To manage the portfolio a BOM (Bill of Materials) is published
|
||||
set of dependencies on the individual project (see below). The release trains have names, not
|
||||
versions, to avoid confusion with the sub-projects. The names are an alphabetic sequence (so
|
||||
you can sort them chronologically) with names of London Tube stations ("Angel" is the first
|
||||
release, "Brixton" is the second). When point releases of the individual projects accumulate to
|
||||
release, "Brixton" is the second). When point releases of the individual projects accumulate to
|
||||
a critical mass, or if there is a critical bug in one of them that needs to be available to everyone,
|
||||
the release train will push out "service releases" with names ending ".SRX", where "X"
|
||||
is a number.
|
||||
@@ -282,7 +344,7 @@ Release train contents:
|
||||
|
||||
<!-- BEGIN COMPONENTS -->
|
||||
|
||||
|Component |{{lastGaTrainName}}|{{currentGaTrainName}}|{{currentSnapshotTrainName}}|
|
||||
|Component |{{lastGaTrainName}}|{{currentGaTrainName}}|{{currentSnapshotTrainName}}|
|
||||
|--------------------------------------|-----------------|---------------------|------------------------|
|
||||
{{#each projects}} |{{componentName}}|{{lastGaVersion}}|{{currentGaVersion}}|{{currentSnapshotVersion}}|
|
||||
{{/each}}
|
||||
@@ -292,22 +354,26 @@ Release train contents:
|
||||
Finchley builds and works with Spring Boot 2.0.x, and is not expected
|
||||
to work with Spring Boot 1.5.x.
|
||||
|
||||
Note: The Dalston release train will [reach end-of-life](https://spring.io/blog/2018/06/19/spring-cloud-finchley-release-is-available) in December 2018. Edgware will follow the end-of-life cycle of Spring Boot 1.5.x.
|
||||
|
||||
Note: The Dalston release train will [reach
|
||||
end-of-life](https://spring.io/blog/2018/06/19/spring-cloud-finchley-release-is-available) in December 2018. Edgware
|
||||
will follow the end-of-life cycle of Spring Boot 1.5.x.
|
||||
|
||||
The Dalston and Edgware release trains build on Spring Boot 1.5.x, and
|
||||
are not expected to work with Spring Boot 2.0.x.
|
||||
|
||||
NOTE: The Camden release train was [marked end-of-life](https://spring.io/blog/2018/06/19/spring-cloud-finchley-release-is-available).
|
||||
|
||||
NOTE: The Camden release train was [marked
|
||||
end-of-life](https://spring.io/blog/2018/06/19/spring-cloud-finchley-release-is-available).
|
||||
|
||||
The Camden release train builds on Spring Boot 1.4.x, but is also
|
||||
tested with 1.5.x.
|
||||
|
||||
NOTE: The Brixton and Angel release trains were [marked end-of-life](https://spring.io/blog/2017/07/21/spring-cloud-dalston-sr2-is-available-now#end-of-life-for-angel-and-brixton-release-trains)
|
||||
NOTE: The Brixton and Angel release trains were [marked
|
||||
end-of-life](https://spring.io/blog/2017/07/21/spring-cloud-dalston-sr2-is-available-now#end-of-life-for-angel-and-brixton-release-trains)
|
||||
(EOL) in July 2017.
|
||||
|
||||
The Brixton release train builds on Spring Boot 1.3.x, but is also
|
||||
tested with 1.4.x.
|
||||
|
||||
|
||||
The Angel release train builds on Spring Boot 1.2.x, and is
|
||||
incompatible in some areas with Spring Boot 1.3.x. Brixton builds on
|
||||
Spring Boot 1.3.x and is similarly incompatible with 1.2.x. Some
|
||||
@@ -335,8 +401,9 @@ Spring dependency management plugin.
|
||||
> Spring Cloud. The opposite is not true: using the Cloud parent
|
||||
> makes it impossible, or at least unreliable, to also use the
|
||||
> Boot BOM to change the version of Spring Boot and its dependencies.
|
||||
|
||||
> NOTE: If you find anything wrong or outdated on this page, please open an issue in [this](https://github.com/spring-projects/spring-cloud) repo.
|
||||
|
||||
> NOTE: If you find anything wrong or outdated on this page, please open an issue in
|
||||
[this](https://github.com/spring-projects/spring-cloud) repo.
|
||||
|
||||
{% endcapture %}
|
||||
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Copyright 2013-2019 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.cloud.release.cloud.buildsystem;
|
||||
|
||||
import org.springframework.cloud.release.internal.buildsystem.CustomBomParser;
|
||||
|
||||
public class SpringCloudMavenBomParserAccessor {
|
||||
|
||||
public static CustomBomParser cloud() {
|
||||
return new SpringCloudMavenBomParser();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -32,10 +32,12 @@ import org.junit.rules.TemporaryFolder;
|
||||
import org.mockito.BDDMockito;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.buildsystem.TestUtils;
|
||||
import org.springframework.cloud.release.internal.docs.ProjectDocumentationUpdater;
|
||||
import org.springframework.cloud.release.internal.docs.DocumentationUpdater;
|
||||
import org.springframework.cloud.release.internal.git.ProjectGitHandler;
|
||||
import org.springframework.cloud.release.internal.github.ProjectGitHubHandler;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.template.TemplateGenerator;
|
||||
import org.springframework.util.FileSystemUtils;
|
||||
|
||||
import static org.assertj.core.api.BDDAssertions.then;
|
||||
@@ -54,6 +56,8 @@ public class SpringCloudCustomProjectDocumentationUpdaterTests {
|
||||
|
||||
ProjectGitHandler handler;
|
||||
|
||||
ProjectGitHubHandler gitHubHandler;
|
||||
|
||||
File clonedDocProject;
|
||||
|
||||
ReleaserProperties properties = new ReleaserProperties();
|
||||
@@ -69,6 +73,7 @@ public class SpringCloudCustomProjectDocumentationUpdaterTests {
|
||||
file("/projects/spring-cloud-static/").toURI().toString());
|
||||
this.handler = new ProjectGitHandler(this.properties);
|
||||
this.clonedDocProject = this.handler.cloneDocumentationProject();
|
||||
this.gitHubHandler = new ProjectGitHubHandler(this.properties);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -106,8 +111,9 @@ public class SpringCloudCustomProjectDocumentationUpdaterTests {
|
||||
};
|
||||
|
||||
BDDAssertions
|
||||
.thenThrownBy(() -> new ProjectDocumentationUpdater(properties,
|
||||
this.handler, Collections.singletonList(customUpdater))
|
||||
.thenThrownBy(() -> new DocumentationUpdater(this.handler, properties,
|
||||
templateGenerator(properties),
|
||||
Collections.singletonList(customUpdater))
|
||||
.updateDocsRepo(releaseTrainVersion, "vAngel.SR33"))
|
||||
.isInstanceOf(IllegalStateException.class)
|
||||
.hasMessageContaining("The URL to the documentation repo not found");
|
||||
@@ -126,10 +132,10 @@ public class SpringCloudCustomProjectDocumentationUpdaterTests {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private ProjectDocumentationUpdater projectDocumentationUpdater(
|
||||
private DocumentationUpdater projectDocumentationUpdater(
|
||||
ReleaserProperties properties) {
|
||||
return new ProjectDocumentationUpdater(properties, this.handler,
|
||||
Collections.singletonList(
|
||||
return new DocumentationUpdater(this.handler, properties,
|
||||
templateGenerator(properties), Collections.singletonList(
|
||||
new SpringCloudCustomProjectDocumentationUpdater(this.handler) {
|
||||
@Override
|
||||
boolean isNewerOrEqualReleaseTrain(String storedReleaseTrain,
|
||||
@@ -142,10 +148,10 @@ public class SpringCloudCustomProjectDocumentationUpdaterTests {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private ProjectDocumentationUpdater projectDocumentationUpdaterWithNoIndexHtml(
|
||||
private DocumentationUpdater projectDocumentationUpdaterWithNoIndexHtml(
|
||||
ReleaserProperties properties) {
|
||||
return new ProjectDocumentationUpdater(properties, this.handler,
|
||||
Collections.singletonList(
|
||||
return new DocumentationUpdater(this.handler, properties,
|
||||
templateGenerator(properties), Collections.singletonList(
|
||||
new SpringCloudCustomProjectDocumentationUpdater(this.handler) {
|
||||
@Override
|
||||
File indexHtml(File clonedDocumentationProject,
|
||||
@@ -155,6 +161,11 @@ public class SpringCloudCustomProjectDocumentationUpdaterTests {
|
||||
}));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private TemplateGenerator templateGenerator(ReleaserProperties properties) {
|
||||
return new TemplateGenerator(properties, this.gitHubHandler);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private ProjectGitHandler projectGitHandler(ReleaserProperties properties) {
|
||||
return new ProjectGitHandler(properties);
|
||||
|
||||
@@ -30,11 +30,11 @@ import org.junit.Test;
|
||||
import org.junit.rules.TemporaryFolder;
|
||||
|
||||
import org.springframework.cloud.release.internal.buildsystem.MavenBomParserAccessor;
|
||||
import org.springframework.cloud.release.internal.buildsystem.PomReader;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectPomUpdater;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.buildsystem.TestUtils;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
import org.springframework.cloud.release.internal.tech.PomReader;
|
||||
import org.springframework.util.FileSystemUtils;
|
||||
|
||||
import static org.assertj.core.api.BDDAssertions.then;
|
||||
|
||||
@@ -33,12 +33,12 @@ import org.mockito.junit.MockitoJUnitRunner;
|
||||
import org.springframework.boot.test.rule.OutputCapture;
|
||||
import org.springframework.cloud.release.internal.buildsystem.GradleUpdater;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectPomUpdater;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.docs.DocumentationUpdater;
|
||||
import org.springframework.cloud.release.internal.git.ProjectGitHandler;
|
||||
import org.springframework.cloud.release.internal.github.ProjectGitHubHandler;
|
||||
import org.springframework.cloud.release.internal.postrelease.PostReleaseActions;
|
||||
import org.springframework.cloud.release.internal.project.ProjectCommandExecutor;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
import org.springframework.cloud.release.internal.sagan.SaganUpdater;
|
||||
import org.springframework.cloud.release.internal.template.TemplateGenerator;
|
||||
|
||||
@@ -18,14 +18,14 @@ package org.springframework.cloud.release.internal.buildsystem;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import org.springframework.cloud.release.cloud.buildsystem.SpringCloudMavenBomParser;
|
||||
import org.springframework.cloud.release.cloud.buildsystem.SpringCloudMavenBomParserAccessor;
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
|
||||
public class MavenBomParserAccessor {
|
||||
|
||||
public static BomParser cloudMavenBomParser(ReleaserProperties properties) {
|
||||
return new MavenBomParser(properties,
|
||||
Collections.singletonList(new SpringCloudMavenBomParser()));
|
||||
Collections.singletonList(SpringCloudMavenBomParserAccessor.cloud()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ import org.junit.Test;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.git.GitRepoTests;
|
||||
import org.springframework.cloud.release.internal.project.Project;
|
||||
|
||||
import static org.assertj.core.api.BDDAssertions.then;
|
||||
import static org.assertj.core.api.BDDAssertions.thenThrownBy;
|
||||
|
||||
@@ -27,6 +27,7 @@ import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.cloud.release.internal.git.GitRepoTests;
|
||||
import org.springframework.cloud.release.internal.tech.PomReader;
|
||||
|
||||
import static org.assertj.core.api.BDDAssertions.then;
|
||||
import static org.assertj.core.api.BDDAssertions.thenThrownBy;
|
||||
|
||||
@@ -33,6 +33,8 @@ import org.junit.rules.TemporaryFolder;
|
||||
import org.springframework.boot.test.rule.OutputCapture;
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.git.GitRepoTests;
|
||||
import org.springframework.cloud.release.internal.project.Project;
|
||||
import org.springframework.cloud.release.internal.tech.PomReader;
|
||||
import org.springframework.util.FileSystemUtils;
|
||||
|
||||
/**
|
||||
|
||||
@@ -27,6 +27,7 @@ import org.mockito.BDDMockito;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.git.ProjectGitHandler;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
|
||||
/**
|
||||
|
||||
@@ -26,6 +26,7 @@ import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.cloud.release.internal.git.GitRepoTests;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
|
||||
import static org.assertj.core.api.BDDAssertions.then;
|
||||
import static org.assertj.core.api.BDDAssertions.thenThrownBy;
|
||||
|
||||
@@ -25,6 +25,7 @@ import java.util.Set;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
|
||||
import static org.assertj.core.api.BDDAssertions.then;
|
||||
|
||||
@@ -25,6 +25,8 @@ import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.MockitoJUnitRunner;
|
||||
|
||||
import org.springframework.cloud.release.internal.project.Project;
|
||||
|
||||
import static org.mockito.BDDMockito.then;
|
||||
|
||||
/**
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.mockito.Mock;
|
||||
import org.mockito.junit.MockitoJUnitRunner;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.project.Project;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.BDDMockito.then;
|
||||
|
||||
@@ -23,8 +23,9 @@ import java.util.Set;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.cloud.release.cloud.buildsystem.SpringCloudMavenBomParser;
|
||||
import org.springframework.cloud.release.cloud.buildsystem.SpringCloudMavenBomParserAccessor;
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.project.Project;
|
||||
|
||||
import static org.assertj.core.api.BDDAssertions.then;
|
||||
|
||||
@@ -41,7 +42,8 @@ public class VersionsFromBomTests {
|
||||
public void should_add_boot_to_versions_when_version_is_created() {
|
||||
VersionsFromBom versionsFromBom = new VersionsFromBomBuilder()
|
||||
.releaserProperties(new ReleaserProperties())
|
||||
.parsers(Collections.singletonList(new SpringCloudMavenBomParser()))
|
||||
.parsers(Collections
|
||||
.singletonList(SpringCloudMavenBomParserAccessor.cloud()))
|
||||
.retrieveFromBom();
|
||||
versionsFromBom.setVersion("spring-boot", "1.2.3.RELEASE");
|
||||
|
||||
@@ -246,7 +248,8 @@ public class VersionsFromBomTests {
|
||||
|
||||
private VersionsFromBom mixedVersions() {
|
||||
return new VersionsFromBomBuilder().releaserProperties(new ReleaserProperties())
|
||||
.parsers(Collections.singletonList(new SpringCloudMavenBomParser()))
|
||||
.parsers(Collections
|
||||
.singletonList(SpringCloudMavenBomParserAccessor.cloud()))
|
||||
.projects(mixedProjects()).merged();
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.assertj.core.api.BDDAssertions;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
|
||||
/**
|
||||
|
||||
@@ -29,11 +29,11 @@ import org.junit.Test;
|
||||
import org.junit.rules.TemporaryFolder;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.buildsystem.TestUtils;
|
||||
import org.springframework.cloud.release.internal.git.GitTestUtils;
|
||||
import org.springframework.cloud.release.internal.git.ProjectGitHandler;
|
||||
import org.springframework.cloud.release.internal.github.ProjectGitHubHandler;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
import org.springframework.cloud.release.internal.template.TemplateGenerator;
|
||||
import org.springframework.util.FileSystemUtils;
|
||||
|
||||
@@ -21,7 +21,7 @@ import java.util.List;
|
||||
import org.assertj.core.api.BDDAssertions;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
|
||||
/**
|
||||
|
||||
@@ -25,7 +25,7 @@ import org.mockito.Mock;
|
||||
import org.mockito.junit.MockitoJUnitRunner;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
|
||||
@@ -33,7 +33,7 @@ import org.mockito.BDDMockito;
|
||||
|
||||
import org.springframework.boot.test.rule.OutputCapture;
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
|
||||
import static org.assertj.core.api.BDDAssertions.then;
|
||||
|
||||
@@ -30,7 +30,7 @@ import org.junit.rules.TemporaryFolder;
|
||||
|
||||
import org.springframework.boot.test.rule.OutputCapture;
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
|
||||
import static org.assertj.core.api.BDDAssertions.then;
|
||||
import static org.assertj.core.api.BDDAssertions.thenThrownBy;
|
||||
|
||||
@@ -30,7 +30,7 @@ import org.junit.rules.TemporaryFolder;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.buildsystem.GradleUpdater;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
import org.springframework.util.FileSystemUtils;
|
||||
|
||||
|
||||
@@ -39,15 +39,15 @@ import org.mockito.BDDMockito;
|
||||
import org.springframework.cloud.release.internal.PomUpdateAcceptanceTests;
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.buildsystem.GradleUpdater;
|
||||
import org.springframework.cloud.release.internal.buildsystem.PomReader;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectPomUpdater;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.buildsystem.TestUtils;
|
||||
import org.springframework.cloud.release.internal.git.GitTestUtils;
|
||||
import org.springframework.cloud.release.internal.git.ProjectGitHandler;
|
||||
import org.springframework.cloud.release.internal.project.ProcessedProject;
|
||||
import org.springframework.cloud.release.internal.project.ProjectCommandExecutor;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
import org.springframework.cloud.release.internal.tech.PomReader;
|
||||
import org.springframework.cloud.release.internal.versions.VersionsFetcher;
|
||||
import org.springframework.util.FileSystemUtils;
|
||||
import org.springframework.util.LinkedMultiValueMap;
|
||||
|
||||
@@ -32,7 +32,6 @@ import org.junit.rules.TemporaryFolder;
|
||||
import org.springframework.boot.test.rule.OutputCapture;
|
||||
import org.springframework.cloud.release.internal.PomUpdateAcceptanceTests;
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.buildsystem.TestUtils;
|
||||
import org.springframework.util.FileSystemUtils;
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ import org.mockito.BDDMockito;
|
||||
import org.mockito.Mockito;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.BDDMockito.given;
|
||||
|
||||
@@ -24,8 +24,8 @@ import java.util.HashSet;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.github.ProjectGitHubHandler;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
|
||||
import static org.assertj.core.api.BDDAssertions.then;
|
||||
@@ -118,8 +118,8 @@ public class TemplateGeneratorTests {
|
||||
.contains("The release can be found in [Maven Central]")
|
||||
.contains("### Spring Cloud Sleuth")
|
||||
.contains(
|
||||
"| Spring Cloud Sleuth | 1.0.0.RELEASE | ([issues](https://foo.bar.com))")
|
||||
.contains("| Spring Cloud Foo\t| 1.0.2.RELEASE\t| ")
|
||||
"| Spring Cloud Sleuth | 1.0.0.RELEASE | ([issues](https://foo.bar.com))")
|
||||
.contains("| Spring Cloud Foo | 1.0.2.RELEASE | ")
|
||||
.contains("<version>Dalston.RELEASE</version>").contains(
|
||||
"mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Dalston.RELEASE'");
|
||||
}
|
||||
@@ -143,7 +143,7 @@ public class TemplateGeneratorTests {
|
||||
.contains("The release can be found in [Maven Central]")
|
||||
.contains("### Spring Cloud Sleuth")
|
||||
.contains(
|
||||
"| Spring Cloud Sleuth\t| 1.0.0.RELEASE\t| ([issues](https://foo.bar.com))")
|
||||
"| Spring Cloud Sleuth | 1.0.0.RELEASE | ([issues](https://foo.bar.com))")
|
||||
.contains("<version>Dalston.RELEASE</version>").contains(
|
||||
"mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Dalston.RELEASE'");
|
||||
}
|
||||
@@ -167,7 +167,7 @@ public class TemplateGeneratorTests {
|
||||
.contains("The release can be found in [Maven Central]")
|
||||
.contains("### Spring Cloud Sleuth")
|
||||
.contains(
|
||||
"| Spring Cloud Sleuth | 1.0.0.RELEASE | ([issues](https://foo.bar.com))")
|
||||
"| Spring Cloud Sleuth | 1.0.0.RELEASE | ([issues](https://foo.bar.com))")
|
||||
.contains("<version>Dalston.SR1</version>").contains(
|
||||
"mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Dalston.SR1'");
|
||||
}
|
||||
@@ -191,7 +191,7 @@ public class TemplateGeneratorTests {
|
||||
.contains("The release can be found in [Maven Central]")
|
||||
.contains("### Spring Cloud Sleuth")
|
||||
.contains(
|
||||
"| Spring Cloud Sleuth | 1.0.0.RELEASE | ([issues](https://foo.bar.com))")
|
||||
"| Spring Cloud Sleuth | 1.0.0.RELEASE | ([issues](https://foo.bar.com))")
|
||||
.contains("<version>Dalston.SR1</version>").contains(
|
||||
"mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Dalston.SR1'");
|
||||
}
|
||||
@@ -215,7 +215,7 @@ public class TemplateGeneratorTests {
|
||||
.contains("The release can be found in [Spring Milestone]")
|
||||
.contains("### Spring Cloud Sleuth")
|
||||
.contains(
|
||||
"| Spring Cloud Sleuth\t| 1.0.0.M1\t| ([issues](https://foo.bar.com))")
|
||||
"| Spring Cloud Sleuth | 1.0.0.M1 | ([issues](https://foo.bar.com))")
|
||||
.contains("<id>spring-milestones</id>")
|
||||
.contains("url 'https://repo.spring.io/milestone'")
|
||||
.contains("<version>Dalston.M1</version>").contains(
|
||||
@@ -241,7 +241,7 @@ public class TemplateGeneratorTests {
|
||||
.contains("The release can be found in [Spring Milestone]")
|
||||
.contains("### Spring Cloud Sleuth")
|
||||
.contains(
|
||||
"| Spring Cloud Sleuth\t| 1.0.0.M1\t| ([issues](https://foo.bar.com))")
|
||||
"| Spring Cloud Sleuth | 1.0.0.M1 | ([issues](https://foo.bar.com))")
|
||||
.contains("<id>spring-milestones</id>")
|
||||
.contains("url 'https://repo.spring.io/milestone'")
|
||||
.contains("<version>Dalston.M1</version>").contains(
|
||||
@@ -267,7 +267,7 @@ public class TemplateGeneratorTests {
|
||||
.contains("The release can be found in [Spring Milestone]")
|
||||
.contains("### Spring Cloud Sleuth")
|
||||
.contains(
|
||||
"| Spring Cloud Sleuth\t| 1.0.0.RC1\t| ([issues](https://foo.bar.com))")
|
||||
"| Spring Cloud Sleuth | 1.0.0.RC1 | ([issues](https://foo.bar.com))")
|
||||
.contains("<id>spring-milestones</id>")
|
||||
.contains("url 'https://repo.spring.io/milestone'")
|
||||
.contains("<version>Dalston.RC1</version>").contains(
|
||||
@@ -293,7 +293,7 @@ public class TemplateGeneratorTests {
|
||||
.contains("The release can be found in [Spring Milestone]")
|
||||
.contains("### Spring Cloud Sleuth")
|
||||
.contains(
|
||||
"| Spring Cloud Sleuth\t| 1.0.0.RC1\t| ([issues](https://foo.bar.com))")
|
||||
"| Spring Cloud Sleuth | 1.0.0.RC1 | ([issues](https://foo.bar.com))")
|
||||
.contains("<id>spring-milestones</id>")
|
||||
.contains("url 'https://repo.spring.io/milestone'")
|
||||
.contains("<version>Dalston.RC1</version>").contains(
|
||||
|
||||
@@ -31,8 +31,8 @@ import org.junit.jupiter.api.Test;
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.buildsystem.MavenBomParserAccessor;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectPomUpdater;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.buildsystem.TestUtils;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
import org.springframework.util.FileSystemUtils;
|
||||
|
||||
|
||||
@@ -38,7 +38,8 @@ public class BootstrapClientApplicationTests {
|
||||
public void contextLoads() throws Exception {
|
||||
assertThat(2).isEqualTo(this.server.getTomcat().getMaxThreads());
|
||||
// The application.yml is never read because spring.config.name=sample
|
||||
assertThat("application").isEqualTo(this.server.getServlet().getApplicationDisplayName());
|
||||
assertThat("application")
|
||||
.isEqualTo(this.server.getServlet().getApplicationDisplayName());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -26,8 +26,6 @@ import org.springframework.cloud.config.client.ConfigServicePropertySourceLocato
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest
|
||||
@DirtiesContext
|
||||
@@ -41,7 +39,8 @@ public class BootstrapDecryptionClientApplicationTests {
|
||||
|
||||
@Test
|
||||
public void contextLoads() throws Exception {
|
||||
assertThat(new String[] { "http://localhost:8888" }).isEqualTo(this.config.getUri());
|
||||
assertThat(new String[] { "http://localhost:8888" })
|
||||
.isEqualTo(this.config.getUri());
|
||||
// The application.yml is never read because spring.config.name=sample
|
||||
assertThat(this.locator).isNotNull();
|
||||
}
|
||||
|
||||
@@ -52,6 +52,7 @@ import static org.junit.Assert.fail;
|
||||
public class StandaloneClientApplicationTests {
|
||||
|
||||
private static ConfigurableApplicationContext context;
|
||||
|
||||
@Autowired
|
||||
private ConfigServicePropertySourceLocator locator;
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
# This example catches duplicate Signed-off-by lines.
|
||||
|
||||
test "" = "$(grep '^Signed-off-by: ' "$1" |
|
||||
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
||||
echo >&2 Duplicate Signed-off-by lines.
|
||||
exit 1
|
||||
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
||||
echo >&2 Duplicate Signed-off-by lines.
|
||||
exit 1
|
||||
}
|
||||
|
||||
@@ -7,12 +7,11 @@
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-commit".
|
||||
|
||||
if git rev-parse --verify HEAD >/dev/null 2>&1
|
||||
then
|
||||
against=HEAD
|
||||
if git rev-parse --verify HEAD >/dev/null 2>&1; then
|
||||
against=HEAD
|
||||
else
|
||||
# Initial commit: diff against an empty tree object
|
||||
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
|
||||
# Initial commit: diff against an empty tree object
|
||||
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
|
||||
fi
|
||||
|
||||
# If you want to allow non-ASCII filenames set this variable to true.
|
||||
@@ -25,13 +24,12 @@ exec 1>&2
|
||||
# them from being added to the repository. We exploit the fact that the
|
||||
# printable range starts at the space character and ends with tilde.
|
||||
if [ "$allownonascii" != "true" ] &&
|
||||
# Note that the use of brackets around a tr range is ok here, (it's
|
||||
# even required, for portability to Solaris 10's /usr/bin/tr), since
|
||||
# the square bracket bytes happen to fall in the designated range.
|
||||
test $(git diff --cached --name-only --diff-filter=A -z $against |
|
||||
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
|
||||
then
|
||||
cat <<\EOF
|
||||
# Note that the use of brackets around a tr range is ok here, (it's
|
||||
# even required, for portability to Solaris 10's /usr/bin/tr), since
|
||||
# the square bracket bytes happen to fall in the designated range.
|
||||
test $(git diff --cached --name-only --diff-filter=A -z $against |
|
||||
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0; then
|
||||
cat <<\EOF
|
||||
Error: Attempt to add a non-ASCII file name.
|
||||
|
||||
This can cause problems if you want to work with people on other platforms.
|
||||
@@ -42,7 +40,7 @@ If you know what you are doing you can disable this check using:
|
||||
|
||||
git config hooks.allownonascii true
|
||||
EOF
|
||||
exit 1
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# If there are whitespace errors, print the offending file names and fail.
|
||||
|
||||
@@ -24,30 +24,26 @@ url="$2"
|
||||
|
||||
z40=0000000000000000000000000000000000000000
|
||||
|
||||
while read local_ref local_sha remote_ref remote_sha
|
||||
do
|
||||
if [ "$local_sha" = $z40 ]
|
||||
then
|
||||
# Handle delete
|
||||
:
|
||||
else
|
||||
if [ "$remote_sha" = $z40 ]
|
||||
then
|
||||
# New branch, examine all commits
|
||||
range="$local_sha"
|
||||
else
|
||||
# Update to existing branch, examine new commits
|
||||
range="$remote_sha..$local_sha"
|
||||
fi
|
||||
while read local_ref local_sha remote_ref remote_sha; do
|
||||
if [ "$local_sha" = $z40 ]; then
|
||||
# Handle delete
|
||||
:
|
||||
else
|
||||
if [ "$remote_sha" = $z40 ]; then
|
||||
# New branch, examine all commits
|
||||
range="$local_sha"
|
||||
else
|
||||
# Update to existing branch, examine new commits
|
||||
range="$remote_sha..$local_sha"
|
||||
fi
|
||||
|
||||
# Check for WIP commit
|
||||
commit=`git rev-list -n 1 --grep '^WIP' "$range"`
|
||||
if [ -n "$commit" ]
|
||||
then
|
||||
echo >&2 "Found WIP commit in $local_ref, not pushing"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
# Check for WIP commit
|
||||
commit=$(git rev-list -n 1 --grep '^WIP' "$range")
|
||||
if [ -n "$commit" ]; then
|
||||
echo >&2 "Found WIP commit in $local_ref, not pushing"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
exit 0
|
||||
|
||||
@@ -17,20 +17,19 @@
|
||||
|
||||
publish=next
|
||||
basebranch="$1"
|
||||
if test "$#" = 2
|
||||
then
|
||||
topic="refs/heads/$2"
|
||||
if test "$#" = 2; then
|
||||
topic="refs/heads/$2"
|
||||
else
|
||||
topic=`git symbolic-ref HEAD` ||
|
||||
exit 0 ;# we do not interrupt rebasing detached HEAD
|
||||
topic=$(git symbolic-ref HEAD) ||
|
||||
exit 0 # we do not interrupt rebasing detached HEAD
|
||||
fi
|
||||
|
||||
case "$topic" in
|
||||
refs/heads/??/*)
|
||||
;;
|
||||
refs/heads/??/*) ;;
|
||||
|
||||
*)
|
||||
exit 0 ;# we do not interrupt others.
|
||||
;;
|
||||
exit 0 # we do not interrupt others.
|
||||
;;
|
||||
esac
|
||||
|
||||
# Now we are dealing with a topic branch being rebased
|
||||
@@ -38,34 +37,31 @@ esac
|
||||
|
||||
# Does the topic really exist?
|
||||
git show-ref -q "$topic" || {
|
||||
echo >&2 "No such branch $topic"
|
||||
exit 1
|
||||
echo >&2 "No such branch $topic"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Is topic fully merged to master?
|
||||
not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
|
||||
if test -z "$not_in_master"
|
||||
then
|
||||
echo >&2 "$topic is fully merged to master; better remove it."
|
||||
exit 1 ;# we could allow it, but there is no point.
|
||||
not_in_master=$(git rev-list --pretty=oneline ^master "$topic")
|
||||
if test -z "$not_in_master"; then
|
||||
echo >&2 "$topic is fully merged to master; better remove it."
|
||||
exit 1 # we could allow it, but there is no point.
|
||||
fi
|
||||
|
||||
# Is topic ever merged to next? If so you should not be rebasing it.
|
||||
only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
|
||||
only_next_2=`git rev-list ^master ${publish} | sort`
|
||||
if test "$only_next_1" = "$only_next_2"
|
||||
then
|
||||
not_in_topic=`git rev-list "^$topic" master`
|
||||
if test -z "$not_in_topic"
|
||||
then
|
||||
echo >&2 "$topic is already up to date with master"
|
||||
exit 1 ;# we could allow it, but there is no point.
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
only_next_1=$(git rev-list ^master "^$topic" ${publish} | sort)
|
||||
only_next_2=$(git rev-list ^master ${publish} | sort)
|
||||
if test "$only_next_1" = "$only_next_2"; then
|
||||
not_in_topic=$(git rev-list "^$topic" master)
|
||||
if test -z "$not_in_topic"; then
|
||||
echo >&2 "$topic is already up to date with master"
|
||||
exit 1 # we could allow it, but there is no point.
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
|
||||
/usr/bin/perl -e '
|
||||
not_in_next=$(git rev-list --pretty=oneline ^${publish} "$topic")
|
||||
/usr/bin/perl -e '
|
||||
my $topic = $ARGV[0];
|
||||
my $msg = "* $topic has commits already merged to public branch:\n";
|
||||
my (%not_in_next) = map {
|
||||
@@ -85,7 +81,7 @@ else
|
||||
}
|
||||
}
|
||||
' "$topic" "$not_in_next" "$not_in_master"
|
||||
exit 1
|
||||
exit 1
|
||||
fi
|
||||
|
||||
<<\DOC_END
|
||||
|
||||
@@ -6,19 +6,18 @@
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-receive".
|
||||
|
||||
if test -n "$GIT_PUSH_OPTION_COUNT"
|
||||
then
|
||||
i=0
|
||||
while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"
|
||||
do
|
||||
eval "value=\$GIT_PUSH_OPTION_$i"
|
||||
case "$value" in
|
||||
echoback=*)
|
||||
echo "echo from the pre-receive-hook: ${value#*=}" >&2
|
||||
;;
|
||||
reject)
|
||||
exit 1
|
||||
esac
|
||||
i=$((i + 1))
|
||||
done
|
||||
if test -n "$GIT_PUSH_OPTION_COUNT"; then
|
||||
i=0
|
||||
while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"; do
|
||||
eval "value=\$GIT_PUSH_OPTION_$i"
|
||||
case "$value" in
|
||||
echoback=*)
|
||||
echo "echo from the pre-receive-hook: ${value#*=}" >&2
|
||||
;;
|
||||
reject)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
i=$((i + 1))
|
||||
done
|
||||
fi
|
||||
|
||||
@@ -31,15 +31,15 @@ newrev="$3"
|
||||
|
||||
# --- Safety check
|
||||
if [ -z "$GIT_DIR" ]; then
|
||||
echo "Don't run this script from the command line." >&2
|
||||
echo " (if you want, you could supply GIT_DIR then run" >&2
|
||||
echo " $0 <ref> <oldrev> <newrev>)" >&2
|
||||
exit 1
|
||||
echo "Don't run this script from the command line." >&2
|
||||
echo " (if you want, you could supply GIT_DIR then run" >&2
|
||||
echo " $0 <ref> <oldrev> <newrev>)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
|
||||
echo "usage: $0 <ref> <oldrev> <newrev>" >&2
|
||||
exit 1
|
||||
echo "usage: $0 <ref> <oldrev> <newrev>" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# --- Config
|
||||
@@ -53,75 +53,74 @@ allowmodifytag=$(git config --bool hooks.allowmodifytag)
|
||||
projectdesc=$(sed -e '1q' "$GIT_DIR/description")
|
||||
case "$projectdesc" in
|
||||
"Unnamed repository"* | "")
|
||||
echo "*** Project description file hasn't been set" >&2
|
||||
exit 1
|
||||
;;
|
||||
echo "*** Project description file hasn't been set" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- Check types
|
||||
# if $newrev is 0000...0000, it's a commit to delete a ref.
|
||||
zero="0000000000000000000000000000000000000000"
|
||||
if [ "$newrev" = "$zero" ]; then
|
||||
newrev_type=delete
|
||||
newrev_type=delete
|
||||
else
|
||||
newrev_type=$(git cat-file -t $newrev)
|
||||
newrev_type=$(git cat-file -t $newrev)
|
||||
fi
|
||||
|
||||
case "$refname","$newrev_type" in
|
||||
refs/tags/*,commit)
|
||||
# un-annotated tag
|
||||
short_refname=${refname##refs/tags/}
|
||||
if [ "$allowunannotated" != "true" ]; then
|
||||
echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
|
||||
echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,delete)
|
||||
# delete tag
|
||||
if [ "$allowdeletetag" != "true" ]; then
|
||||
echo "*** Deleting a tag is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,tag)
|
||||
# annotated tag
|
||||
if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
|
||||
then
|
||||
echo "*** Tag '$refname' already exists." >&2
|
||||
echo "*** Modifying a tag is not allowed in this repository." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,commit)
|
||||
# branch
|
||||
if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
|
||||
echo "*** Creating a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,delete)
|
||||
# delete branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/remotes/*,commit)
|
||||
# tracking branch
|
||||
;;
|
||||
refs/remotes/*,delete)
|
||||
# delete tracking branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a tracking branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
# Anything else (is there anything else?)
|
||||
echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
|
||||
exit 1
|
||||
;;
|
||||
refs/tags/*,commit)
|
||||
# un-annotated tag
|
||||
short_refname=${refname##refs/tags/}
|
||||
if [ "$allowunannotated" != "true" ]; then
|
||||
echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
|
||||
echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,delete)
|
||||
# delete tag
|
||||
if [ "$allowdeletetag" != "true" ]; then
|
||||
echo "*** Deleting a tag is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,tag)
|
||||
# annotated tag
|
||||
if [ "$allowmodifytag" != "true" ] && git rev-parse $refname >/dev/null 2>&1; then
|
||||
echo "*** Tag '$refname' already exists." >&2
|
||||
echo "*** Modifying a tag is not allowed in this repository." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,commit)
|
||||
# branch
|
||||
if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
|
||||
echo "*** Creating a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,delete)
|
||||
# delete branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/remotes/*,commit)
|
||||
# tracking branch
|
||||
;;
|
||||
refs/remotes/*,delete)
|
||||
# delete tracking branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a tracking branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
# Anything else (is there anything else?)
|
||||
echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- Finished
|
||||
|
||||
@@ -34,151 +34,158 @@
|
||||
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
if [ -z "$MAVEN_SKIP_RC" ] ; then
|
||||
if [ -z "$MAVEN_SKIP_RC" ]; then
|
||||
|
||||
if [ -f /etc/mavenrc ] ; then
|
||||
if [ -f /etc/mavenrc ]; then
|
||||
. /etc/mavenrc
|
||||
fi
|
||||
|
||||
if [ -f "$HOME/.mavenrc" ] ; then
|
||||
if [ -f "$HOME/.mavenrc" ]; then
|
||||
. "$HOME/.mavenrc"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
# OS specific support. $var _must_ be set to either true or false.
|
||||
cygwin=false;
|
||||
darwin=false;
|
||||
cygwin=false
|
||||
darwin=false
|
||||
mingw=false
|
||||
case "`uname`" in
|
||||
CYGWIN*) cygwin=true ;;
|
||||
MINGW*) mingw=true;;
|
||||
Darwin*) darwin=true
|
||||
#
|
||||
# Look for the Apple JDKs first to preserve the existing behaviour, and then look
|
||||
# for the new JDKs provided by Oracle.
|
||||
#
|
||||
if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then
|
||||
#
|
||||
# Apple JDKs
|
||||
#
|
||||
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
|
||||
fi
|
||||
case "$(uname)" in
|
||||
CYGWIN*) cygwin=true ;;
|
||||
MINGW*) mingw=true ;;
|
||||
Darwin*)
|
||||
darwin=true
|
||||
#
|
||||
# Look for the Apple JDKs first to preserve the existing behaviour, and then look
|
||||
# for the new JDKs provided by Oracle.
|
||||
#
|
||||
if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ]; then
|
||||
#
|
||||
# Apple JDKs
|
||||
#
|
||||
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
|
||||
fi
|
||||
|
||||
if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then
|
||||
#
|
||||
# Apple JDKs
|
||||
#
|
||||
export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home
|
||||
fi
|
||||
if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ]; then
|
||||
#
|
||||
# Apple JDKs
|
||||
#
|
||||
export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home
|
||||
fi
|
||||
|
||||
if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then
|
||||
#
|
||||
# Oracle JDKs
|
||||
#
|
||||
export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home
|
||||
fi
|
||||
if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ]; then
|
||||
#
|
||||
# Oracle JDKs
|
||||
#
|
||||
export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home
|
||||
fi
|
||||
|
||||
if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then
|
||||
#
|
||||
# Apple JDKs
|
||||
#
|
||||
export JAVA_HOME=`/usr/libexec/java_home`
|
||||
fi
|
||||
;;
|
||||
if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then
|
||||
#
|
||||
# Apple JDKs
|
||||
#
|
||||
export JAVA_HOME=$(/usr/libexec/java_home)
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -z "$JAVA_HOME" ] ; then
|
||||
if [ -r /etc/gentoo-release ] ; then
|
||||
JAVA_HOME=`java-config --jre-home`
|
||||
if [ -z "$JAVA_HOME" ]; then
|
||||
if [ -r /etc/gentoo-release ]; then
|
||||
JAVA_HOME=$(java-config --jre-home)
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$M2_HOME" ] ; then
|
||||
if [ -z "$M2_HOME" ]; then
|
||||
## resolve links - $0 may be a link to maven's home
|
||||
PRG="$0"
|
||||
|
||||
# need this for relative symlinks
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
while [ -h "$PRG" ]; do
|
||||
ls=$(ls -ld "$PRG")
|
||||
link=$(expr "$ls" : '.*-> \(.*\)$')
|
||||
if expr "$link" : '/.*' >/dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG="`dirname "$PRG"`/$link"
|
||||
PRG="$(dirname "$PRG")/$link"
|
||||
fi
|
||||
done
|
||||
|
||||
saveddir=`pwd`
|
||||
saveddir=$(pwd)
|
||||
|
||||
M2_HOME=`dirname "$PRG"`/..
|
||||
M2_HOME=$(dirname "$PRG")/..
|
||||
|
||||
# make it fully qualified
|
||||
M2_HOME=`cd "$M2_HOME" && pwd`
|
||||
M2_HOME=$(cd "$M2_HOME" && pwd)
|
||||
|
||||
cd "$saveddir"
|
||||
# echo Using m2 at $M2_HOME
|
||||
fi
|
||||
|
||||
# For Cygwin, ensure paths are in UNIX format before anything is touched
|
||||
if $cygwin ; then
|
||||
if $cygwin; then
|
||||
[ -n "$M2_HOME" ] &&
|
||||
M2_HOME=`cygpath --unix "$M2_HOME"`
|
||||
M2_HOME=$(cygpath --unix "$M2_HOME")
|
||||
[ -n "$JAVA_HOME" ] &&
|
||||
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
|
||||
JAVA_HOME=$(cygpath --unix "$JAVA_HOME")
|
||||
[ -n "$CLASSPATH" ] &&
|
||||
CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
|
||||
CLASSPATH=$(cygpath --path --unix "$CLASSPATH")
|
||||
fi
|
||||
|
||||
# For Migwn, ensure paths are in UNIX format before anything is touched
|
||||
if $mingw ; then
|
||||
if $mingw; then
|
||||
[ -n "$M2_HOME" ] &&
|
||||
M2_HOME="`(cd "$M2_HOME"; pwd)`"
|
||||
M2_HOME="$( (
|
||||
cd "$M2_HOME"
|
||||
pwd
|
||||
))"
|
||||
[ -n "$JAVA_HOME" ] &&
|
||||
JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
|
||||
JAVA_HOME="$( (
|
||||
cd "$JAVA_HOME"
|
||||
pwd
|
||||
))"
|
||||
# TODO classpath?
|
||||
fi
|
||||
|
||||
if [ -z "$JAVA_HOME" ]; then
|
||||
javaExecutable="`which javac`"
|
||||
if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
|
||||
javaExecutable="$(which javac)"
|
||||
if [ -n "$javaExecutable" ] && ! [ "$(expr \"$javaExecutable\" : '\([^ ]*\)')" = "no" ]; then
|
||||
# readlink(1) is not available as standard on Solaris 10.
|
||||
readLink=`which readlink`
|
||||
if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
|
||||
if $darwin ; then
|
||||
javaHome="`dirname \"$javaExecutable\"`"
|
||||
javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
|
||||
readLink=$(which readlink)
|
||||
if [ ! $(expr "$readLink" : '\([^ ]*\)') = "no" ]; then
|
||||
if $darwin; then
|
||||
javaHome="$(dirname \"$javaExecutable\")"
|
||||
javaExecutable="$(cd \"$javaHome\" && pwd -P)/javac"
|
||||
else
|
||||
javaExecutable="`readlink -f \"$javaExecutable\"`"
|
||||
javaExecutable="$(readlink -f \"$javaExecutable\")"
|
||||
fi
|
||||
javaHome="`dirname \"$javaExecutable\"`"
|
||||
javaHome=`expr "$javaHome" : '\(.*\)/bin'`
|
||||
javaHome="$(dirname \"$javaExecutable\")"
|
||||
javaHome=$(expr "$javaHome" : '\(.*\)/bin')
|
||||
JAVA_HOME="$javaHome"
|
||||
export JAVA_HOME
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$JAVACMD" ] ; then
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
if [ -z "$JAVACMD" ]; then
|
||||
if [ -n "$JAVA_HOME" ]; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ]; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
fi
|
||||
else
|
||||
JAVACMD="`which java`"
|
||||
JAVACMD="$(which java)"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
if [ ! -x "$JAVACMD" ]; then
|
||||
echo "Error: JAVA_HOME is not defined correctly." >&2
|
||||
echo " We cannot execute $JAVACMD" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$JAVA_HOME" ] ; then
|
||||
if [ -z "$JAVA_HOME" ]; then
|
||||
echo "Warning: JAVA_HOME environment variable is not set."
|
||||
fi
|
||||
|
||||
@@ -187,11 +194,11 @@ CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin; then
|
||||
[ -n "$M2_HOME" ] &&
|
||||
M2_HOME=`cygpath --path --windows "$M2_HOME"`
|
||||
M2_HOME=$(cygpath --path --windows "$M2_HOME")
|
||||
[ -n "$JAVA_HOME" ] &&
|
||||
JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
|
||||
JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME")
|
||||
[ -n "$CLASSPATH" ] &&
|
||||
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
|
||||
CLASSPATH=$(cygpath --path --windows "$CLASSPATH")
|
||||
fi
|
||||
|
||||
# traverses directory structure from process work directory to filesystem root
|
||||
@@ -199,12 +206,15 @@ fi
|
||||
find_maven_basedir() {
|
||||
local basedir=$(pwd)
|
||||
local wdir=$(pwd)
|
||||
while [ "$wdir" != '/' ] ; do
|
||||
if [ -d "$wdir"/.mvn ] ; then
|
||||
while [ "$wdir" != '/' ]; do
|
||||
if [ -d "$wdir"/.mvn ]; then
|
||||
basedir=$wdir
|
||||
break
|
||||
fi
|
||||
wdir=$(cd "$wdir/.."; pwd)
|
||||
wdir=$(
|
||||
cd "$wdir/.."
|
||||
pwd
|
||||
)
|
||||
done
|
||||
echo "${basedir}"
|
||||
}
|
||||
@@ -212,7 +222,7 @@ find_maven_basedir() {
|
||||
# concatenates all lines of a file
|
||||
concat_lines() {
|
||||
if [ -f "$1" ]; then
|
||||
echo "$(tr -s '\n' ' ' < "$1")"
|
||||
echo "$(tr -s '\n' ' ' <"$1")"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -227,15 +237,15 @@ export MAVEN_CMD_LINE_ARGS
|
||||
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
|
||||
|
||||
echo "Running version check"
|
||||
VERSION=$( sed '\!<parent!,\!</parent!d' `dirname $0`/pom.xml | grep '<version' | head -1 | sed -e 's/.*<version>//' -e 's!</version>.*$!!' )
|
||||
VERSION=$(sed '\!<parent!,\!</parent!d' $(dirname $0)/pom.xml | grep '<version' | head -1 | sed -e 's/.*<version>//' -e 's!</version>.*$!!')
|
||||
echo "The found version is [${VERSION}]"
|
||||
|
||||
if echo $VERSION | egrep -q 'M|RC'; then
|
||||
echo Activating \"milestone\" profile for version=\"$VERSION\"
|
||||
echo $MAVEN_ARGS | grep -q milestone || MAVEN_ARGS="$MAVEN_ARGS -Pmilestone"
|
||||
echo Activating \"milestone\" profile for version=\"$VERSION\"
|
||||
echo $MAVEN_ARGS | grep -q milestone || MAVEN_ARGS="$MAVEN_ARGS -Pmilestone"
|
||||
else
|
||||
echo Deactivating \"milestone\" profile for version=\"$VERSION\"
|
||||
echo $MAVEN_ARGS | grep -q milestone && MAVEN_ARGS=$(echo $MAVEN_ARGS | sed -e 's/-Pmilestone//')
|
||||
echo Deactivating \"milestone\" profile for version=\"$VERSION\"
|
||||
echo $MAVEN_ARGS | grep -q milestone && MAVEN_ARGS=$(echo $MAVEN_ARGS | sed -e 's/-Pmilestone//')
|
||||
fi
|
||||
|
||||
exec "$JAVACMD" \
|
||||
|
||||
@@ -36,6 +36,7 @@ public class ZuulApplicationTests {
|
||||
|
||||
@Value("${local.server.port}")
|
||||
int port;
|
||||
|
||||
private TestRestTemplate restTemplate = new TestRestTemplate();
|
||||
|
||||
@Test
|
||||
|
||||
@@ -6,7 +6,7 @@ REPO_URL="${REPO_URL:-https://github.com/spring-cloud-samples/tests.git}"
|
||||
REPO_BRANCH="${REPO_BRANCH:-master}"
|
||||
if [[ -d zuul-config-discovery ]]; then
|
||||
REPO_LOCAL="${REPO_LOCAL:-.}"
|
||||
else
|
||||
else
|
||||
REPO_LOCAL="${REPO_LOCAL:-tests}"
|
||||
fi
|
||||
WAIT_TIME="${WAIT_TIME:-5}"
|
||||
@@ -15,31 +15,31 @@ DEFAULT_VERSION="${DEFAULT_VERSION:-1.0.0.BUILD-SNAPSHOT}"
|
||||
|
||||
# Parse the script arguments
|
||||
while getopts ":r" opt; do
|
||||
case $opt in
|
||||
r)
|
||||
RESET=0
|
||||
;;
|
||||
\?)
|
||||
echo "Invalid option: -$OPTARG" >&2
|
||||
exit 1
|
||||
;;
|
||||
:)
|
||||
echo "Option -$OPTARG requires an argument." >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
case $opt in
|
||||
r)
|
||||
RESET=0
|
||||
;;
|
||||
\?)
|
||||
echo "Invalid option: -$OPTARG" >&2
|
||||
exit 1
|
||||
;;
|
||||
:)
|
||||
echo "Option -$OPTARG requires an argument." >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Clone or update the repository
|
||||
if [[ ! -e "${REPO_LOCAL}/.git" ]]; then
|
||||
git clone "${REPO_URL}" "${REPO_LOCAL}"
|
||||
cd "${REPO_LOCAL}"
|
||||
git clone "${REPO_URL}" "${REPO_LOCAL}"
|
||||
cd "${REPO_LOCAL}"
|
||||
else
|
||||
cd "${REPO_LOCAL}"
|
||||
if [[ $RESET ]]; then
|
||||
git reset --hard
|
||||
git pull "${REPO_URL}" "${REPO_BRANCH}"
|
||||
fi
|
||||
cd "${REPO_LOCAL}"
|
||||
if [[ $RESET ]]; then
|
||||
git reset --hard
|
||||
git pull "${REPO_URL}" "${REPO_BRANCH}"
|
||||
fi
|
||||
fi
|
||||
|
||||
./mvnw --fail-at-end clean package
|
||||
|
||||
@@ -1 +1 @@
|
||||
touch generate.log
|
||||
touch generate.log
|
||||
|
||||
@@ -1,63 +1,55 @@
|
||||
// Do not edit this file (e.g. go instead to src/main/asciidoc)
|
||||
|
||||
Spring Cloud Release Train is a curated set of dependencies across a
|
||||
range of Spring Cloud projects. You consume it by using the
|
||||
spring-cloud-dependencies POM to manage dependencies in Maven or
|
||||
Gradle. The release trains have names, not versions, to avoid
|
||||
confusion with the sub-projects. The names are an alphabetic sequence
|
||||
(so you can sort them chronologically) with names of London Tube
|
||||
stations ("Angel" is the first release, "Brixton" is the second).
|
||||
Spring Cloud Release Train is a curated set of dependencies across a range of Spring Cloud projects.
|
||||
You consume it by using the spring-cloud-dependencies POM to manage dependencies in Maven or Gradle.
|
||||
The release trains have names, not versions, to avoid confusion with the sub-projects.
|
||||
The names are an alphabetic sequence (so you can sort them chronologically) with names of London Tube stations ("Angel" is the first release, "Brixton" is the second).
|
||||
|
||||
== Contributing
|
||||
|
||||
Spring Cloud is released under the non-restrictive Apache 2.0 license,
|
||||
and follows a very standard Github development process, using Github
|
||||
tracker for issues and merging pull requests into master. If you want
|
||||
to contribute even something trivial please do not hesitate, but
|
||||
follow the guidelines below.
|
||||
Spring Cloud is released under the non-restrictive Apache 2.0 license, and follows a very standard Github development process, using Github tracker for issues and merging pull requests into master.
|
||||
If you want to contribute even something trivial please do not hesitate, but follow the guidelines below.
|
||||
|
||||
=== Sign the Contributor License Agreement
|
||||
|
||||
Before we accept a non-trivial patch or pull request we will need you to sign the
|
||||
https://cla.pivotal.io/sign/spring[Contributor License Agreement].
|
||||
Signing the contributor's agreement does not grant anyone commit rights to the main
|
||||
repository, but it does mean that we can accept your contributions, and you will get an
|
||||
author credit if we do. Active contributors might be asked to join the core team, and
|
||||
given the ability to merge pull requests.
|
||||
Signing the contributor's agreement does not grant anyone commit rights to the main repository, but it does mean that we can accept your contributions, and you will get an author credit if we do.
|
||||
Active contributors might be asked to join the core team, and given the ability to merge pull requests.
|
||||
|
||||
=== Code of Conduct
|
||||
|
||||
This project adheres to the Contributor Covenant https://github.com/spring-cloud/spring-cloud-build/blob/master/docs/src/main/asciidoc/code-of-conduct.adoc[code of
|
||||
conduct]. By participating, you are expected to uphold this code. Please report
|
||||
unacceptable behavior to spring-code-of-conduct@pivotal.io.
|
||||
conduct].
|
||||
By participating, you are expected to uphold this code.
|
||||
Please report unacceptable behavior to spring-code-of-conduct@pivotal.io.
|
||||
|
||||
=== Code Conventions and Housekeeping
|
||||
None of these is essential for a pull request, but they will all help. They can also be
|
||||
added after the original pull request but before a merge.
|
||||
|
||||
* Use the Spring Framework code format conventions. If you use Eclipse
|
||||
you can import formatter settings using the
|
||||
None of these is essential for a pull request, but they will all help.
|
||||
They can also be added after the original pull request but before a merge.
|
||||
|
||||
* Use the Spring Framework code format conventions.
|
||||
If you use Eclipse you can import formatter settings using the
|
||||
`eclipse-code-formatter.xml` file from the
|
||||
https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-dependencies-parent/eclipse-code-formatter.xml[Spring
|
||||
Cloud Build] project. If using IntelliJ, you can use the
|
||||
Cloud Build] project.
|
||||
If using IntelliJ, you can use the
|
||||
https://plugins.jetbrains.com/plugin/6546[Eclipse Code Formatter
|
||||
Plugin] to import the same file.
|
||||
* Make sure all new `.java` files to have a simple Javadoc class comment with at least an
|
||||
`@author` tag identifying you, and preferably at least a paragraph on what the class is
|
||||
for.
|
||||
* Add the ASF license header comment to all new `.java` files (copy from existing files
|
||||
in the project)
|
||||
* Add yourself as an `@author` to the .java files that you modify substantially (more
|
||||
than cosmetic changes).
|
||||
`@author` tag identifying you, and preferably at least a paragraph on what the class is for.
|
||||
* Add the ASF license header comment to all new `.java` files (copy from existing files in the project)
|
||||
* Add yourself as an `@author` to the .java files that you modify substantially (more than cosmetic changes).
|
||||
* Add some Javadocs and, if you change the namespace, some XSD doc elements.
|
||||
* A few unit tests would help a lot as well -- someone has to do it.
|
||||
* If no-one else is using your branch, please rebase it against the current master (or
|
||||
other target branch in the main project).
|
||||
* When writing a commit message please follow https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html[these conventions],
|
||||
if you are fixing an existing issue please add `Fixes gh-XXXX` at the end of the commit
|
||||
message (where XXXX is the issue number).
|
||||
* If no-one else is using your branch, please rebase it against the current master (or other target branch in the main project).
|
||||
* When writing a commit message please follow https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html[these conventions], if you are fixing an existing issue please add `Fixes gh-XXXX` at the end of the commit message (where XXXX is the issue number).
|
||||
|
||||
== Building and Deploying
|
||||
|
||||
Since there is no code to compile in the starters they should do not need to compile, but a compiler has to be available because they are built and deployed as JAR artifacts. To install locally:
|
||||
Since there is no code to compile in the starters they should do not need to compile, but a compiler has to be available because they are built and deployed as JAR artifacts.
|
||||
To install locally:
|
||||
|
||||
----
|
||||
|
||||
|
||||
@@ -6,7 +6,8 @@ include::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/maste
|
||||
|
||||
== Building and Deploying
|
||||
|
||||
Since there is no code to compile in the starters they should do not need to compile, but a compiler has to be available because they are built and deployed as JAR artifacts. To install locally:
|
||||
Since there is no code to compile in the starters they should do not need to compile, but a compiler has to be available because they are built and deployed as JAR artifacts.
|
||||
To install locally:
|
||||
|
||||
----
|
||||
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
Spring Cloud Release Train is a curated set of dependencies across a
|
||||
range of Spring Cloud projects. You consume it by using the
|
||||
spring-cloud-dependencies POM to manage dependencies in Maven or
|
||||
Gradle. The release trains have names, not versions, to avoid
|
||||
confusion with the sub-projects. The names are an alphabetic sequence
|
||||
(so you can sort them chronologically) with names of London Tube
|
||||
stations ("Angel" is the first release, "Brixton" is the second).
|
||||
Spring Cloud Release Train is a curated set of dependencies across a range of Spring Cloud projects.
|
||||
You consume it by using the spring-cloud-dependencies POM to manage dependencies in Maven or Gradle.
|
||||
The release trains have names, not versions, to avoid confusion with the sub-projects.
|
||||
The names are an alphabetic sequence (so you can sort them chronologically) with names of London Tube stations ("Angel" is the first release, "Brixton" is the second).
|
||||
@@ -11,7 +11,8 @@ include::intro.adoc[]
|
||||
|
||||
== Using Spring Cloud Dependencies with Spring IO Platform
|
||||
|
||||
The Spring IO Platform is a modular, enterprise-grade curated set of dependencies. To use the Spring Cloud Starters with Spring IO Platform, you must import the Spring Cloud Dependencies bill of materials (BOM) first.
|
||||
The Spring IO Platform is a modular, enterprise-grade curated set of dependencies.
|
||||
To use the Spring Cloud Starters with Spring IO Platform, you must import the Spring Cloud Dependencies bill of materials (BOM) first.
|
||||
|
||||
To use version {springioplatformversion} of the Spring IO Platform and Spring Cloud Release Train {springcloudversion} with Maven, update the pom.xml as follows:
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE HTML>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="refresh" content="1; url=https://cloud.spring.io/spring-cloud-static/Dalston.SR3/">
|
||||
<meta content="1; url=https://cloud.spring.io/spring-cloud-static/Dalston.SR3/" http-equiv="refresh">
|
||||
|
||||
<script>
|
||||
window.location.href = "https://cloud.spring.io/spring-cloud-static/Dalston.SR3/"
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
# This example catches duplicate Signed-off-by lines.
|
||||
|
||||
test "" = "$(grep '^Signed-off-by: ' "$1" |
|
||||
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
||||
echo >&2 Duplicate Signed-off-by lines.
|
||||
exit 1
|
||||
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
||||
echo >&2 Duplicate Signed-off-by lines.
|
||||
exit 1
|
||||
}
|
||||
|
||||
@@ -7,12 +7,11 @@
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-commit".
|
||||
|
||||
if git rev-parse --verify HEAD >/dev/null 2>&1
|
||||
then
|
||||
against=HEAD
|
||||
if git rev-parse --verify HEAD >/dev/null 2>&1; then
|
||||
against=HEAD
|
||||
else
|
||||
# Initial commit: diff against an empty tree object
|
||||
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
|
||||
# Initial commit: diff against an empty tree object
|
||||
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
|
||||
fi
|
||||
|
||||
# If you want to allow non-ASCII filenames set this variable to true.
|
||||
@@ -25,13 +24,12 @@ exec 1>&2
|
||||
# them from being added to the repository. We exploit the fact that the
|
||||
# printable range starts at the space character and ends with tilde.
|
||||
if [ "$allownonascii" != "true" ] &&
|
||||
# Note that the use of brackets around a tr range is ok here, (it's
|
||||
# even required, for portability to Solaris 10's /usr/bin/tr), since
|
||||
# the square bracket bytes happen to fall in the designated range.
|
||||
test $(git diff --cached --name-only --diff-filter=A -z $against |
|
||||
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
|
||||
then
|
||||
cat <<\EOF
|
||||
# Note that the use of brackets around a tr range is ok here, (it's
|
||||
# even required, for portability to Solaris 10's /usr/bin/tr), since
|
||||
# the square bracket bytes happen to fall in the designated range.
|
||||
test $(git diff --cached --name-only --diff-filter=A -z $against |
|
||||
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0; then
|
||||
cat <<\EOF
|
||||
Error: Attempt to add a non-ASCII file name.
|
||||
|
||||
This can cause problems if you want to work with people on other platforms.
|
||||
@@ -42,7 +40,7 @@ If you know what you are doing you can disable this check using:
|
||||
|
||||
git config hooks.allownonascii true
|
||||
EOF
|
||||
exit 1
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# If there are whitespace errors, print the offending file names and fail.
|
||||
|
||||
@@ -24,30 +24,26 @@ url="$2"
|
||||
|
||||
z40=0000000000000000000000000000000000000000
|
||||
|
||||
while read local_ref local_sha remote_ref remote_sha
|
||||
do
|
||||
if [ "$local_sha" = $z40 ]
|
||||
then
|
||||
# Handle delete
|
||||
:
|
||||
else
|
||||
if [ "$remote_sha" = $z40 ]
|
||||
then
|
||||
# New branch, examine all commits
|
||||
range="$local_sha"
|
||||
else
|
||||
# Update to existing branch, examine new commits
|
||||
range="$remote_sha..$local_sha"
|
||||
fi
|
||||
while read local_ref local_sha remote_ref remote_sha; do
|
||||
if [ "$local_sha" = $z40 ]; then
|
||||
# Handle delete
|
||||
:
|
||||
else
|
||||
if [ "$remote_sha" = $z40 ]; then
|
||||
# New branch, examine all commits
|
||||
range="$local_sha"
|
||||
else
|
||||
# Update to existing branch, examine new commits
|
||||
range="$remote_sha..$local_sha"
|
||||
fi
|
||||
|
||||
# Check for WIP commit
|
||||
commit=`git rev-list -n 1 --grep '^WIP' "$range"`
|
||||
if [ -n "$commit" ]
|
||||
then
|
||||
echo >&2 "Found WIP commit in $local_ref, not pushing"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
# Check for WIP commit
|
||||
commit=$(git rev-list -n 1 --grep '^WIP' "$range")
|
||||
if [ -n "$commit" ]; then
|
||||
echo >&2 "Found WIP commit in $local_ref, not pushing"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
exit 0
|
||||
|
||||
@@ -17,20 +17,19 @@
|
||||
|
||||
publish=next
|
||||
basebranch="$1"
|
||||
if test "$#" = 2
|
||||
then
|
||||
topic="refs/heads/$2"
|
||||
if test "$#" = 2; then
|
||||
topic="refs/heads/$2"
|
||||
else
|
||||
topic=`git symbolic-ref HEAD` ||
|
||||
exit 0 ;# we do not interrupt rebasing detached HEAD
|
||||
topic=$(git symbolic-ref HEAD) ||
|
||||
exit 0 # we do not interrupt rebasing detached HEAD
|
||||
fi
|
||||
|
||||
case "$topic" in
|
||||
refs/heads/??/*)
|
||||
;;
|
||||
refs/heads/??/*) ;;
|
||||
|
||||
*)
|
||||
exit 0 ;# we do not interrupt others.
|
||||
;;
|
||||
exit 0 # we do not interrupt others.
|
||||
;;
|
||||
esac
|
||||
|
||||
# Now we are dealing with a topic branch being rebased
|
||||
@@ -38,34 +37,31 @@ esac
|
||||
|
||||
# Does the topic really exist?
|
||||
git show-ref -q "$topic" || {
|
||||
echo >&2 "No such branch $topic"
|
||||
exit 1
|
||||
echo >&2 "No such branch $topic"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Is topic fully merged to master?
|
||||
not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
|
||||
if test -z "$not_in_master"
|
||||
then
|
||||
echo >&2 "$topic is fully merged to master; better remove it."
|
||||
exit 1 ;# we could allow it, but there is no point.
|
||||
not_in_master=$(git rev-list --pretty=oneline ^master "$topic")
|
||||
if test -z "$not_in_master"; then
|
||||
echo >&2 "$topic is fully merged to master; better remove it."
|
||||
exit 1 # we could allow it, but there is no point.
|
||||
fi
|
||||
|
||||
# Is topic ever merged to next? If so you should not be rebasing it.
|
||||
only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
|
||||
only_next_2=`git rev-list ^master ${publish} | sort`
|
||||
if test "$only_next_1" = "$only_next_2"
|
||||
then
|
||||
not_in_topic=`git rev-list "^$topic" master`
|
||||
if test -z "$not_in_topic"
|
||||
then
|
||||
echo >&2 "$topic is already up to date with master"
|
||||
exit 1 ;# we could allow it, but there is no point.
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
only_next_1=$(git rev-list ^master "^$topic" ${publish} | sort)
|
||||
only_next_2=$(git rev-list ^master ${publish} | sort)
|
||||
if test "$only_next_1" = "$only_next_2"; then
|
||||
not_in_topic=$(git rev-list "^$topic" master)
|
||||
if test -z "$not_in_topic"; then
|
||||
echo >&2 "$topic is already up to date with master"
|
||||
exit 1 # we could allow it, but there is no point.
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
|
||||
/usr/bin/perl -e '
|
||||
not_in_next=$(git rev-list --pretty=oneline ^${publish} "$topic")
|
||||
/usr/bin/perl -e '
|
||||
my $topic = $ARGV[0];
|
||||
my $msg = "* $topic has commits already merged to public branch:\n";
|
||||
my (%not_in_next) = map {
|
||||
@@ -85,7 +81,7 @@ else
|
||||
}
|
||||
}
|
||||
' "$topic" "$not_in_next" "$not_in_master"
|
||||
exit 1
|
||||
exit 1
|
||||
fi
|
||||
|
||||
<<\DOC_END
|
||||
|
||||
@@ -6,19 +6,18 @@
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-receive".
|
||||
|
||||
if test -n "$GIT_PUSH_OPTION_COUNT"
|
||||
then
|
||||
i=0
|
||||
while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"
|
||||
do
|
||||
eval "value=\$GIT_PUSH_OPTION_$i"
|
||||
case "$value" in
|
||||
echoback=*)
|
||||
echo "echo from the pre-receive-hook: ${value#*=}" >&2
|
||||
;;
|
||||
reject)
|
||||
exit 1
|
||||
esac
|
||||
i=$((i + 1))
|
||||
done
|
||||
if test -n "$GIT_PUSH_OPTION_COUNT"; then
|
||||
i=0
|
||||
while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"; do
|
||||
eval "value=\$GIT_PUSH_OPTION_$i"
|
||||
case "$value" in
|
||||
echoback=*)
|
||||
echo "echo from the pre-receive-hook: ${value#*=}" >&2
|
||||
;;
|
||||
reject)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
i=$((i + 1))
|
||||
done
|
||||
fi
|
||||
|
||||
@@ -31,15 +31,15 @@ newrev="$3"
|
||||
|
||||
# --- Safety check
|
||||
if [ -z "$GIT_DIR" ]; then
|
||||
echo "Don't run this script from the command line." >&2
|
||||
echo " (if you want, you could supply GIT_DIR then run" >&2
|
||||
echo " $0 <ref> <oldrev> <newrev>)" >&2
|
||||
exit 1
|
||||
echo "Don't run this script from the command line." >&2
|
||||
echo " (if you want, you could supply GIT_DIR then run" >&2
|
||||
echo " $0 <ref> <oldrev> <newrev>)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
|
||||
echo "usage: $0 <ref> <oldrev> <newrev>" >&2
|
||||
exit 1
|
||||
echo "usage: $0 <ref> <oldrev> <newrev>" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# --- Config
|
||||
@@ -53,75 +53,74 @@ allowmodifytag=$(git config --bool hooks.allowmodifytag)
|
||||
projectdesc=$(sed -e '1q' "$GIT_DIR/description")
|
||||
case "$projectdesc" in
|
||||
"Unnamed repository"* | "")
|
||||
echo "*** Project description file hasn't been set" >&2
|
||||
exit 1
|
||||
;;
|
||||
echo "*** Project description file hasn't been set" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- Check types
|
||||
# if $newrev is 0000...0000, it's a commit to delete a ref.
|
||||
zero="0000000000000000000000000000000000000000"
|
||||
if [ "$newrev" = "$zero" ]; then
|
||||
newrev_type=delete
|
||||
newrev_type=delete
|
||||
else
|
||||
newrev_type=$(git cat-file -t $newrev)
|
||||
newrev_type=$(git cat-file -t $newrev)
|
||||
fi
|
||||
|
||||
case "$refname","$newrev_type" in
|
||||
refs/tags/*,commit)
|
||||
# un-annotated tag
|
||||
short_refname=${refname##refs/tags/}
|
||||
if [ "$allowunannotated" != "true" ]; then
|
||||
echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
|
||||
echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,delete)
|
||||
# delete tag
|
||||
if [ "$allowdeletetag" != "true" ]; then
|
||||
echo "*** Deleting a tag is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,tag)
|
||||
# annotated tag
|
||||
if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
|
||||
then
|
||||
echo "*** Tag '$refname' already exists." >&2
|
||||
echo "*** Modifying a tag is not allowed in this repository." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,commit)
|
||||
# branch
|
||||
if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
|
||||
echo "*** Creating a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,delete)
|
||||
# delete branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/remotes/*,commit)
|
||||
# tracking branch
|
||||
;;
|
||||
refs/remotes/*,delete)
|
||||
# delete tracking branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a tracking branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
# Anything else (is there anything else?)
|
||||
echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
|
||||
exit 1
|
||||
;;
|
||||
refs/tags/*,commit)
|
||||
# un-annotated tag
|
||||
short_refname=${refname##refs/tags/}
|
||||
if [ "$allowunannotated" != "true" ]; then
|
||||
echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
|
||||
echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,delete)
|
||||
# delete tag
|
||||
if [ "$allowdeletetag" != "true" ]; then
|
||||
echo "*** Deleting a tag is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,tag)
|
||||
# annotated tag
|
||||
if [ "$allowmodifytag" != "true" ] && git rev-parse $refname >/dev/null 2>&1; then
|
||||
echo "*** Tag '$refname' already exists." >&2
|
||||
echo "*** Modifying a tag is not allowed in this repository." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,commit)
|
||||
# branch
|
||||
if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
|
||||
echo "*** Creating a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,delete)
|
||||
# delete branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/remotes/*,commit)
|
||||
# tracking branch
|
||||
;;
|
||||
refs/remotes/*,delete)
|
||||
# delete tracking branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a tracking branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
# Anything else (is there anything else?)
|
||||
echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- Finished
|
||||
|
||||
@@ -1,13 +1,6 @@
|
||||
Spring Cloud provides tools for developers to quickly build some of
|
||||
the common patterns in distributed systems (e.g. configuration
|
||||
management, service discovery, circuit breakers, intelligent routing,
|
||||
micro-proxy, control bus, one-time tokens, global locks, leadership
|
||||
election, distributed sessions, cluster state). Coordination of
|
||||
distributed systems leads to boiler plate patterns, and using Spring
|
||||
Cloud developers can quickly stand up services and applications that
|
||||
implement those patterns. They will work well in any distributed
|
||||
environment, including the developer's own laptop, bare metal data
|
||||
centres, and managed platforms such as Cloud Foundry.
|
||||
Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state).
|
||||
Coordination of distributed systems leads to boiler plate patterns, and using Spring Cloud developers can quickly stand up services and applications that implement those patterns.
|
||||
They will work well in any distributed environment, including the developer's own laptop, bare metal data centres, and managed platforms such as Cloud Foundry.
|
||||
|
||||
See https://projects.spring.io/spring-cloud[projects.spring.io/spring-cloud] for details.
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
Spring Cloud Angel focuses on providing good out of box experience for typical use cases and extensibility mechanism to cover others. Many of the features are implemented by Netflix OSS, with wrappers for Spring Boot apps being the main focus of Spring Cloud.
|
||||
Spring Cloud Angel focuses on providing good out of box experience for typical use cases and extensibility mechanism to cover others.
|
||||
Many of the features are implemented by Netflix OSS, with wrappers for Spring Boot apps being the main focus of Spring Cloud.
|
||||
|
||||
- Distributed/versioned configuration (git, svn, spring-cloud-config)
|
||||
- Service registration and discovery (eureka, spring-cloud-netflix)
|
||||
@@ -11,28 +12,39 @@ Spring Cloud Angel focuses on providing good out of box experience for typical u
|
||||
== Main Projects
|
||||
|
||||
=== Spring Cloud Config
|
||||
Centralized external configuration management backed by a git repository. The configuration resources map directly to Spring `Environment` but could be used by non-Spring applications if desired.
|
||||
|
||||
Centralized external configuration management backed by a git repository.
|
||||
The configuration resources map directly to Spring `Environment` but could be used by non-Spring applications if desired.
|
||||
|
||||
=== Spring Cloud Netflix
|
||||
|
||||
Integration with various Netflix OSS components (Eureka, Hystrix, Zuul, Archaius, etc.).
|
||||
|
||||
=== Spring Cloud Bus
|
||||
An event bus for linking services and service instances together with distributed messaging. Useful for propagating state changes across a cluster (e.g. config change events).
|
||||
|
||||
An event bus for linking services and service instances together with distributed messaging.
|
||||
Useful for propagating state changes across a cluster (e.g. config change events).
|
||||
|
||||
=== Spring Cloud Security
|
||||
|
||||
Provides support for load-balanced OAuth2 rest client and authentication header relays in a Zuul proxy.
|
||||
|
||||
=== Spring Cloud AWS
|
||||
Easy integration with hosted Amazon Web Services. It offers a convenient way to interact with AWS provided services using well-known Spring idioms and APIs, such as the messaging or caching API. Developers can build their application around the hosted services without having to care about infrastructure or maintenance.
|
||||
|
||||
Easy integration with hosted Amazon Web Services.
|
||||
It offers a convenient way to interact with AWS provided services using well-known Spring idioms and APIs, such as the messaging or caching API. Developers can build their application around the hosted services without having to care about infrastructure or maintenance.
|
||||
|
||||
=== Spring Cloud Connectors
|
||||
Makes it easy for PaaS applications in a variety of platforms to connect to backend services like
|
||||
databases and message brokers (the project formerly known as "Spring Cloud").
|
||||
|
||||
Makes it easy for PaaS applications in a variety of platforms to connect to backend services like databases and message brokers (the project formerly known as "Spring Cloud").
|
||||
|
||||
=== Spring Cloud Starters
|
||||
Spring Boot-style starter projects to ease dependency management for consumers of Spring Cloud. (Discontinued as a project and merged with the other projects after Angel.SR2.)
|
||||
|
||||
Spring Boot-style starter projects to ease dependency management for consumers of Spring Cloud.
|
||||
(Discontinued as a project and merged with the other projects after Angel.SR2.)
|
||||
|
||||
=== Spring Cloud CLI
|
||||
|
||||
Spring Boot CLI plugin for creating Spring Cloud component applications quickly in Groovy
|
||||
|
||||
Spring Cloud Angel builds on Spring Boot 1.2.x, and parts of it (notably the OAuth2 support that moved to Spring Boot) does not work with Spring Boot 1.3.x.
|
||||
@@ -1,28 +1,40 @@
|
||||
|
||||
Spring Cloud Brixton builds on Spring Boot 1.3.x. It adds the following new projects:
|
||||
Spring Cloud Brixton builds on Spring Boot 1.3.x.
|
||||
It adds the following new projects:
|
||||
|
||||
=== Spring Cloud Zookeeper
|
||||
|
||||
Service discovery and configuration management with Apache Zookeeper.
|
||||
|
||||
=== Spring Cloud Cloudfoundry
|
||||
Integrates your application with Pivotal Cloudfoundry. Provides a service discovery implementation and also makes it easy to implement SSO and OAuth2 protected resources, and also to create a Cloudfoundry service broker.
|
||||
|
||||
Integrates your application with Pivotal Cloudfoundry.
|
||||
Provides a service discovery implementation and also makes it easy to implement SSO and OAuth2 protected resources, and also to create a Cloudfoundry service broker.
|
||||
|
||||
=== Spring Cloud Cluster
|
||||
Leadership election and common stateful patterns with an abstraction and implementation for Zookeeper, Redis, Hazelcast, Consul. (Now deprecated and superseded by Spring Integration.)
|
||||
|
||||
Leadership election and common stateful patterns with an abstraction and implementation for Zookeeper, Redis, Hazelcast, Consul.
|
||||
(Now deprecated and superseded by Spring Integration.)
|
||||
|
||||
=== Spring Cloud Consul
|
||||
|
||||
Service discovery and configuration management with Hashicorp Consul.
|
||||
|
||||
=== Spring Cloud Sleuth
|
||||
|
||||
Distributed tracing for Spring Cloud applications, compatible with Zipkin, HTrace and log-based (e.g. ELK) tracing.
|
||||
|
||||
=== Spring Cloud Stream
|
||||
Messaging microservices with Redis, Rabbit or Kafka. Simple declarative model to send and receive messages in a Spring Cloud app.
|
||||
|
||||
Messaging microservices with Redis, Rabbit or Kafka.
|
||||
Simple declarative model to send and receive messages in a Spring Cloud app.
|
||||
|
||||
=== Spring Cloud Task
|
||||
Short lived microservices. Simple declarative for adding both functional and non-functional features to Spring Boot apps.
|
||||
|
||||
Short lived microservices.
|
||||
Simple declarative for adding both functional and non-functional features to Spring Boot apps.
|
||||
|
||||
=== Spring Cloud Zookeeper
|
||||
|
||||
Service discovery and configuration management with Apache Zookeeper.
|
||||
|
||||
Spring Cloud Brixton builds with Spring Boot 1.3.x but it should work with 1.4.x as well (we do compatibility tests and hope to be able to fix any issues that crop up).
|
||||
@@ -40,12 +52,17 @@ Some of the highlights of the Brixton release train are:
|
||||
* Cluster Leadership election and locks via Spring Cloud Cluster
|
||||
* Export of Spring Boot metrics to Amazon Cloudwatch, and native support for Amazon RDS
|
||||
|
||||
|
||||
== Notes:
|
||||
|
||||
Starting with Brixton, Zuul will no longer automatically send all headers to downstream services. By default `Cookie`, `Set-Cookie` and `Authorization` *are not* sent to downstream services. To return to the Angel behaviour, set `zuul.sensitiveHeaders=""` in the Zuul configuration. See https://cloud.spring.io/spring-cloud-static/Brixton.SR6/#_cookies_and_sensitive_headers[the documentation] for more information.
|
||||
Starting with Brixton, Zuul will no longer automatically send all headers to downstream services.
|
||||
By default `Cookie`, `Set-Cookie` and `Authorization` *are not* sent to downstream services.
|
||||
To return to the Angel behaviour, set `zuul.sensitiveHeaders=""` in the Zuul configuration.
|
||||
See https://cloud.spring.io/spring-cloud-static/Brixton.SR6/#_cookies_and_sensitive_headers[the documentation] for more information.
|
||||
|
||||
A `@LoadBalanced` `RestTemplate` is no longer created by default. See the https://cloud.spring.io/spring-cloud-static/spring-cloud.html=_spring_resttemplate_as_a_load_balancer_client[updated documentation for details]. You need to create it in your application’s configuration. For example:
|
||||
A `@LoadBalanced` `RestTemplate` is no longer created by default.
|
||||
See the https://cloud.spring.io/spring-cloud-static/spring-cloud.html=_spring_resttemplate_as_a_load_balancer_client[updated documentation for details].
|
||||
You need to create it in your application’s configuration.
|
||||
For example:
|
||||
|
||||
```java
|
||||
@Configuration
|
||||
@@ -63,7 +80,9 @@ Please note the correct BOM to use is `spring-cloud-dependencies` not `spring-cl
|
||||
|
||||
=== Migrating Spring Cloud Hystrix, Turbine and Bus with AMQP
|
||||
|
||||
The Bus, Hystrix and Turbine support that used to be implemented on top of Spring AMQP have all been migrated to use Spring Cloud Stream. The old artifacts still exist, but are deprecated and will be removed at some point. Instead of the `spring-cloud-*-amqp` artifacts you should use whatever raw feature you need, plus a stream binder of your choice, e.g. `spring-cloud-netflix-hystrix-stream` and `spring-cloud-starter-stream-rabbit` instead of `spring-cloud-netflix-hystrix-amqp`.
|
||||
The Bus, Hystrix and Turbine support that used to be implemented on top of Spring AMQP have all been migrated to use Spring Cloud Stream.
|
||||
The old artifacts still exist, but are deprecated and will be removed at some point.
|
||||
Instead of the `spring-cloud-*-amqp` artifacts you should use whatever raw feature you need, plus a stream binder of your choice, e.g. `spring-cloud-netflix-hystrix-stream` and `spring-cloud-starter-stream-rabbit` instead of `spring-cloud-netflix-hystrix-amqp`.
|
||||
|
||||
|===
|
||||
|Angel | Brixton (with AMQP) | Brixton (with Kafka) |
|
||||
@@ -92,4 +111,5 @@ NOTE: There is still a `spring-cloud-netflix-hystrix-amqp` in the Brixton releas
|
||||
- 2016/11/24 - Sleuth version `1.0.11.RELEASE` https://github.com/spring-cloud/spring-cloud-sleuth/milestone/17?closed=1[(issues)]
|
||||
- 2016/11/23 - Config version `1.1.3.RELEASE` https://github.com/spring-cloud/spring-cloud-config/milestone/21?closed=1[(issues)]
|
||||
|
||||
Note: There was an XXE vulnerability in xstream (which is used by Eureka), so please upgrade to Brixton.SR7 to pull in the latest version of that library which fixed the issue (https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3674).
|
||||
Note:
|
||||
There was an XXE vulnerability in xstream (which is used by Eureka), so please upgrade to Brixton.SR7 to pull in the latest version of that library which fixed the issue (https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3674).
|
||||
@@ -18,7 +18,7 @@
|
||||
# This example catches duplicate Signed-off-by lines.
|
||||
|
||||
test "" = "$(grep '^Signed-off-by: ' "$1" |
|
||||
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
||||
echo >&2 Duplicate Signed-off-by lines.
|
||||
exit 1
|
||||
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
||||
echo >&2 Duplicate Signed-off-by lines.
|
||||
exit 1
|
||||
}
|
||||
|
||||
@@ -7,12 +7,11 @@
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-commit".
|
||||
|
||||
if git rev-parse --verify HEAD >/dev/null 2>&1
|
||||
then
|
||||
against=HEAD
|
||||
if git rev-parse --verify HEAD >/dev/null 2>&1; then
|
||||
against=HEAD
|
||||
else
|
||||
# Initial commit: diff against an empty tree object
|
||||
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
|
||||
# Initial commit: diff against an empty tree object
|
||||
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
|
||||
fi
|
||||
|
||||
# If you want to allow non-ASCII filenames set this variable to true.
|
||||
@@ -25,13 +24,12 @@ exec 1>&2
|
||||
# them from being added to the repository. We exploit the fact that the
|
||||
# printable range starts at the space character and ends with tilde.
|
||||
if [ "$allownonascii" != "true" ] &&
|
||||
# Note that the use of brackets around a tr range is ok here, (it's
|
||||
# even required, for portability to Solaris 10's /usr/bin/tr), since
|
||||
# the square bracket bytes happen to fall in the designated range.
|
||||
test $(git diff --cached --name-only --diff-filter=A -z $against |
|
||||
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
|
||||
then
|
||||
cat <<\EOF
|
||||
# Note that the use of brackets around a tr range is ok here, (it's
|
||||
# even required, for portability to Solaris 10's /usr/bin/tr), since
|
||||
# the square bracket bytes happen to fall in the designated range.
|
||||
test $(git diff --cached --name-only --diff-filter=A -z $against |
|
||||
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0; then
|
||||
cat <<\EOF
|
||||
Error: Attempt to add a non-ASCII file name.
|
||||
|
||||
This can cause problems if you want to work with people on other platforms.
|
||||
@@ -42,7 +40,7 @@ If you know what you are doing you can disable this check using:
|
||||
|
||||
git config hooks.allownonascii true
|
||||
EOF
|
||||
exit 1
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# If there are whitespace errors, print the offending file names and fail.
|
||||
|
||||
@@ -24,30 +24,26 @@ url="$2"
|
||||
|
||||
z40=0000000000000000000000000000000000000000
|
||||
|
||||
while read local_ref local_sha remote_ref remote_sha
|
||||
do
|
||||
if [ "$local_sha" = $z40 ]
|
||||
then
|
||||
# Handle delete
|
||||
:
|
||||
else
|
||||
if [ "$remote_sha" = $z40 ]
|
||||
then
|
||||
# New branch, examine all commits
|
||||
range="$local_sha"
|
||||
else
|
||||
# Update to existing branch, examine new commits
|
||||
range="$remote_sha..$local_sha"
|
||||
fi
|
||||
while read local_ref local_sha remote_ref remote_sha; do
|
||||
if [ "$local_sha" = $z40 ]; then
|
||||
# Handle delete
|
||||
:
|
||||
else
|
||||
if [ "$remote_sha" = $z40 ]; then
|
||||
# New branch, examine all commits
|
||||
range="$local_sha"
|
||||
else
|
||||
# Update to existing branch, examine new commits
|
||||
range="$remote_sha..$local_sha"
|
||||
fi
|
||||
|
||||
# Check for WIP commit
|
||||
commit=`git rev-list -n 1 --grep '^WIP' "$range"`
|
||||
if [ -n "$commit" ]
|
||||
then
|
||||
echo >&2 "Found WIP commit in $local_ref, not pushing"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
# Check for WIP commit
|
||||
commit=$(git rev-list -n 1 --grep '^WIP' "$range")
|
||||
if [ -n "$commit" ]; then
|
||||
echo >&2 "Found WIP commit in $local_ref, not pushing"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
exit 0
|
||||
|
||||
@@ -17,20 +17,19 @@
|
||||
|
||||
publish=next
|
||||
basebranch="$1"
|
||||
if test "$#" = 2
|
||||
then
|
||||
topic="refs/heads/$2"
|
||||
if test "$#" = 2; then
|
||||
topic="refs/heads/$2"
|
||||
else
|
||||
topic=`git symbolic-ref HEAD` ||
|
||||
exit 0 ;# we do not interrupt rebasing detached HEAD
|
||||
topic=$(git symbolic-ref HEAD) ||
|
||||
exit 0 # we do not interrupt rebasing detached HEAD
|
||||
fi
|
||||
|
||||
case "$topic" in
|
||||
refs/heads/??/*)
|
||||
;;
|
||||
refs/heads/??/*) ;;
|
||||
|
||||
*)
|
||||
exit 0 ;# we do not interrupt others.
|
||||
;;
|
||||
exit 0 # we do not interrupt others.
|
||||
;;
|
||||
esac
|
||||
|
||||
# Now we are dealing with a topic branch being rebased
|
||||
@@ -38,34 +37,31 @@ esac
|
||||
|
||||
# Does the topic really exist?
|
||||
git show-ref -q "$topic" || {
|
||||
echo >&2 "No such branch $topic"
|
||||
exit 1
|
||||
echo >&2 "No such branch $topic"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Is topic fully merged to master?
|
||||
not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
|
||||
if test -z "$not_in_master"
|
||||
then
|
||||
echo >&2 "$topic is fully merged to master; better remove it."
|
||||
exit 1 ;# we could allow it, but there is no point.
|
||||
not_in_master=$(git rev-list --pretty=oneline ^master "$topic")
|
||||
if test -z "$not_in_master"; then
|
||||
echo >&2 "$topic is fully merged to master; better remove it."
|
||||
exit 1 # we could allow it, but there is no point.
|
||||
fi
|
||||
|
||||
# Is topic ever merged to next? If so you should not be rebasing it.
|
||||
only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
|
||||
only_next_2=`git rev-list ^master ${publish} | sort`
|
||||
if test "$only_next_1" = "$only_next_2"
|
||||
then
|
||||
not_in_topic=`git rev-list "^$topic" master`
|
||||
if test -z "$not_in_topic"
|
||||
then
|
||||
echo >&2 "$topic is already up to date with master"
|
||||
exit 1 ;# we could allow it, but there is no point.
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
only_next_1=$(git rev-list ^master "^$topic" ${publish} | sort)
|
||||
only_next_2=$(git rev-list ^master ${publish} | sort)
|
||||
if test "$only_next_1" = "$only_next_2"; then
|
||||
not_in_topic=$(git rev-list "^$topic" master)
|
||||
if test -z "$not_in_topic"; then
|
||||
echo >&2 "$topic is already up to date with master"
|
||||
exit 1 # we could allow it, but there is no point.
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
|
||||
/usr/bin/perl -e '
|
||||
not_in_next=$(git rev-list --pretty=oneline ^${publish} "$topic")
|
||||
/usr/bin/perl -e '
|
||||
my $topic = $ARGV[0];
|
||||
my $msg = "* $topic has commits already merged to public branch:\n";
|
||||
my (%not_in_next) = map {
|
||||
@@ -85,7 +81,7 @@ else
|
||||
}
|
||||
}
|
||||
' "$topic" "$not_in_next" "$not_in_master"
|
||||
exit 1
|
||||
exit 1
|
||||
fi
|
||||
|
||||
<<\DOC_END
|
||||
|
||||
@@ -6,19 +6,18 @@
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-receive".
|
||||
|
||||
if test -n "$GIT_PUSH_OPTION_COUNT"
|
||||
then
|
||||
i=0
|
||||
while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"
|
||||
do
|
||||
eval "value=\$GIT_PUSH_OPTION_$i"
|
||||
case "$value" in
|
||||
echoback=*)
|
||||
echo "echo from the pre-receive-hook: ${value#*=}" >&2
|
||||
;;
|
||||
reject)
|
||||
exit 1
|
||||
esac
|
||||
i=$((i + 1))
|
||||
done
|
||||
if test -n "$GIT_PUSH_OPTION_COUNT"; then
|
||||
i=0
|
||||
while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"; do
|
||||
eval "value=\$GIT_PUSH_OPTION_$i"
|
||||
case "$value" in
|
||||
echoback=*)
|
||||
echo "echo from the pre-receive-hook: ${value#*=}" >&2
|
||||
;;
|
||||
reject)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
i=$((i + 1))
|
||||
done
|
||||
fi
|
||||
|
||||
@@ -31,15 +31,15 @@ newrev="$3"
|
||||
|
||||
# --- Safety check
|
||||
if [ -z "$GIT_DIR" ]; then
|
||||
echo "Don't run this script from the command line." >&2
|
||||
echo " (if you want, you could supply GIT_DIR then run" >&2
|
||||
echo " $0 <ref> <oldrev> <newrev>)" >&2
|
||||
exit 1
|
||||
echo "Don't run this script from the command line." >&2
|
||||
echo " (if you want, you could supply GIT_DIR then run" >&2
|
||||
echo " $0 <ref> <oldrev> <newrev>)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
|
||||
echo "usage: $0 <ref> <oldrev> <newrev>" >&2
|
||||
exit 1
|
||||
echo "usage: $0 <ref> <oldrev> <newrev>" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# --- Config
|
||||
@@ -53,75 +53,74 @@ allowmodifytag=$(git config --bool hooks.allowmodifytag)
|
||||
projectdesc=$(sed -e '1q' "$GIT_DIR/description")
|
||||
case "$projectdesc" in
|
||||
"Unnamed repository"* | "")
|
||||
echo "*** Project description file hasn't been set" >&2
|
||||
exit 1
|
||||
;;
|
||||
echo "*** Project description file hasn't been set" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- Check types
|
||||
# if $newrev is 0000...0000, it's a commit to delete a ref.
|
||||
zero="0000000000000000000000000000000000000000"
|
||||
if [ "$newrev" = "$zero" ]; then
|
||||
newrev_type=delete
|
||||
newrev_type=delete
|
||||
else
|
||||
newrev_type=$(git cat-file -t $newrev)
|
||||
newrev_type=$(git cat-file -t $newrev)
|
||||
fi
|
||||
|
||||
case "$refname","$newrev_type" in
|
||||
refs/tags/*,commit)
|
||||
# un-annotated tag
|
||||
short_refname=${refname##refs/tags/}
|
||||
if [ "$allowunannotated" != "true" ]; then
|
||||
echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
|
||||
echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,delete)
|
||||
# delete tag
|
||||
if [ "$allowdeletetag" != "true" ]; then
|
||||
echo "*** Deleting a tag is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,tag)
|
||||
# annotated tag
|
||||
if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
|
||||
then
|
||||
echo "*** Tag '$refname' already exists." >&2
|
||||
echo "*** Modifying a tag is not allowed in this repository." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,commit)
|
||||
# branch
|
||||
if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
|
||||
echo "*** Creating a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,delete)
|
||||
# delete branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/remotes/*,commit)
|
||||
# tracking branch
|
||||
;;
|
||||
refs/remotes/*,delete)
|
||||
# delete tracking branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a tracking branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
# Anything else (is there anything else?)
|
||||
echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
|
||||
exit 1
|
||||
;;
|
||||
refs/tags/*,commit)
|
||||
# un-annotated tag
|
||||
short_refname=${refname##refs/tags/}
|
||||
if [ "$allowunannotated" != "true" ]; then
|
||||
echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
|
||||
echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,delete)
|
||||
# delete tag
|
||||
if [ "$allowdeletetag" != "true" ]; then
|
||||
echo "*** Deleting a tag is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,tag)
|
||||
# annotated tag
|
||||
if [ "$allowmodifytag" != "true" ] && git rev-parse $refname >/dev/null 2>&1; then
|
||||
echo "*** Tag '$refname' already exists." >&2
|
||||
echo "*** Modifying a tag is not allowed in this repository." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,commit)
|
||||
# branch
|
||||
if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
|
||||
echo "*** Creating a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,delete)
|
||||
# delete branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/remotes/*,commit)
|
||||
# tracking branch
|
||||
;;
|
||||
refs/remotes/*,delete)
|
||||
# delete tracking branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a tracking branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
# Anything else (is there anything else?)
|
||||
echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- Finished
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
# This example catches duplicate Signed-off-by lines.
|
||||
|
||||
test "" = "$(grep '^Signed-off-by: ' "$1" |
|
||||
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
||||
echo >&2 Duplicate Signed-off-by lines.
|
||||
exit 1
|
||||
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
||||
echo >&2 Duplicate Signed-off-by lines.
|
||||
exit 1
|
||||
}
|
||||
|
||||
@@ -7,12 +7,11 @@
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-commit".
|
||||
|
||||
if git rev-parse --verify HEAD >/dev/null 2>&1
|
||||
then
|
||||
against=HEAD
|
||||
if git rev-parse --verify HEAD >/dev/null 2>&1; then
|
||||
against=HEAD
|
||||
else
|
||||
# Initial commit: diff against an empty tree object
|
||||
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
|
||||
# Initial commit: diff against an empty tree object
|
||||
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
|
||||
fi
|
||||
|
||||
# If you want to allow non-ASCII filenames set this variable to true.
|
||||
@@ -25,13 +24,12 @@ exec 1>&2
|
||||
# them from being added to the repository. We exploit the fact that the
|
||||
# printable range starts at the space character and ends with tilde.
|
||||
if [ "$allownonascii" != "true" ] &&
|
||||
# Note that the use of brackets around a tr range is ok here, (it's
|
||||
# even required, for portability to Solaris 10's /usr/bin/tr), since
|
||||
# the square bracket bytes happen to fall in the designated range.
|
||||
test $(git diff --cached --name-only --diff-filter=A -z $against |
|
||||
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
|
||||
then
|
||||
cat <<\EOF
|
||||
# Note that the use of brackets around a tr range is ok here, (it's
|
||||
# even required, for portability to Solaris 10's /usr/bin/tr), since
|
||||
# the square bracket bytes happen to fall in the designated range.
|
||||
test $(git diff --cached --name-only --diff-filter=A -z $against |
|
||||
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0; then
|
||||
cat <<\EOF
|
||||
Error: Attempt to add a non-ASCII file name.
|
||||
|
||||
This can cause problems if you want to work with people on other platforms.
|
||||
@@ -42,7 +40,7 @@ If you know what you are doing you can disable this check using:
|
||||
|
||||
git config hooks.allownonascii true
|
||||
EOF
|
||||
exit 1
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# If there are whitespace errors, print the offending file names and fail.
|
||||
|
||||
@@ -24,30 +24,26 @@ url="$2"
|
||||
|
||||
z40=0000000000000000000000000000000000000000
|
||||
|
||||
while read local_ref local_sha remote_ref remote_sha
|
||||
do
|
||||
if [ "$local_sha" = $z40 ]
|
||||
then
|
||||
# Handle delete
|
||||
:
|
||||
else
|
||||
if [ "$remote_sha" = $z40 ]
|
||||
then
|
||||
# New branch, examine all commits
|
||||
range="$local_sha"
|
||||
else
|
||||
# Update to existing branch, examine new commits
|
||||
range="$remote_sha..$local_sha"
|
||||
fi
|
||||
while read local_ref local_sha remote_ref remote_sha; do
|
||||
if [ "$local_sha" = $z40 ]; then
|
||||
# Handle delete
|
||||
:
|
||||
else
|
||||
if [ "$remote_sha" = $z40 ]; then
|
||||
# New branch, examine all commits
|
||||
range="$local_sha"
|
||||
else
|
||||
# Update to existing branch, examine new commits
|
||||
range="$remote_sha..$local_sha"
|
||||
fi
|
||||
|
||||
# Check for WIP commit
|
||||
commit=`git rev-list -n 1 --grep '^WIP' "$range"`
|
||||
if [ -n "$commit" ]
|
||||
then
|
||||
echo >&2 "Found WIP commit in $local_ref, not pushing"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
# Check for WIP commit
|
||||
commit=$(git rev-list -n 1 --grep '^WIP' "$range")
|
||||
if [ -n "$commit" ]; then
|
||||
echo >&2 "Found WIP commit in $local_ref, not pushing"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
exit 0
|
||||
|
||||
@@ -17,20 +17,19 @@
|
||||
|
||||
publish=next
|
||||
basebranch="$1"
|
||||
if test "$#" = 2
|
||||
then
|
||||
topic="refs/heads/$2"
|
||||
if test "$#" = 2; then
|
||||
topic="refs/heads/$2"
|
||||
else
|
||||
topic=`git symbolic-ref HEAD` ||
|
||||
exit 0 ;# we do not interrupt rebasing detached HEAD
|
||||
topic=$(git symbolic-ref HEAD) ||
|
||||
exit 0 # we do not interrupt rebasing detached HEAD
|
||||
fi
|
||||
|
||||
case "$topic" in
|
||||
refs/heads/??/*)
|
||||
;;
|
||||
refs/heads/??/*) ;;
|
||||
|
||||
*)
|
||||
exit 0 ;# we do not interrupt others.
|
||||
;;
|
||||
exit 0 # we do not interrupt others.
|
||||
;;
|
||||
esac
|
||||
|
||||
# Now we are dealing with a topic branch being rebased
|
||||
@@ -38,34 +37,31 @@ esac
|
||||
|
||||
# Does the topic really exist?
|
||||
git show-ref -q "$topic" || {
|
||||
echo >&2 "No such branch $topic"
|
||||
exit 1
|
||||
echo >&2 "No such branch $topic"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Is topic fully merged to master?
|
||||
not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
|
||||
if test -z "$not_in_master"
|
||||
then
|
||||
echo >&2 "$topic is fully merged to master; better remove it."
|
||||
exit 1 ;# we could allow it, but there is no point.
|
||||
not_in_master=$(git rev-list --pretty=oneline ^master "$topic")
|
||||
if test -z "$not_in_master"; then
|
||||
echo >&2 "$topic is fully merged to master; better remove it."
|
||||
exit 1 # we could allow it, but there is no point.
|
||||
fi
|
||||
|
||||
# Is topic ever merged to next? If so you should not be rebasing it.
|
||||
only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
|
||||
only_next_2=`git rev-list ^master ${publish} | sort`
|
||||
if test "$only_next_1" = "$only_next_2"
|
||||
then
|
||||
not_in_topic=`git rev-list "^$topic" master`
|
||||
if test -z "$not_in_topic"
|
||||
then
|
||||
echo >&2 "$topic is already up to date with master"
|
||||
exit 1 ;# we could allow it, but there is no point.
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
only_next_1=$(git rev-list ^master "^$topic" ${publish} | sort)
|
||||
only_next_2=$(git rev-list ^master ${publish} | sort)
|
||||
if test "$only_next_1" = "$only_next_2"; then
|
||||
not_in_topic=$(git rev-list "^$topic" master)
|
||||
if test -z "$not_in_topic"; then
|
||||
echo >&2 "$topic is already up to date with master"
|
||||
exit 1 # we could allow it, but there is no point.
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
|
||||
/usr/bin/perl -e '
|
||||
not_in_next=$(git rev-list --pretty=oneline ^${publish} "$topic")
|
||||
/usr/bin/perl -e '
|
||||
my $topic = $ARGV[0];
|
||||
my $msg = "* $topic has commits already merged to public branch:\n";
|
||||
my (%not_in_next) = map {
|
||||
@@ -85,7 +81,7 @@ else
|
||||
}
|
||||
}
|
||||
' "$topic" "$not_in_next" "$not_in_master"
|
||||
exit 1
|
||||
exit 1
|
||||
fi
|
||||
|
||||
<<\DOC_END
|
||||
|
||||
@@ -6,19 +6,18 @@
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-receive".
|
||||
|
||||
if test -n "$GIT_PUSH_OPTION_COUNT"
|
||||
then
|
||||
i=0
|
||||
while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"
|
||||
do
|
||||
eval "value=\$GIT_PUSH_OPTION_$i"
|
||||
case "$value" in
|
||||
echoback=*)
|
||||
echo "echo from the pre-receive-hook: ${value#*=}" >&2
|
||||
;;
|
||||
reject)
|
||||
exit 1
|
||||
esac
|
||||
i=$((i + 1))
|
||||
done
|
||||
if test -n "$GIT_PUSH_OPTION_COUNT"; then
|
||||
i=0
|
||||
while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"; do
|
||||
eval "value=\$GIT_PUSH_OPTION_$i"
|
||||
case "$value" in
|
||||
echoback=*)
|
||||
echo "echo from the pre-receive-hook: ${value#*=}" >&2
|
||||
;;
|
||||
reject)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
i=$((i + 1))
|
||||
done
|
||||
fi
|
||||
|
||||
@@ -31,15 +31,15 @@ newrev="$3"
|
||||
|
||||
# --- Safety check
|
||||
if [ -z "$GIT_DIR" ]; then
|
||||
echo "Don't run this script from the command line." >&2
|
||||
echo " (if you want, you could supply GIT_DIR then run" >&2
|
||||
echo " $0 <ref> <oldrev> <newrev>)" >&2
|
||||
exit 1
|
||||
echo "Don't run this script from the command line." >&2
|
||||
echo " (if you want, you could supply GIT_DIR then run" >&2
|
||||
echo " $0 <ref> <oldrev> <newrev>)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
|
||||
echo "usage: $0 <ref> <oldrev> <newrev>" >&2
|
||||
exit 1
|
||||
echo "usage: $0 <ref> <oldrev> <newrev>" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# --- Config
|
||||
@@ -53,75 +53,74 @@ allowmodifytag=$(git config --bool hooks.allowmodifytag)
|
||||
projectdesc=$(sed -e '1q' "$GIT_DIR/description")
|
||||
case "$projectdesc" in
|
||||
"Unnamed repository"* | "")
|
||||
echo "*** Project description file hasn't been set" >&2
|
||||
exit 1
|
||||
;;
|
||||
echo "*** Project description file hasn't been set" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- Check types
|
||||
# if $newrev is 0000...0000, it's a commit to delete a ref.
|
||||
zero="0000000000000000000000000000000000000000"
|
||||
if [ "$newrev" = "$zero" ]; then
|
||||
newrev_type=delete
|
||||
newrev_type=delete
|
||||
else
|
||||
newrev_type=$(git cat-file -t $newrev)
|
||||
newrev_type=$(git cat-file -t $newrev)
|
||||
fi
|
||||
|
||||
case "$refname","$newrev_type" in
|
||||
refs/tags/*,commit)
|
||||
# un-annotated tag
|
||||
short_refname=${refname##refs/tags/}
|
||||
if [ "$allowunannotated" != "true" ]; then
|
||||
echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
|
||||
echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,delete)
|
||||
# delete tag
|
||||
if [ "$allowdeletetag" != "true" ]; then
|
||||
echo "*** Deleting a tag is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,tag)
|
||||
# annotated tag
|
||||
if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
|
||||
then
|
||||
echo "*** Tag '$refname' already exists." >&2
|
||||
echo "*** Modifying a tag is not allowed in this repository." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,commit)
|
||||
# branch
|
||||
if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
|
||||
echo "*** Creating a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,delete)
|
||||
# delete branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/remotes/*,commit)
|
||||
# tracking branch
|
||||
;;
|
||||
refs/remotes/*,delete)
|
||||
# delete tracking branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a tracking branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
# Anything else (is there anything else?)
|
||||
echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
|
||||
exit 1
|
||||
;;
|
||||
refs/tags/*,commit)
|
||||
# un-annotated tag
|
||||
short_refname=${refname##refs/tags/}
|
||||
if [ "$allowunannotated" != "true" ]; then
|
||||
echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
|
||||
echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,delete)
|
||||
# delete tag
|
||||
if [ "$allowdeletetag" != "true" ]; then
|
||||
echo "*** Deleting a tag is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,tag)
|
||||
# annotated tag
|
||||
if [ "$allowmodifytag" != "true" ] && git rev-parse $refname >/dev/null 2>&1; then
|
||||
echo "*** Tag '$refname' already exists." >&2
|
||||
echo "*** Modifying a tag is not allowed in this repository." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,commit)
|
||||
# branch
|
||||
if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
|
||||
echo "*** Creating a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,delete)
|
||||
# delete branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/remotes/*,commit)
|
||||
# tracking branch
|
||||
;;
|
||||
refs/remotes/*,delete)
|
||||
# delete tracking branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a tracking branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
# Anything else (is there anything else?)
|
||||
echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- Finished
|
||||
|
||||
@@ -306,7 +306,7 @@ initializr:
|
||||
- name: Mobile
|
||||
id: mobile
|
||||
description: Simplify the development of mobile web applications with Spring Mobile
|
||||
versionRange : "[1.5.0.RELEASE, 2.0.0.M1)"
|
||||
versionRange: "[1.5.0.RELEASE, 2.0.0.M1)"
|
||||
- name: Template Engines
|
||||
content:
|
||||
- name: Thymeleaf
|
||||
@@ -1240,10 +1240,10 @@ initializr:
|
||||
id: groovy
|
||||
default: false
|
||||
bootVersions:
|
||||
- name : Latest SNAPSHOT
|
||||
- name: Latest SNAPSHOT
|
||||
id: 2.2.0.BUILD-SNAPSHOT
|
||||
default: false
|
||||
- name : 2.1.1.
|
||||
- name: 2.1.1.
|
||||
id: 2.1.1.RELEASE
|
||||
default: true
|
||||
|
||||
|
||||
@@ -21,423 +21,433 @@ icon: stackoverflow
|
||||
<html lang="en-US">
|
||||
|
||||
|
||||
{% capture billboard_description %}
|
||||
|
||||
Spring Cloud provides tools for developers to quickly build some of
|
||||
the common patterns in distributed systems (e.g. configuration
|
||||
management, service discovery, circuit breakers, intelligent routing,
|
||||
micro-proxy, control bus, one-time tokens, global locks, leadership
|
||||
election, distributed sessions, cluster state). Coordination of
|
||||
distributed systems leads to boiler plate patterns, and using Spring
|
||||
Cloud developers can quickly stand up services and applications that
|
||||
implement those patterns. They will work well in any distributed
|
||||
environment, including the developer's own laptop, bare metal data
|
||||
centres, and managed platforms such as Cloud Foundry.
|
||||
|
||||
{% endcapture %}
|
||||
|
||||
{% capture main_content %}
|
||||
|
||||
Spring Cloud builds on Spring Boot by providing a bunch of libraries
|
||||
that enhance the behaviour of an application when added to the
|
||||
classpath. You can take advantage of the basic default behaviour to
|
||||
get started really quickly, and then when you need to, you can
|
||||
configure or extend to create a custom solution.
|
||||
|
||||
<span id="quick-start"></span>
|
||||
|
||||
## Quick Start
|
||||
|
||||
The release train label (see below) is actually only used explicitly
|
||||
in one artifact: "spring-cloud-dependencies" (all the others have
|
||||
normal numeric release labels tied to their parent project). The
|
||||
dependencies POM is the one you can use as a BOM for dependency
|
||||
management. Example using the latest version with the config client
|
||||
and eureka (change the artifact ids to pull in other starters):
|
||||
|
||||
{% include download_widget.md %}
|
||||
|
||||
## Features
|
||||
|
||||
Spring Cloud focuses on providing good out of box experience for typical use cases and extensibility mechanism to cover
|
||||
others.
|
||||
|
||||
* Distributed/versioned configuration
|
||||
* Service registration and discovery
|
||||
* Routing
|
||||
* Service-to-service calls
|
||||
* Load balancing
|
||||
* Circuit Breakers
|
||||
* Global locks
|
||||
* Leadership election and cluster state
|
||||
* Distributed messaging
|
||||
|
||||
Spring Cloud takes a very declarative approach, and often you get a
|
||||
lot of fetaures with just a classpath change and/or an
|
||||
annotation. Example application that is a discovery client:
|
||||
|
||||
```java
|
||||
@SpringBootApplication
|
||||
@EnableDiscoveryClient
|
||||
public class Application {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(Application.class, args);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
<a name="main-projects"></a>
|
||||
|
||||
## Main Projects
|
||||
|
||||
<!-- Spring Cloud Config -->
|
||||
{% capture project_description %}
|
||||
Centralized external configuration management backed by a git repository. The configuration resources map directly to
|
||||
Spring `Environment` but could be used by non-Spring applications if desired.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-config"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-config" project_title="Spring Cloud Config"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Netflix -->
|
||||
{% capture project_description %}
|
||||
Integration with various Netflix OSS components (Eureka, Hystrix, Zuul, Archaius, etc.).
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-netflix"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-netflix" project_title="Spring Cloud Netflix"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Bus -->
|
||||
{% capture project_description %}
|
||||
An event bus for linking services and service instances together with distributed messaging. Useful for propagating
|
||||
state changes across a cluster (e.g. config change events).
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-bus"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-bus" project_title="Spring Cloud Bus"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Cloudfoundry -->
|
||||
{% capture project_description %}
|
||||
Integrates your application with Pivotal Cloud Foundry. Provides a service discovery implementation and also makes it
|
||||
easy to implement SSO and OAuth2 protected resources.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-cloudfoundry"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-cloudfoundry" project_title="Spring Cloud for Cloud Foundry"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Open Service Broker -->
|
||||
{% capture project_description %}
|
||||
Provides a starting point for building a service broker that implements the Open Service Broker API.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-open-service-broker/"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-open-service-broker" project_title="Spring Cloud Open Service
|
||||
Broker" project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Cluster -->
|
||||
{% capture project_description %}
|
||||
Leadership election and common stateful patterns with an abstraction and implementation for Zookeeper, Redis, Hazelcast,
|
||||
Consul.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="/spring-cloud" repo_url="https://github.com/spring-cloud/spring-cloud-cluster"
|
||||
project_title="Spring Cloud Cluster" project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Consul -->
|
||||
{% capture project_description %}
|
||||
Service discovery and configuration management with Hashicorp Consul.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-consul"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-consul" project_title="Spring Cloud Consul"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Security -->
|
||||
{% capture project_description %}
|
||||
Provides support for load-balanced OAuth2 rest client and authentication header relays in a Zuul proxy.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-security"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-security" project_title="Spring Cloud Security"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Sleuth -->
|
||||
{% capture project_description %}
|
||||
Distributed tracing for Spring Cloud applications, compatible with Zipkin, HTrace and log-based (e.g. ELK) tracing.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-sleuth"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-sleuth" project_title="Spring Cloud Sleuth"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Data Flow -->
|
||||
{% capture project_description %}
|
||||
A cloud-native orchestration service for composable microservice applications on modern runtimes. Easy-to-use DSL,
|
||||
drag-and-drop GUI, and REST-APIs together simplifies the overall orchestration of microservice based data pipelines.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-dataflow"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-dataflow" project_title="Spring Cloud Data Flow"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Stream -->
|
||||
{% capture project_description %}
|
||||
A lightweight event-driven microservices framework to quickly build applications that can connect to external systems.
|
||||
Simple declarative model to send and receive messages using Apache Kafka or RabbitMQ between Spring Boot apps.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-stream"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-stream" project_title="Spring Cloud Stream"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Stream App Starters -->
|
||||
{% capture project_description %}
|
||||
Spring Cloud Stream App Starters are Spring Boot based Spring Integration applications that provide integration with
|
||||
external systems.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-stream-app-starters"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-stream-app-starters" project_title="Spring Cloud Stream App
|
||||
Starters" project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Task -->
|
||||
{% capture project_description %}
|
||||
A short-lived microservices framework to quickly build applications that perform finite amounts of data processing.
|
||||
Simple declarative for adding both functional and non-functional features to Spring Boot apps.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-task"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-task" project_title="Spring Cloud Task"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Task App Starters -->
|
||||
{% capture project_description %}
|
||||
Spring Cloud Task App Starters are Spring Boot applications that may be any process including Spring Batch jobs that do
|
||||
not run forever, and they end/stop after a finite period of data processing.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-task-app-starters"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-task-app-starters" project_title="Spring Cloud Task App Starters"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Zookeeper -->
|
||||
{% capture project_description %}
|
||||
Service discovery and configuration management with Apache Zookeeper.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-zookeeper"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-zookeeper" project_title="Spring Cloud Zookeeper"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud AWS -->
|
||||
{% capture project_description %}
|
||||
Easy integration with hosted Amazon Web Services. It offers a convenient way to interact with AWS provided services
|
||||
using well-known Spring idioms and APIs, such as the messaging or caching API. Developers can build their application
|
||||
around the hosted services without having to care about infrastructure or maintenance.
|
||||
{% endcapture %}
|
||||
|
||||
{% capture site_url %}
|
||||
{{ site.projects_site_url }}/spring-cloud-aws
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url=site_url repo_url="https://github.com/spring-cloud/spring-cloud-aws"
|
||||
project_title="Spring Cloud for Amazon Web Services" project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Connectors -->
|
||||
{% capture project_description %}
|
||||
Makes it easy for PaaS applications in a variety of platforms to connect to backend services like
|
||||
databases and message brokers (the project formerly known as "Spring Cloud").
|
||||
{% endcapture %}
|
||||
|
||||
{% capture site_url %}
|
||||
{{ site.projects_site_url }}/spring-cloud-connectors
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url=site_url repo_url="https://github.com/spring-cloud/spring-cloud-connectors"
|
||||
project_title="Spring Cloud Connectors" project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Starters -->
|
||||
{% capture project_description %}
|
||||
Spring Boot-style starter projects to ease dependency management for consumers of Spring Cloud. (Discontinued as a
|
||||
project and merged with the other projects after Angel.SR2.)
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://github.com/spring-cloud/spring-cloud-starters"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-starters" project_title="Spring Cloud Starters"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud CLI -->
|
||||
{% capture project_description %}
|
||||
Spring Boot CLI plugin for creating Spring Cloud component applications quickly in Groovy
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://github.com/spring-cloud/spring-cloud-cli"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-cli" project_title="Spring Cloud CLI"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Contract -->
|
||||
{% capture project_description %}
|
||||
Spring Cloud Contract is an umbrella project holding solutions that help users in successfully implementing the Consumer
|
||||
Driven Contracts approach.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-contract"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-contract" project_title="Spring Cloud Contract"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Gateway -->
|
||||
{% capture project_description %}
|
||||
Spring Cloud Gateway is an intelligent and programmable router based on Project Reactor.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-gateway"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-gateway" project_title="Spring Cloud Gateway"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud OpenFeign -->
|
||||
{% capture project_description %}
|
||||
Spring Cloud OpenFeign provides integrations for Spring Boot apps through autoconfiguration and binding to the Spring
|
||||
Environment and other Spring programming model idioms.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-openfeign"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-openfeign" project_title="Spring Cloud OpenFeign"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Pipelines -->
|
||||
{% capture project_description %}
|
||||
Spring Cloud Pipelines provides an opinionated deployment pipeline with steps to ensure that your application can be
|
||||
deployed in zero downtime fashion and easilly rolled back of something goes wrong.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-pipelines"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-pipelines" project_title="Spring Cloud Pipelines"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Function -->
|
||||
{% capture project_description %}
|
||||
Spring Cloud Function promotes the implementation of business logic via functions. It supports a uniform programming
|
||||
model across serverless providers, as well as the ability to run standalone (locally or in a PaaS).
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-function"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-function" project_title="Spring Cloud Function"
|
||||
project_description=project_description %}
|
||||
|
||||
## Release Trains
|
||||
|
||||
Spring Cloud is an umbrella project consisting of independent projects with, in principle, different
|
||||
release cadences. To manage the portfolio a BOM (Bill of Materials) is published with a curated
|
||||
set of dependencies on the individual project (see below). The release trains have names, not
|
||||
versions, to avoid confusion with the sub-projects. The names are an alphabetic sequence (so
|
||||
you can sort them chronologically) with names of London Tube stations ("Angel" is the first
|
||||
release, "Brixton" is the second). When point releases of the individual projects accumulate to
|
||||
a critical mass, or if there is a critical bug in one of them that needs to be available to everyone,
|
||||
the release train will push out "service releases" with names ending ".SRX", where "X"
|
||||
is a number.
|
||||
|
||||
Release train contents:
|
||||
|
||||
<!-- BEGIN COMPONENTS -->
|
||||
|
||||
|Component | Edgware.SR5 | Finchley.SR1 | Finchley.BUILD-SNAPSHOT|
|
||||
|--------------------------------------|-----------------|---------------------|------------------------|
|
||||
|spring-cloud-aws | 1.2.3.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
|
||||
|spring-cloud-bus | 1.3.3.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
|
||||
|spring-cloud-cli | 1.4.1.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
|
||||
|spring-cloud-commons | 1.3.5.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
||||
|spring-cloud-contract | 1.2.6.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
||||
|spring-cloud-config | 1.4.5.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
||||
|spring-cloud-netflix | 1.4.6.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
||||
|spring-cloud-security | 1.2.3.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
|
||||
|spring-cloud-cloudfoundry | 1.1.2.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
|
||||
|spring-cloud-consul | 1.3.5.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
||||
|spring-cloud-sleuth | 1.3.5.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
||||
|spring-cloud-stream | Ditmars.SR4 | Elmhurst.SR1 | Elmhurst.BUILD-SNAPSHOT|
|
||||
|spring-cloud-zookeeper | 1.2.2.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
|
||||
|spring-boot | 1.5.16.RELEASE | 2.0.4.RELEASE | 2.0.4.BUILD-SNAPSHOT |
|
||||
|spring-cloud-task | 1.2.3.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
|
||||
|spring-cloud-vault | 1.1.2.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
||||
|spring-cloud-gateway | 1.0.2.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
||||
|spring-cloud-openfeign | | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
||||
|spring-cloud-function | 1.0.1.RELEASE | 1.0.0.RELEASE | 1.0.1.BUILD-SNAPSHOT |
|
||||
|
||||
<!-- END COMPONENTS -->
|
||||
|
||||
Finchley builds and works with Spring Boot 2.0.x, and is not expected
|
||||
to work with Spring Boot 1.5.x.
|
||||
|
||||
Note: The Dalston release train will [reach
|
||||
end-of-life](https://spring.io/blog/2018/06/19/spring-cloud-finchley-release-is-available) in December 2018. Edgware
|
||||
will follow the end-of-life cycle of Spring Boot 1.5.x.
|
||||
|
||||
The Dalston and Edgware release trains build on Spring Boot 1.5.x, and
|
||||
are not expected to work with Spring Boot 2.0.x.
|
||||
|
||||
NOTE: The Camden release train was [marked
|
||||
end-of-life](https://spring.io/blog/2018/06/19/spring-cloud-finchley-release-is-available).
|
||||
|
||||
The Camden release train builds on Spring Boot 1.4.x, but is also
|
||||
tested with 1.5.x.
|
||||
|
||||
NOTE: The Brixton and Angel release trains were [marked
|
||||
end-of-life](https://spring.io/blog/2017/07/21/spring-cloud-dalston-sr2-is-available-now#end-of-life-for-angel-and-brixton-release-trains)
|
||||
(EOL) in July 2017.
|
||||
|
||||
The Brixton release train builds on Spring Boot 1.3.x, but is also
|
||||
tested with 1.4.x.
|
||||
|
||||
The Angel release train builds on Spring Boot 1.2.x, and is
|
||||
incompatible in some areas with Spring Boot 1.3.x. Brixton builds on
|
||||
Spring Boot 1.3.x and is similarly incompatible with 1.2.x. Some
|
||||
libraries and most apps built on Angel will run fine on Brixton, but
|
||||
changes will be required anywhere that the OAuth2 features from
|
||||
spring-cloud-security 1.0.x are used (they were mostly moved to Spring
|
||||
Boot in 1.3.0).
|
||||
|
||||
Use your dependency management tools to control the version. If you
|
||||
are using Maven remember that the first version declared wins, so
|
||||
declare the BOMs in order, with the first one usually being the most
|
||||
recent (e.g. if you want to use Spring Boot 1.3.6 with Brixton.RELEASE, put
|
||||
the Boot BOM first). The same rule applies to Gradle if you use the
|
||||
Spring dependency management plugin.
|
||||
|
||||
> NOTE: The release train contains a
|
||||
> `spring-cloud-dependencies` as well as the
|
||||
> `spring-cloud-starter-parent`. You can use the parent as you would
|
||||
> the `spring-boot-starter-parent` (if you are using Maven).
|
||||
> If you only need dependency management, the "dependencies"
|
||||
> version is a BOM-only version of the same thing (it just
|
||||
> contains dependency management and no plugin declarations
|
||||
> or direct references to Spring or Spring Boot). If you are
|
||||
> using the Spring Boot parent POM, then you can use the BOM from
|
||||
> Spring Cloud. The opposite is not true: using the Cloud parent
|
||||
> makes it impossible, or at least unreliable, to also use the
|
||||
> Boot BOM to change the version of Spring Boot and its dependencies.
|
||||
|
||||
> NOTE: If you find anything wrong or outdated on this page, please open an issue in
|
||||
[this](https://github.com/spring-projects/spring-cloud) repo.
|
||||
|
||||
{% endcapture %}
|
||||
|
||||
{% capture related_resources %}
|
||||
|
||||
### Sample Projects
|
||||
|
||||
* [Config Server](https://github.com/spring-cloud-samples/configserver)
|
||||
* [Service Registry](https://github.com/spring-cloud-samples/eureka)
|
||||
* [Circuit Breaker Dashboard](https://github.com/spring-cloud-samples/hystrix-dashboard)
|
||||
* [Business Application](https://github.com/spring-cloud-samples/customers-stores) (Customers and Stores)
|
||||
* [OAuth2 Authorization Server](https://github.com/spring-cloud-samples/authserver)
|
||||
* [OAuth2 SSO Client](https://github.com/spring-cloud-samples/sso)
|
||||
* [Integration Test Samples](https://github.com/spring-cloud-samples/tests)
|
||||
* [Spring Cloud Contract Samples](https://github.com/spring-cloud-samples/spring-cloud-contract-samples)
|
||||
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_page.html %}
|
||||
{% capture billboard_description %}
|
||||
|
||||
Spring Cloud provides tools for developers to quickly build some of
|
||||
the common patterns in distributed systems (e.g. configuration
|
||||
management, service discovery, circuit breakers, intelligent routing,
|
||||
micro-proxy, control bus, one-time tokens, global locks, leadership
|
||||
election, distributed sessions, cluster state). Coordination of
|
||||
distributed systems leads to boiler plate patterns, and using Spring
|
||||
Cloud developers can quickly stand up services and applications that
|
||||
implement those patterns. They will work well in any distributed
|
||||
environment, including the developer's own laptop, bare metal data
|
||||
centres, and managed platforms such as Cloud Foundry.
|
||||
|
||||
{% endcapture %}
|
||||
|
||||
{% capture main_content %}
|
||||
|
||||
Spring Cloud builds on Spring Boot by providing a bunch of libraries
|
||||
that enhance the behaviour of an application when added to the
|
||||
classpath. You can take advantage of the basic default behaviour to
|
||||
get started really quickly, and then when you need to, you can
|
||||
configure or extend to create a custom solution.
|
||||
|
||||
<span id="quick-start"></span>
|
||||
|
||||
## Quick Start
|
||||
|
||||
The release train label (see below) is actually only used explicitly
|
||||
in one artifact: "spring-cloud-dependencies" (all the others have
|
||||
normal numeric release labels tied to their parent project). The
|
||||
dependencies POM is the one you can use as a BOM for dependency
|
||||
management. Example using the latest version with the config client
|
||||
and eureka (change the artifact ids to pull in other starters):
|
||||
|
||||
{% include download_widget.md %}
|
||||
|
||||
## Features
|
||||
|
||||
Spring Cloud focuses on providing good out of box experience for typical use cases and extensibility mechanism to
|
||||
cover
|
||||
others.
|
||||
|
||||
* Distributed/versioned configuration
|
||||
* Service registration and discovery
|
||||
* Routing
|
||||
* Service-to-service calls
|
||||
* Load balancing
|
||||
* Circuit Breakers
|
||||
* Global locks
|
||||
* Leadership election and cluster state
|
||||
* Distributed messaging
|
||||
|
||||
Spring Cloud takes a very declarative approach, and often you get a
|
||||
lot of fetaures with just a classpath change and/or an
|
||||
annotation. Example application that is a discovery client:
|
||||
|
||||
```java
|
||||
@SpringBootApplication
|
||||
@EnableDiscoveryClient
|
||||
public class Application {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(Application.class, args);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
<a name="main-projects"></a>
|
||||
|
||||
## Main Projects
|
||||
|
||||
<!-- Spring Cloud Config -->
|
||||
{% capture project_description %}
|
||||
Centralized external configuration management backed by a git repository. The configuration resources map directly
|
||||
to
|
||||
Spring `Environment` but could be used by non-Spring applications if desired.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-config"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-config" project_title="Spring Cloud Config"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Netflix -->
|
||||
{% capture project_description %}
|
||||
Integration with various Netflix OSS components (Eureka, Hystrix, Zuul, Archaius, etc.).
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-netflix"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-netflix" project_title="Spring Cloud Netflix"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Bus -->
|
||||
{% capture project_description %}
|
||||
An event bus for linking services and service instances together with distributed messaging. Useful for propagating
|
||||
state changes across a cluster (e.g. config change events).
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-bus"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-bus" project_title="Spring Cloud Bus"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Cloudfoundry -->
|
||||
{% capture project_description %}
|
||||
Integrates your application with Pivotal Cloud Foundry. Provides a service discovery implementation and also makes
|
||||
it
|
||||
easy to implement SSO and OAuth2 protected resources.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-cloudfoundry"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-cloudfoundry" project_title="Spring Cloud for Cloud Foundry"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Open Service Broker -->
|
||||
{% capture project_description %}
|
||||
Provides a starting point for building a service broker that implements the Open Service Broker API.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-open-service-broker/"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-open-service-broker" project_title="Spring Cloud Open Service
|
||||
Broker" project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Cluster -->
|
||||
{% capture project_description %}
|
||||
Leadership election and common stateful patterns with an abstraction and implementation for Zookeeper, Redis,
|
||||
Hazelcast,
|
||||
Consul.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="/spring-cloud" repo_url="https://github.com/spring-cloud/spring-cloud-cluster"
|
||||
project_title="Spring Cloud Cluster" project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Consul -->
|
||||
{% capture project_description %}
|
||||
Service discovery and configuration management with Hashicorp Consul.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-consul"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-consul" project_title="Spring Cloud Consul"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Security -->
|
||||
{% capture project_description %}
|
||||
Provides support for load-balanced OAuth2 rest client and authentication header relays in a Zuul proxy.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-security"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-security" project_title="Spring Cloud Security"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Sleuth -->
|
||||
{% capture project_description %}
|
||||
Distributed tracing for Spring Cloud applications, compatible with Zipkin, HTrace and log-based (e.g. ELK) tracing.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-sleuth"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-sleuth" project_title="Spring Cloud Sleuth"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Data Flow -->
|
||||
{% capture project_description %}
|
||||
A cloud-native orchestration service for composable microservice applications on modern runtimes. Easy-to-use DSL,
|
||||
drag-and-drop GUI, and REST-APIs together simplifies the overall orchestration of microservice based data pipelines.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-dataflow"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-dataflow" project_title="Spring Cloud Data Flow"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Stream -->
|
||||
{% capture project_description %}
|
||||
A lightweight event-driven microservices framework to quickly build applications that can connect to external
|
||||
systems.
|
||||
Simple declarative model to send and receive messages using Apache Kafka or RabbitMQ between Spring Boot apps.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-stream"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-stream" project_title="Spring Cloud Stream"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Stream App Starters -->
|
||||
{% capture project_description %}
|
||||
Spring Cloud Stream App Starters are Spring Boot based Spring Integration applications that provide integration with
|
||||
external systems.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-stream-app-starters"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-stream-app-starters" project_title="Spring Cloud Stream App
|
||||
Starters" project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Task -->
|
||||
{% capture project_description %}
|
||||
A short-lived microservices framework to quickly build applications that perform finite amounts of data processing.
|
||||
Simple declarative for adding both functional and non-functional features to Spring Boot apps.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-task"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-task" project_title="Spring Cloud Task"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Task App Starters -->
|
||||
{% capture project_description %}
|
||||
Spring Cloud Task App Starters are Spring Boot applications that may be any process including Spring Batch jobs that
|
||||
do
|
||||
not run forever, and they end/stop after a finite period of data processing.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-task-app-starters"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-task-app-starters" project_title="Spring Cloud Task App
|
||||
Starters"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Zookeeper -->
|
||||
{% capture project_description %}
|
||||
Service discovery and configuration management with Apache Zookeeper.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-zookeeper"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-zookeeper" project_title="Spring Cloud Zookeeper"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud AWS -->
|
||||
{% capture project_description %}
|
||||
Easy integration with hosted Amazon Web Services. It offers a convenient way to interact with AWS provided services
|
||||
using well-known Spring idioms and APIs, such as the messaging or caching API. Developers can build their
|
||||
application
|
||||
around the hosted services without having to care about infrastructure or maintenance.
|
||||
{% endcapture %}
|
||||
|
||||
{% capture site_url %}
|
||||
{{ site.projects_site_url }}/spring-cloud-aws
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url=site_url repo_url="https://github.com/spring-cloud/spring-cloud-aws"
|
||||
project_title="Spring Cloud for Amazon Web Services" project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Connectors -->
|
||||
{% capture project_description %}
|
||||
Makes it easy for PaaS applications in a variety of platforms to connect to backend services like
|
||||
databases and message brokers (the project formerly known as "Spring Cloud").
|
||||
{% endcapture %}
|
||||
|
||||
{% capture site_url %}
|
||||
{{ site.projects_site_url }}/spring-cloud-connectors
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url=site_url repo_url="https://github.com/spring-cloud/spring-cloud-connectors"
|
||||
project_title="Spring Cloud Connectors" project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Starters -->
|
||||
{% capture project_description %}
|
||||
Spring Boot-style starter projects to ease dependency management for consumers of Spring Cloud. (Discontinued as a
|
||||
project and merged with the other projects after Angel.SR2.)
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://github.com/spring-cloud/spring-cloud-starters"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-starters" project_title="Spring Cloud Starters"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud CLI -->
|
||||
{% capture project_description %}
|
||||
Spring Boot CLI plugin for creating Spring Cloud component applications quickly in Groovy
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://github.com/spring-cloud/spring-cloud-cli"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-cli" project_title="Spring Cloud CLI"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Contract -->
|
||||
{% capture project_description %}
|
||||
Spring Cloud Contract is an umbrella project holding solutions that help users in successfully implementing the
|
||||
Consumer
|
||||
Driven Contracts approach.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-contract"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-contract" project_title="Spring Cloud Contract"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Gateway -->
|
||||
{% capture project_description %}
|
||||
Spring Cloud Gateway is an intelligent and programmable router based on Project Reactor.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-gateway"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-gateway" project_title="Spring Cloud Gateway"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud OpenFeign -->
|
||||
{% capture project_description %}
|
||||
Spring Cloud OpenFeign provides integrations for Spring Boot apps through autoconfiguration and binding to the
|
||||
Spring
|
||||
Environment and other Spring programming model idioms.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-openfeign"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-openfeign" project_title="Spring Cloud OpenFeign"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Pipelines -->
|
||||
{% capture project_description %}
|
||||
Spring Cloud Pipelines provides an opinionated deployment pipeline with steps to ensure that your application can be
|
||||
deployed in zero downtime fashion and easilly rolled back of something goes wrong.
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-pipelines"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-pipelines" project_title="Spring Cloud Pipelines"
|
||||
project_description=project_description %}
|
||||
|
||||
<!-- Spring Cloud Function -->
|
||||
{% capture project_description %}
|
||||
Spring Cloud Function promotes the implementation of business logic via functions. It supports a uniform programming
|
||||
model across serverless providers, as well as the ability to run standalone (locally or in a PaaS).
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_block.md site_url="https://cloud.spring.io/spring-cloud-function"
|
||||
repo_url="https://github.com/spring-cloud/spring-cloud-function" project_title="Spring Cloud Function"
|
||||
project_description=project_description %}
|
||||
|
||||
## Release Trains
|
||||
|
||||
Spring Cloud is an umbrella project consisting of independent projects with, in principle, different
|
||||
release cadences. To manage the portfolio a BOM (Bill of Materials) is published with a curated
|
||||
set of dependencies on the individual project (see below). The release trains have names, not
|
||||
versions, to avoid confusion with the sub-projects. The names are an alphabetic sequence (so
|
||||
you can sort them chronologically) with names of London Tube stations ("Angel" is the first
|
||||
release, "Brixton" is the second). When point releases of the individual projects accumulate to
|
||||
a critical mass, or if there is a critical bug in one of them that needs to be available to everyone,
|
||||
the release train will push out "service releases" with names ending ".SRX", where "X"
|
||||
is a number.
|
||||
|
||||
Release train contents:
|
||||
|
||||
<!-- BEGIN COMPONENTS -->
|
||||
|
||||
|Component | Edgware.SR5 | Finchley.SR1 | Finchley.BUILD-SNAPSHOT|
|
||||
|--------------------------------------|-----------------|---------------------|------------------------|
|
||||
|spring-cloud-aws | 1.2.3.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
|
||||
|spring-cloud-bus | 1.3.3.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
|
||||
|spring-cloud-cli | 1.4.1.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
|
||||
|spring-cloud-commons | 1.3.5.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
||||
|spring-cloud-contract | 1.2.6.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
||||
|spring-cloud-config | 1.4.5.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
||||
|spring-cloud-netflix | 1.4.6.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
||||
|spring-cloud-security | 1.2.3.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
|
||||
|spring-cloud-cloudfoundry | 1.1.2.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
|
||||
|spring-cloud-consul | 1.3.5.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
||||
|spring-cloud-sleuth | 1.3.5.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
||||
|spring-cloud-stream | Ditmars.SR4 | Elmhurst.SR1 | Elmhurst.BUILD-SNAPSHOT|
|
||||
|spring-cloud-zookeeper | 1.2.2.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
|
||||
|spring-boot | 1.5.16.RELEASE | 2.0.4.RELEASE | 2.0.4.BUILD-SNAPSHOT |
|
||||
|spring-cloud-task | 1.2.3.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
|
||||
|spring-cloud-vault | 1.1.2.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
||||
|spring-cloud-gateway | 1.0.2.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
||||
|spring-cloud-openfeign | | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
||||
|spring-cloud-function | 1.0.1.RELEASE | 1.0.0.RELEASE | 1.0.1.BUILD-SNAPSHOT |
|
||||
|
||||
<!-- END COMPONENTS -->
|
||||
|
||||
Finchley builds and works with Spring Boot 2.0.x, and is not expected
|
||||
to work with Spring Boot 1.5.x.
|
||||
|
||||
Note: The Dalston release train will [reach
|
||||
end-of-life](https://spring.io/blog/2018/06/19/spring-cloud-finchley-release-is-available) in December 2018. Edgware
|
||||
will follow the end-of-life cycle of Spring Boot 1.5.x.
|
||||
|
||||
The Dalston and Edgware release trains build on Spring Boot 1.5.x, and
|
||||
are not expected to work with Spring Boot 2.0.x.
|
||||
|
||||
NOTE: The Camden release train was [marked
|
||||
end-of-life](https://spring.io/blog/2018/06/19/spring-cloud-finchley-release-is-available).
|
||||
|
||||
The Camden release train builds on Spring Boot 1.4.x, but is also
|
||||
tested with 1.5.x.
|
||||
|
||||
NOTE: The Brixton and Angel release trains were [marked
|
||||
end-of-life](https://spring.io/blog/2017/07/21/spring-cloud-dalston-sr2-is-available-now#end-of-life-for-angel-and-brixton-release-trains)
|
||||
(EOL) in July 2017.
|
||||
|
||||
The Brixton release train builds on Spring Boot 1.3.x, but is also
|
||||
tested with 1.4.x.
|
||||
|
||||
The Angel release train builds on Spring Boot 1.2.x, and is
|
||||
incompatible in some areas with Spring Boot 1.3.x. Brixton builds on
|
||||
Spring Boot 1.3.x and is similarly incompatible with 1.2.x. Some
|
||||
libraries and most apps built on Angel will run fine on Brixton, but
|
||||
changes will be required anywhere that the OAuth2 features from
|
||||
spring-cloud-security 1.0.x are used (they were mostly moved to Spring
|
||||
Boot in 1.3.0).
|
||||
|
||||
Use your dependency management tools to control the version. If you
|
||||
are using Maven remember that the first version declared wins, so
|
||||
declare the BOMs in order, with the first one usually being the most
|
||||
recent (e.g. if you want to use Spring Boot 1.3.6 with Brixton.RELEASE, put
|
||||
the Boot BOM first). The same rule applies to Gradle if you use the
|
||||
Spring dependency management plugin.
|
||||
|
||||
> NOTE: The release train contains a
|
||||
> `spring-cloud-dependencies` as well as the
|
||||
> `spring-cloud-starter-parent`. You can use the parent as you would
|
||||
> the `spring-boot-starter-parent` (if you are using Maven).
|
||||
> If you only need dependency management, the "dependencies"
|
||||
> version is a BOM-only version of the same thing (it just
|
||||
> contains dependency management and no plugin declarations
|
||||
> or direct references to Spring or Spring Boot). If you are
|
||||
> using the Spring Boot parent POM, then you can use the BOM from
|
||||
> Spring Cloud. The opposite is not true: using the Cloud parent
|
||||
> makes it impossible, or at least unreliable, to also use the
|
||||
> Boot BOM to change the version of Spring Boot and its dependencies.
|
||||
|
||||
> NOTE: If you find anything wrong or outdated on this page, please open an issue in
|
||||
[this](https://github.com/spring-projects/spring-cloud) repo.
|
||||
|
||||
{% endcapture %}
|
||||
|
||||
{% capture related_resources %}
|
||||
|
||||
### Sample Projects
|
||||
|
||||
* [Config Server](https://github.com/spring-cloud-samples/configserver)
|
||||
* [Service Registry](https://github.com/spring-cloud-samples/eureka)
|
||||
* [Circuit Breaker Dashboard](https://github.com/spring-cloud-samples/hystrix-dashboard)
|
||||
* [Business Application](https://github.com/spring-cloud-samples/customers-stores) (Customers and Stores)
|
||||
* [OAuth2 Authorization Server](https://github.com/spring-cloud-samples/authserver)
|
||||
* [OAuth2 SSO Client](https://github.com/spring-cloud-samples/sso)
|
||||
* [Integration Test Samples](https://github.com/spring-cloud-samples/tests)
|
||||
* [Spring Cloud Contract Samples](https://github.com/spring-cloud-samples/spring-cloud-contract-samples)
|
||||
|
||||
{% endcapture %}
|
||||
|
||||
{% include project_page.html %}
|
||||
</html>
|
||||
|
||||
@@ -25,8 +25,8 @@ import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.springframework.cloud.release.internal.Releaser;
|
||||
import org.springframework.cloud.release.internal.ReleaserProperties;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.ProcessedProject;
|
||||
import org.springframework.cloud.release.internal.project.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.project.Projects;
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
|
||||
@@ -27,7 +27,6 @@ import org.springframework.cloud.release.internal.buildsystem.GradleUpdater;
|
||||
import org.springframework.cloud.release.internal.buildsystem.ProjectPomUpdater;
|
||||
import org.springframework.cloud.release.internal.docs.CustomProjectDocumentationUpdater;
|
||||
import org.springframework.cloud.release.internal.docs.DocumentationUpdater;
|
||||
import org.springframework.cloud.release.internal.docs.ProjectDocumentationUpdater;
|
||||
import org.springframework.cloud.release.internal.git.ProjectGitHandler;
|
||||
import org.springframework.cloud.release.internal.github.ProjectGitHubHandler;
|
||||
import org.springframework.cloud.release.internal.options.Parser;
|
||||
@@ -109,19 +108,11 @@ class ReleaserConfiguration {
|
||||
@Autowired(required = false)
|
||||
List<CustomProjectDocumentationUpdater> customProjectDocumentationUpdaters = new ArrayList<>();
|
||||
|
||||
@Bean
|
||||
ProjectDocumentationUpdater projectDocumentationUpdater(
|
||||
ProjectGitHandler projectGitHandler) {
|
||||
return new ProjectDocumentationUpdater(this.properties, projectGitHandler,
|
||||
this.customProjectDocumentationUpdaters);
|
||||
}
|
||||
|
||||
@Bean
|
||||
DocumentationUpdater documentationUpdater(ProjectGitHandler projectGitHandler,
|
||||
ReleaserProperties properties, TemplateGenerator templateGenerator,
|
||||
ProjectDocumentationUpdater projectDocumentationUpdater) {
|
||||
ReleaserProperties properties, TemplateGenerator templateGenerator) {
|
||||
return new DocumentationUpdater(projectGitHandler, properties, templateGenerator,
|
||||
projectDocumentationUpdater);
|
||||
this.customProjectDocumentationUpdaters);
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user