Skip to content

Releases: line/centraldogma

centraldogma-0.29.0

13 Jul 09:36
931355d

Choose a tag to compare

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

28 Jun 03:28
09bc87f

Choose a tag to compare

Documentation

  • Add introductory slides to the front page #252

Bug fixes

  • Use HttpApiExceptionHandler for v0 RepositoryService #250
  • Ignore non-file objects such as a submodule while mirroring a Git repository #251

Dependencies

  • Armeria 0.66.0 -> 0.67.1
  • jGit 4.11.0 -> 5.0.1

centraldogma-0.28.0

15 Jun 06:37
e3ccda8

Choose a tag to compare

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
    • CentralDogma.push() now returns PushResult instead of Commit. #241 #242
    • CentralDogma.getHistory() now returns List<Commit> instead of List<CommitAndChanges>. #241 #242
  • Client: Go
    • Commit struct does not have entries anymore. #244
      • Added WatchResult.entry instead
    • Client.Push() now returns PushResult instead of Commit. #244
  • Server
    • Reduced the amount of information for some HTTP API responses. #241 #242
      • When pushing a changeset, author, commitMessage and entries will not be returned.
      • When retrieving a commit list, entries will not be returned.
      • When watching a file, entry will be returned instead of entries.
      • When watching a repository, entries will not be returned.

Dependencies

  • Armeria 0.65.1 -> 0.66.0

centraldogma-0.27.0

31 May 06:27
94cdcae

Choose a tag to compare

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 meta repository 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

Breaking changes

  • Client: Java
    • The artifacts centraldogma-client-java-spring-boot1-* have been renamed to centraldogma-client-spring-boot1-*. #229
    • We do not use .properties format for client profiles anymore. #233

Dependencies

  • Armeria 0.64.0 -> 0.65.1

centraldogma-0.26.0

24 May 08:00
b3c314f

Choose a tag to compare

New features

Improvements

  • Client: Golang
    • Improved string conversion of ChangeType #224

Breaking changes

  • Client: Java
    • LegacyCentralDogmaBuilder.build() throws UnknownHostException.

centraldogma-0.25.0

21 May 08:31
5eb90ae

Choose a tag to compare

New features

  • Server

    • API responses are now compressed with deflate or gzip if requested, based on the accept-encoding header. #211
  • 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 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();

Improvements

  • Server
    • Improved the performance of watch operations by caching initial tree comparison results. #214
    • Added jitters to watch timeouts and mirroring schedules to avoid thundering herd. #215 #217 #222

Bug fixes

  • Server
    • 'history' operation may return an incorrectly cached value. #212
    • I/O thread is blocked by a long watch operation. #213
    • Fixed a bug where a repository created via Thrift API is inaccessible via HTTP API. #218
    • Fixed a bug in metadata migration logic which sometimes prevented migration. #221

Dependencies

  • Armeria 0.63.1 -> 0.64.0

centraldogma-0.24.0

25 Apr 10:38
c56cbdb

Choose a tag to compare

New features

  • Added 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. #202

Bug fixes

  • Non-administrators were able to access the metadata.json file which contains potentially confidential information. #199
  • A project owner was able to remove the meta repository, 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

09 Apr 07:35
72fb097

Choose a tag to compare

Client

New features

  • #141 #172 Go client library

    • 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-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

    • Use centraldogma-client-spring-boot1-* to integrate with Spring Boot 1.x.

Bug fixes

  • #165 More than one CentralDogma instance can be created with Spring Boot integration.
  • #171 NoClassDefFoundError when used with Spring Data

Deprecations

  • #184 Query.identity() has been deprecated in favor of Query.ofJson() and Query.ofText().
  • #184 CentralDogma.push() that requires an Author has been deprecated in favor of push() that does not require an Author.

Breaking changes

  • #169 Due to the reorganization, the instantiation of CentralDogma client has been changed in a backward-incompatible way.
    • See the 'new features' section above for more information.
  • #184 QueryResult has been removed in favor of Entry.
    • See the 'new features' section above for more information.
  • #184 Entry.content() now throws IllegalStateException instead of returning null when the Entry is a directory.

Server

New features

  • #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

    • Set caseSensitiveLoginNames to false to match login names case-insensitively.

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

09 Mar 06:35
620ba1c

Choose a tag to compare

New features

  • #135 #142 Implement read-only mode for maintenance purpose
  • #143 Add HTTP access log
  • #145 Add session timeout option for administrative web UI. 7 days by default.

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

09 Feb 08:56

Choose a tag to compare

Bug fixes

  • Shaded JARs contain shaded dependencies.

Dependencies

  • Armeria 0.58.0 -> 0.58.1