# Making a new release
## Building
For the documentation, we aim to deliver it in these formats: HTML, ePub, PDF.
Per commit in `main` branch, if it builds successfully, it will deploy to the `latest` version in Read the Doc: , and also in GitHub Pages: .
To build the project, `makefile` is used. `make doc` (after you activated the `soukdc` conda environment) should builds the HTML documentation.
:::{warning}
To ensure the documentation deploys to Read the Doc successfully, make sure there is no warnings when making the documentation. To ensure the cache isn't hiding some errors, you may run
```sh
make clean && make all
```
:::
All targets (HTML, ePub, PDF) is deployed to Read the Doc automatically.
## Serving
When authoring the documentation, you may want to have the HTML built at real time. Use
```sh
# after activating your conda environment soukdc
make serve
```
## Semantic versioning and `bump-my-version`
[Semantic versioning](https://semver.org) is followed, with the `MAJOR.MINOR.PATCH` convention as usual. Version `0.x.x` indicates the SO:UK Data Centre is not in final production ready state yet. `MINOR` version is bumped only if there's major functional improvement to the user experience, for example, when CVMFS is deployed. Otherwise, it is always a `PATCH` version release.
:::{warning}
Before making a new release, check Read the Doc in to see if the `latest` build is successful first.
:::
`bump-my-version` is used to automatically bump the version string scattered in multiple files. See `pyproject.toml` under `[tool.bumpversion]` for details.
To make a new release,
1. Update the `docs/changelog.md` to includes changes made since last release. GitHub can be useful here: .
2. Make sure there's no uncommitted changes.
3. Run
- `make bump PART=patch` for patch release,
- `make bump PART=minor` for minor release,
- `make bump PART=major` for major release.
4. Check Read the Doc at to see the new builds are deployed successfully.
5. Make a new GitHub Releases based on the new tag created in step 3: .
- title: SO:UK Data Centre 0.4.1 Documentation
- content: copied from the changelog you updated in step 1.
- check "Create a discussion for this release"
6. (Optional) make announcement in [simonsobs-uk/data-centre · Discussions · GitHub](https://github.com/simonsobs-uk/data-centre/discussions). Follow the example in . Maintainer need to keep a list of GitHub handles elsewhere. Hint: maintain Kolen's Notion databases.
## Releasing to `/opt/simonsobservatory` on `vm77`
`make opt`.
## Single file targets
`make man txt` and upload to manually.
TODO: automate this.