Announcement: Bitbucket Server 7.0 Early Access Program (EAP) release

Hi everyone,

We are pleased to announce the availability of the first Early Access Program (EAP) release of Bitbucket Server 7.0.

This EAP release is so that app vendors and customers who have written in-house apps can update their apps to ensure they will work with the public release of Bitbucket Server 7.0.

A second EAP will be released 1-2 weeks before the release of Bitbucket Server 7.0, so remember to retest your apps one more time on this release.

Bitbucket Server 7.0, due February 2020, is our next platform release and will contain breaking changes.

Important things to note about this EAP release:

  • As development of the release is underway, the specifics of breaking changes will evolve and there may be other minor API changes between this release and the public release of Bitbucket Server 7.0.

  • This release should not be used in production environments. For all production use and testing of Bitbucket Server, please use the latest official release instead.

Download EAP

Planned changes

Client-side extensions

The following plugin points on the pull request page are being replaced with a new client-side extensions API. Please note, equivalent named plugin points not on the pull request page will remain unchanged.

  • bitbucket.pull-request.nav
  • bitbucket.pull-request.related-entities
  • bitbucket.pull-request.links
  • bitbucket.pull-request.overview.sections
  • bitbucket.pull-request.activity.diff.toolbar.primary
  • bitbucket.pull-request.activity.diff.toolbar.secondary
  • bitbucket.pull-request.diff.toolbar.primary
  • bitbucket.pull-request.diff.toolbar.secondary
  • bitbucket.comments.actions
  • bitbucket.comments.info
  • bitbucket.comments.extra
  • bitbucket.file-content.diff-view.options
  • bitbucket.pullrequest.action
  • bitbucket.commits.extras

Details on how to use the new client-side extensions API on the pull request page can be found in our developer documentation.

Extension point discovery mode can be enabled by providing the ?clientside-extensions URL parameter on any pull request page. Once the page is loaded, you’ll see the blue, interactive extension points.

The below table lists the new extension points:

Extension point Supported types JSON Schema files in the source code Context value Notes
bitbucket.ui.pullrequest.action
  • button
  • link
  • modal
pull-request-action.schema.json
  • currentUser (object)
  • project (object)
  • repository (object)
  • pullRequest (object)
  • conditions (object)
    • canDecline(bool)
    • canEdit (bool)
    • canDelete (bool)
    • canWriteSourceRepo (bool)
  • mergeable (object, optional)
    • canMerge (bool)
    • conflicted (bool)
    • outcome (bool)
The mergeable status can be a null value when pull requests are already merged.
bitbucket.ui.pullrequest.overview.summary
  • button
  • link
  • modal
pull-request-overview-summary.schema.json
  • currentUser (object)
  • project (object)
  • repository (object)
  • pullRequest (object)
bitbucket.ui.pullrequest.commits.table.column.after
  • button
  • link
  • modal
pull-request-commits-table-column-after.schema.json
  • currentUser (object)
  • project (object)
  • repository (object)
  • pullRequest (object)
  • commit (object)
bitbucket.ui.pullrequest.comment.action
  • button
  • link
  • modal
pull-request-comment-action.schema.json
  • currentUser (object)
  • project (object)
  • repository (object)
  • pullRequest (object)
  • comment (object)
    • canEdit (bool)
    • canDelete (bool)
    • isTask (bool)
All of the can* and is* properties are related to the comment object.
bitbucket.ui.pullrequest.comment.extra
  • panel
pull-request-comment-extra.schema.json
  • currentUser (object)
  • project (object)
  • repository (object)
  • pullRequest (object)
  • comment (object)
    • canEdit (bool)
    • canDelete (bool)
    • isTask (bool)
All of the can* and is* properties are related to the comment object.
bitbucket.ui.pullrequest.diff.toolbar
  • button
  • link
  • modal
pull-request-diff-toolbar.schema.json
  • currentUser (object)
  • project (object)
  • repository (object)
  • pullRequest (object)
  • change (object)

Other changes

As work for Bitbucket Server 7.0 proceeds, the Bitbucket Server engineering team may discover work needed for other, smaller, breaking changes that have not been planned yet. We will continue to update these release notes to bring you the latest information as work progresses.

7 Likes

Hi Sam,

Thanks for sharing this information in advance.

I wonder if the source code is available for this EAP release? I have checked it on https://my.atlassian.com/ and there is a link to download the source code but I am getting an error message when I click on this link:

Thanks,
Alex

1 Like

Hey!

These new client extension points look awesome and will alleviate some of the hacks required in the past to use React components in web panels etc, so thats excellent news. I’m excited to trial this out and see how easy it is to migrate our current client web panel based integrations.

On the topic of Javascript API’s in Bitbucket, at Adaptavist we are currently building some new features for the pull request screens in Bitbucket but we are running into some API limitations due to useful Javascript events being internal.

It would be really wonderful if we could have some public API equivalent of the following events:

  • bitbucket.internal.DO_NOT_USE.feature.comments.commentDeleted
  • bitbucket.internal.DO_NOT_USE.feature.comments.commentAdded

We’d also like a public API way to trigger merge checks from the UI as we have custom merge checks that are influenced by components that we render into the page, e.g a public API for the following would be lovely:

  • bitbucket.internal.DO_NOT_USE.feature.pull-request.merge-check

We want to build some really cool integrations for Bitbucket but these integrations at the moment depend on the above internal APIs and as such are subject to breakage. It would be great if some public API alternatives could be provided, the above doesn’t seem like much of an ask.

One other neat thing we’d like is an API to scroll to a specific comment by ID, Bitbucket has this built in and it would be cool if it was exposed publicly, but thats more niche.

Cheers!

Reece

Hi @SamPower,

Are there any updates in framework versions and supported infrastructure?
For example, is Java 8 still supported or does BB7 now require 11?

Cheers,
stefan

1 Like

Hi Stefan,

In this first EAP there are no breaking changes in the Java API including 3rd party dependencies such as frameworks. That may change for a second EAP, to be released towards the end of January. However we do not have plans for substantial changes to Java API in 7.0.

Bitbucket Server 7.0 will continue to support both Java 8 and 11, no change there. Specifically, BBS and plugins will/must continue to run on a Java 8 and 11 runtime, and as a result only language level 8 is supported.

Regards,
Ben Humphreys
Bitbucket Server

2 Likes

Hello everyone,

The URL for discovery mode should include "?clientside-extensions " with an “s” at the end.
It looks like we have made a typo in our community blog post. Sorry about that.

Thanks,
Maciej

4 Likes

Hi Alex,

Just acknowledging that something has gone wrong here. We are looking into the cause of this issue and I should hopefully have the source code available soon. I will update here when the issue is resolved.

Thanks,
Sam

3 Likes

Upon further investigation it looks like these events have been removed entirely, is there any hope of a public API alternative to the above? @SamPower @madamczak @behumphreys

So I’m working through compatibility for Bitbucket 7 and I have come across the following:

Uncaught (in promise) Error: bitbucket/util/state.getPullRequest is not available on this page. Please use the context provided to the client-side extension location instead

This seems a bit heavy handed, why remove this functionality? Atlassian must be aware that not all plugin functionality is possible via clientside-extensions. What if I have some JS loaded into the pull request context but not via an extension? How do I then get information about the pull request simply?

For context we have some JS augmenting elements on the PR page which does not really make sense to be built as a clientside-extension.

2 Likes

Hi @rlander, we are discussing right now about the decision to promote some of the removed internal events to public APIs. I will get back to you as soon as we have more answers.

Thanks,
Maciej

3 Likes

That’s excellent news thank you! If you need any more context feel free to contact me directly.

2 Likes

Hi Alex,

Thanks for reporting the problem with the source distribution; I apologise for the inconvenience.
It should be available now for the 7.0.0-eap1 - though if you have any more problems obtaining it please let me know.

Best Regards,
Ben Humphreys

5 Likes

I keep seeing a warning pop up when browsing to pull requests, is this some known issue?

2 Likes

Thanks for reporting the issue @rlander . We are aware of the problem and we should fix that before releasing the next version of EAP.

1 Like

It appears that comment properties provided by a CommentPropertyProvider module are not being added to the context of client extensions? Is this intentional? We’re making use of this feature to avoid having to make REST calls to the server to get comment properties for each comment.

1 Like

Just to be clear: are we talking about the properties key that is missing inside the comment object?

It looks like we do miss them indeed. We should add that in next EAP.

Yes that is correct! Good to hear these will be making a return.

Hello everyone,

We have good news for all of those who would like to try to use the new client-side extensions system but didn’t manage to do that yet. We have created a plugin template that includes examples of how to use extensions points.

You can check out and clone this repository:
https://bitbucket.org/atlassianlabs/bitbucket-client-side-extensions-template

Inside the src/my-app/extensions/pull-request directectory you can find the examples of all the new extension points we have on the pull request page.

A quick reminder about the docs:

2 Likes

@SamPower is there an ETA for the Bitbucket 7 release? Is the current EAP the final EAP or is there another one coming?