Highly-available version-controlled service configuration repository based on Git, ZooKeeper and HTTP/2
APACHE-2.0 License
Bot releases are hidden (Show)
ChangeType
#224LegacyCentralDogmaBuilder.build()
throws UnknownHostException
.Server
accept-encoding
header. #211Client: Golang
Added watcher support to Golang library. #207
// Create a Query with a Path to watch.
query := &Query{Path: "/a.json", Type: JSONPath}
// Create a FileWatcher which is notified when the specific file
// in the "bar" repository in the "foo" project is modified.
fw, _ := c.FileWatcher("foo", "bar", query)
// Create a listener which prints the value when the watcher is notified.
listener := func(revision int, value interface{}) { fmt.Println(value) }
// Register it.
fw.Watch(listener)
Client: Java
Added CentralDogmaEndpointGroup
for Armeria. #105
// Build a new EndpointGroup that fetches the endpoint list from Central Dogma.
final CentralDogma dogma = new LegacyCentralDogmaBuilder()...build();
final CentralDogmaEndpointGroup group = CentralDogmaEndpointGroup.of(
dogma, "myProj", "myRepo", Query.ofJson("/endpoints.json")
EndpointListDecoder.JSON);
// Wait until the initial query succeeds.
group.awaitInitialEndpoints();
// Register the group and use it in the URI.
EndpointGroupRegistry.register(
"mygroup", group, EndpointSelectionStrategy.WEIGHTED_ROUND_ROBIN);
final HttpClient client = HttpClient.of("http://group:mygroup/");
final AggregatedHttpMessage res = client.get("/foo").aggregate().join();
maxCommits
query parameter to GET /api/v1/projects/{projectName}/repos/{repoName}/commits/{revision}
API which is useful when you want to limit the number of commits to fetch. #202metadata.json
file which contains potentially confidential information. #199meta
repository, making the REST API and web UI stop to function. #203#141 #172 Go client library
#169 Reorganization of Java client library
We will provide three Java client libraries:
There is only the legacy version that uses Thrift currently. Use the artifactId centraldogma-client-armeria-legacy
until we provide the others.
Due to the reorganization, the instantiation of CentralDogma
client has been changed in a backward-incompatible way:
// Before
CentralDogma oldDogma1 = CentralDogma.forHost("example.com");
CentralDogma oldDogma2 = new CentralDogmaBuilder()...build();
// After
CentralDogma newDogma = new LegacyCentralDogmaBuilder()...build();
#184 Entry
and QueryResult
have been merged into a single type, Entry
.
CentralDogma dogma = ...;
// Before
QueryResult<JsonNode> res = dogma.watchFile("myProj", "myRepo", Revision.INIT,
Query.ofJsonPath("/foo.json", "$"), 60000).join();
// After
Entry<JsonNode> res = dogma.watchFile("myProj", "myRepo", Revision.INIT,
Query.ofJson("/foo.json"), 60000).join();
#184 Add Query.ofJson()
and Query.ofText()
, deprecating Query.identity()
CentralDogma dogma = ...;
// Before
Entry<Object> entry = dogma.getFile("myProj", "myRepo", Rebision.HEAD,
Query.identity("/foo.json")).join();
JsonNode content = (JsonNode) entry.content();
// After
Entry<JsonNode> entry = dogma.getFile("myProj", "myRepo", Revision.HEAD,
Query.ofJson("/foo.json")).join();
JsonNode content = entry.content();
#184 Add more convenient methods to Entry
.
Entry<JsonNode> jsonEntry = ...;
// Use Jackson to convert JsonNode into MyValue.
MyValue myValue = jsonEntry.contentAsJson(MyValue.class);
// Get the prettified textual representation.
String prettyStr = jsonEntry.contentAsPrettyText();
// It's now easier to map a value from a JSON file.
CentralDogma dogma = ...;
MyValue myValue = dogma.getFile("myProj", "myRepo", Revision.HEAD,
Query.ofJson("/foo.json")).join()
.contentAsJson(MyValue.class);
#191 #193 Spring Boot 2 support
centraldogma-client-spring-boot1-*
to integrate with Spring Boot 1.x.CentralDogma
instance can be created with Spring Boot integration.NoClassDefFoundError
when used with Spring DataQuery.identity()
has been deprecated in favor of Query.ofJson()
and Query.ofText()
.CentralDogma.push()
that requires an Author
has been deprecated in favor of push()
that does not require an Author
.CentralDogma
client has been changed in a backward-incompatible way.
QueryResult
has been removed in favor of Entry
.
Entry.content()
now throws IllegalStateException
instead of returning null
when the Entry
is a directory.#133 Access control
#146 #147 TLS support
#181 Ability to serve HTTP and HTTPS on the same port
Specify http
and https
in the protocols
section of dogma.json
:
{
"ports": [ {
"localAddress": { "host": "*", "port": 443 },
"protocols": [ "http", "https" ]
} ]
}
#164 Read-only mode, which is allowed only to administrators
#167 Case-insensitive login name matching
caseSensitiveLoginNames
to false
to match login names case-insensitively.accessLogFormat
property in the documentation.webAppSessionTimeoutMillis
property in the documentation.CentralDogma.forProfile()
should choose the last matching profile so that it behaves same with Spring Boot.500 Internal Server Error
on authentication failure/api/v1/
replicaId
property in dogma.json
.RedundantChangeException
.IllegalArgumentException
during token validationsecurity.ini
has been renamed to shiro.ini
.dogma.json
must not have the replicaId
proprety since the replica ID is auto-generated and stored into the data directory from this release.CentralDogmaBeanFactory
.CentralDogma.forProfile()
now registers an Armeria EndpointGroup
with more recognizable group name.Revision
401 Unauthorized
error message from administrative console when security is disabled./docs
is not redirected to /docs/
.This initial open-source release contains the collective work of the following enthusiastic contributors at LINE Corporation: