- Fork the library on GitHub
- Build and test your changes
- Commit and push until you are happy with your contribution
- Make a pull request
Thanks!
./gradlew jar
./gradlew check
These tests are implemented with our notifier testing tool Maze runner.
End to end tests are written in cucumber-style .feature
files, and need Ruby-backed "steps" in order to know what to run. The tests are located in the top level features
directory.
bundle install
bundle exec bugsnag-maze-runner
Sometimes its helpful to build and install the bugsnag-java libraries into a local repository and test the entire dependency flow inside of a sample application.
To get started:
-
In the
bugsnag-java
directory, run./gradlew -Preleasing=true publishToMavenLocal
. This installsbugsnag-java
andbugsnag-spring
into your local maven repository. -
In your sample application
build.gradle
, addmavenLocal()
to the top of yourallprojects
repositories section:allprojects { repositories { mavenLocal() // other repos as needed } }
-
In your sample application
app/build.gradle
, add the following to the dependencies section, inserting the exact version number required:dependencies { implementation 'com.bugsnag:bugsnag:[VERSION NUMBER]' }
-
Clean your sample application and reload dependencies every time you rebuild/republish the local dependencies:
./gradlew clean --refresh-dependencies
Create a Sonatype account:
- Create a Sonatype JIRA account
- Ask in the Bugsnag Sonatype JIRA ticket to become a contributor
- Ask an existing contributor (likely Simon) to confirm in the ticket
- Wait for Sonatype them to confirm the approval
-
Create your PGP Signatures
-
Configure your
~/.gradle/gradle.properties
:signing.keyId=your-gpg-key-id # (8-character hex) signing.password=your-gpg-password signing.secretKeyRingFile=/PATH/TO/HOME/.gnupg/secring.gpg nexusUsername=your-sonatype-username nexusPassword=your-sonatype-password
- Does the build pass on the CI server?
- Are all Docs PRs ready to go?
- Has all new functionality been manually tested on a release build?
- Ensure the example app sends an unhandled error
- Ensure the example app sends a handled error
- Have the installation instructions been updated on the dashboard as well as the docs site?
- Do the installation instructions work for a manual integration?
To start a release:
- decide on a version number
- create a new release branch from
next
with the version number in the branch namegit checkout -b release/vX.Y.Z
- Pull the release branch and update it locally:
- Update the version number with
make VERSION=[number] bump
- Update the version number and date in the changelog
- Inspect the updated CHANGELOG, and version files to ensure they are correct
- Update the version number with
- Commit the changes with the release tag as the commit message (e.g. v4.0.0)
- Create a release build and upload to the sonatype staging repository:
./gradlew -Preleasing=true clean publishAllPublicationsToSonatypeRepository
- Verify that the artefacts are uploaded to sonatype - ensure that JARs, POMs and JAVADOCs are present for each module.
- Test the Sonatype artefacts in the example app by adding the newly created 'combugsnag-XXXX' repository to the build.gradle: maven {url "https://oss.sonatype.org/service/local/repositories/combugsnag-XXXX/content/"}
- Once you are happy, make a PR from your release branch to
main
entitledRelease vX.Y.Z
- Get the release PR reviewed – all code changes should have been reviewed already, this should be a review of the integration of all changes to be shipped and the changelog
- Once merged:
- Pull the latest changes (checking out
main
if necessary) - Create a release build and upload to sonatype:
./gradlew -Preleasing=true clean publishAllPublicationsToSonatypeRepository
- Release to GitHub:
- Create and tag the release from
main
on GitHub Releases, attaching the changelog entry and build artifacts
- Create and tag the release from
- Checkout
main
and pull the latest changes - "Promote" the release build on Maven Central:
- Go to the sonatype open source dashboard
- Click the search box at the top right, and type “com.bugsnag”
- Select the com.bugsnag staging repository
- Ensure that JARs, POMs and JAVADOCs are present for each module
- Click the “close” button in the toolbar, no message
- Click the “refresh” button
- Select the com.bugsnag closed repository
- Click the “release” button in the toolbar
- Merge outstanding docs PRs related to this release
- Pull the latest changes (checking out
- Have all Docs PRs been merged?
- Do the existing example apps send an error report using the released artifact?
- Make releases to downstream libraries, if appropriate (generally for bug fixes)