Releases: line/centraldogma
centraldogma-0.29.0
New feature
- Added ID field to credentials so that a user can specify different credentials for different repositories in the same host. #257
Improvements
- Log messages related with replication failures are more detailed. #255
- Java 10 is used by default for releasing. #256
- Runtime dependency is still Java 8.
Dependencies
- Armeria 0.67.1 -> 0.67.2
centraldogma-0.28.1
centraldogma-0.28.0
Improvements
- Server
-
HTTP API responses now have the following format:
{ "exception": "<fully qualified class name of the exception> (optional)", "message": "<human-readable error message>" }
-
Bug fixes
- Client: Golang
- Fixed a bug where Go client does not provide an error message. #246
- Server
- JSON paths were not evaluated when watching a file using the HTTP API. #240
- Jumping to a revision in web UI's file list view did not work. #243
- A user or a mirroring service was able to see a partially created project, which can cause unexpected exceptions. #245 #247
- Due to this fix, it is impossible to run pre-0.28.0 replicas and 0.28.0 replicas in the same cluster. Enter read-only mode or shut down your cluster completely before upgrading.
Breaking changes
- Client: Java
- Client: Go
- Server
- Reduced the amount of information for some HTTP API responses. #241 #242
- When pushing a changeset,
author,commitMessageandentrieswill not be returned. - When retrieving a commit list,
entrieswill not be returned. - When watching a file,
entrywill be returned instead ofentries. - When watching a repository,
entrieswill not be returned.
- When pushing a changeset,
- Reduced the amount of information for some HTTP API responses. #241 #242
Dependencies
- Armeria 0.65.1 -> 0.66.0
centraldogma-0.27.0
New features
- Client: Java
- We now use JSON as a client profile format. This allows you to specify different port numbers for cleartext and TLS connections. See Using client profile for more information. #233
Bug fixes
- Server
- Fixed a bug where the repository metadata of the
metarepository is not populated when a new project is created. As a result, a user was not able to set up Git-to-CD mirrors. #230
- Fixed a bug where the repository metadata of the
Breaking changes
- Client: Java
Dependencies
- Armeria 0.64.0 -> 0.65.1
centraldogma-0.26.0
New features
- Client: Java
- Automatic client-side load-balancing based on DNS query #228
- See Using DNS-based lookup for more information.
- Automatic client-side load-balancing based on DNS query #228
Improvements
- Client: Golang
- Improved string conversion of
ChangeType#224
- Improved string conversion of
Breaking changes
- Client: Java
LegacyCentralDogmaBuilder.build()throwsUnknownHostException.
centraldogma-0.25.0
New features
-
Server
- API responses are now compressed with deflate or gzip if requested, based on the
accept-encodingheader. #211
- API responses are now compressed with deflate or gzip if requested, based on the
-
Client: 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
CentralDogmaEndpointGroupfor 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();
-
Improvements
- Server
Bug fixes
- Server
Dependencies
- Armeria 0.63.1 -> 0.64.0
centraldogma-0.24.0
New features
- Added
maxCommitsquery parameter toGET /api/v1/projects/{projectName}/repos/{repoName}/commits/{revision}API which is useful when you want to limit the number of commits to fetch. #202
Bug fixes
- Non-administrators were able to access the
metadata.jsonfile which contains potentially confidential information. #199 - A project owner was able to remove the
metarepository, making the REST API and web UI stop to function. #203 - Fixed an unexpected '500 Internal Server Error' when shutting down a server. #204
Dependencies
- Armeria 0.62.0 -> 0.63.1
- Spring Boot 1.5.10 -> 1.5.12
centraldogma-0.23.0
Client
New features
-
- See the official GoDoc for more information.
- CLI tool has been revamped to use the client library instead of sending an HTTP request by itself.
-
#169 Reorganization of Java client library
-
We will provide three Java client libraries:
- Legacy Armeria-based Thrift client
- Armeria-based REST client
- Minimal REST client without Armeria dependency
-
There is only the legacy version that uses Thrift currently. Use the artifactId
centraldogma-client-armeria-legacyuntil we provide the others. -
Due to the reorganization, the instantiation of
CentralDogmaclient 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
EntryandQueryResulthave 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()andQuery.ofText(), deprecatingQuery.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
- Use
centraldogma-client-spring-boot1-*to integrate with Spring Boot 1.x.
- Use
Bug fixes
- #165 More than one
CentralDogmainstance can be created with Spring Boot integration. - #171
NoClassDefFoundErrorwhen used with Spring Data
Deprecations
- #184
Query.identity()has been deprecated in favor ofQuery.ofJson()andQuery.ofText(). - #184
CentralDogma.push()that requires anAuthorhas been deprecated in favor ofpush()that does not require anAuthor.
Breaking changes
- #169 Due to the reorganization, the instantiation of
CentralDogmaclient has been changed in a backward-incompatible way.- See the 'new features' section above for more information.
- #184
QueryResulthas been removed in favor ofEntry.- See the 'new features' section above for more information.
- #184
Entry.content()now throwsIllegalStateExceptioninstead of returningnullwhen theEntryis a directory.
Server
New features
-
#133 Access control
- See the official documentation for more information.
-
- See the official documentation to learn how to enable TLS on your Central Dogma server.
-
#181 Ability to serve HTTP and HTTPS on the same port
-
Specify
httpandhttpsin theprotocolssection ofdogma.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
- Set
caseSensitiveLoginNamestofalseto match login names case-insensitively.
- Set
Improvements
- #186 Try again silently when LDAP server fails to respond during username-password authentication.
- #185 Use Caffeine cache for web sessions, instead of Shiro's default implementation.
- #177 Respond with the existing token if a user logs in again before the session expiration, so that tokens are not created unnecessarily.
Bug fixes
- #192 Git-to-CD mirroring can stop permanently when the mirroring thread pool cannot mirror fast enough.
Dependencies
- Armeria 0.60.0 -> 0.62.0
- Curator 2.12.0 -> 4.0.1
- futures-extra 3.0.0 -> 3.1.1
- Go 1.9 -> 1.10.1
- jGit 4.10.0 -> 4.11.0
centraldogma-0.22.0
New features
- #135 #142 Implement read-only mode for maintenance purpose
- #143 Add HTTP access log
- See the
accessLogFormatproperty in the documentation.
- See the
- #145 Add session timeout option for administrative web UI. 7 days by default.
- See the
webAppSessionTimeoutMillisproperty in the documentation.
- See the
Bug fixes
- #144
CentralDogma.forProfile()should choose the last matching profile so that it behaves same with Spring Boot. - #145 Default session timeout for administrative web UI is too small (30 minutes)
Dependencies
- Armeria 0.59.0
centraldogma-0.21.1
Bug fixes
- Shaded JARs contain shaded dependencies.
Dependencies
- Armeria 0.58.0 -> 0.58.1