In this repository we define the versions of our offchain services that are running in any given environment. Below some rules of thumb to remember for working with releases at Splits.
- branches are environments, except for
production, there is no production branch productionis being deployed by creating Git tags, e.g. via Github releases- the default branch does always describe the
stagingenvironment
The following environments exist today based on their respective naming conventions. We can add and remove permanent test environment if need be.
developmentakadev: this is your machine, localhost etc, we run docker compose heretestingakatest: this is the cloud, AWS etc, first line of defense via integration tests etcstagingakastage: this is the cloud, AWS etc, second line of defense via smoke tests etcproductionakaprod: this is the cloud, AWS etc, we live and die by the sword here
- To test your infrastructure changes, create a 'testing' branch and update the infrastructure.yaml file to point to the new branch. see example.
- Once your infrastructure changes are approved and merged, create a new release tag from here: releases
- Once the release is created, open a PR to update the infrastructure.yaml file to point to the new release. see example.
- Once the PR is merged, the staging environment will be updated with the new release.
- When you are ready to deploy to production, create a new release tag from here: releases
Releases must be defined in the ./infrastructure/ and ./service/ folders, which may contain nested folder structures themselves. If you want to change the way release definitions are loaded, then have a look at this pull request, where the release loader whitelist got introduced.
Our proprietary release schema is define by our deployment operator Kayron in ./pkg/release/schema. If you want to modify the way releases are defined, then you have to make sure Kayron can find and interpret the desired schema changes.
# service/service.yaml
- docker: "kayron"
github: "kayron"
deploy:
release: "v0.1.7"
- docker: "specta"
github: "specta"
deploy:
release: "v0.1.16"