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.
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.
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.
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.
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:
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:
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:
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.
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.
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.
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.
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.
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 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.
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.
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.