This is a collection of utilities that are shared across our Scala-based repositories (catalogue-api, catalogue-pipeline, storage-service).
It includes:
- Code for interacting with AWS services we use across the platform, like Amazon S3 and DynamoDB
- Test helpers and fixtures that let us write tests in a consistent way
- Helpers for using Typesafe to get config into our applications
This library is meant to increase code reuse among our applications, not to be a general-purpose library.
If you work at Wellcome:
- These libraries are already configured in our Scala projects. Your IDE should pick up the library as another dependency.
If you don't work at Wellcome:
- Copy/paste any code you're interested in (and the tests!) into your codebase, and adding a comment that links to the original project.
- We don't make any guarantees of API stability or back/forward compatibility between different versions of the library. We routinely make breaking changes or delete code that we're no longer using.
Our process is inspired by the Hypothesis library.
-
When you open a pull request, include a release note named
RELEASE.md
in the root of the repo:RELEASE_TYPE: major|minor|patch Updating the widget wrangler to reverse the polarity of the neutron flow.
-
When the pull request is merged, our CI system merges the release note into the changelog and cuts a new release. This release is uploaded to an S3 bucket.
-
Our CI system then opens pull requests on our downstream repos, updating them to use the newly released version.
This means that new changes are deployed quickly and consistently across the platform. If we've made breaking changes that need more changes in the downstream repo, that happens immediately (usually by the author of the original patch).