- 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 a Bintray account:
- Create an account
- Request access to the Bugsnag organization
-
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 # Your credentials for https://bintray.com bintray_user=your-bintray-username bintray_api_key=your-bintray-api-key
- 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?
- Merge any remaining PRs to master, ensuring the commit message matches the release tag (e.g. v4.0.0)
- Update the CHANGELOG.md file with any changes
- Update the version number by running
make VERSION=[number] bump
- Commit the changes
- Create a release build:
./gradlew -Preleasing=true clean release
- enter the release version (e.g.
1.2.0
) - accept the default development version
- enter the release version (e.g.
- Create a release in GitHub, attaching the changelog entry and build artifacts
- Upload the archives to Sonatype Nexus and Bintray:
./gradlew -Preleasing=true uploadArchives bintrayUpload
- "Promote" the build on Maven Central:
./gradlew -Preleasing=true closeAndReleaseRepository
- Update the documentation (integration guide, quick start):
- Update the version numbers of the dependencies listed in the manual integration guide.
- For a major version change, update the version numbers in the integration instructions on docs.bugsnag.com and the quick start guides on the website.
- 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)