<commit_before># How to cut a Pony release

This document is aimed at members of the Pony team who might be cutting a release of Pony. It serves as a checklist that can take you through doing a release step-by-step.

## Prerequisites for doing any release

In order to do a release, you absolutely must have:

* Commit access to the `ponyc` repo
* Access to the ponylang twitter account
* An account on the [Pony Zulip](https://ponylang.zulipchat.com)

While not strictly required, you probably be unable to deal with any errors that arise without:

* Read and write access to the ponylang [cloudsmith](https://cloudsmith.io/) account.

### Validate external services are functional

We rely on CirrusCI, Cloudsmith, and GitHub Actions as part of our release process. All  need to be up and functional in order to do a release. Check the status of each before starting a release. If any are reporting issues, push the release back a day or until whenever they are all reporting no problems.

* [CirrusCI Status](https://twitter.com/cirrus_labs)
* [Cloudsmith](https://status.cloudsmith.io/)
* [GitHub](https://www.githubstatus.com/)

### A GitHub issue exists for the release

All releases should have a corresponding issue in the [ponyc repo](https://github.com/ponylang/ponyc/issues). This issue should be used to communicate the progress of the release (updated as checklist steps are completed). You can also use the issue to notify other pony team members of problems.

## Releasing

Please note that this document was written with the assumption that you are using a clone of the `ponyc` repo. You have to be using a clone rather than a fork. It is advised that you do this by making a fresh clone of the `ponyc` repo from which you will release.

```bash
git clone <EMAIL>:ponylang/ponyc.git ponyc-release-clean
cd ponyc-release-clean
```

Before getting started, you will need a number for the version that you will be releasing as well as an agreed upon "golden commit" that will form the basis of the release.

The "golden commit" must be `HEAD` on the `master` branch of this repository. At this time, releasing from any other location is not supported.

For the duration of this document, that we are releasing version is `0.3.1`. Any place you see those values, please substitute your own version.

```bash
git tag release-0.3.1
git push origin release-0.3.1<commit_msg>Add DockerHub to release process<commit_after># How to cut a Pony release

This document is aimed at members of the Pony team who might be cutting a release of Pony. It serves as a checklist that can take you through doing a release step-by-step.

## Prerequisites for doing any release

In order to do a release, you absolutely must have:

* Commit access to the `ponyc` repo
* Access to the ponylang twitter account
* An account on the [Pony Zulip](https://ponylang.zulipchat.com)

While not strictly required, you probably be unable to deal with any errors that arise without:

* Read and write access to the ponylang [cloudsmith](https://cloudsmith.io/) account.

### Validate external services are functional

We rely on CirrusCI, Cloudsmith, DockerHub, and GitHub Actions as part of our release process. All  need to be up and functional in order to do a release. Check the status of each before starting a release. If any are reporting issues, push the release back a day or until whenever they are all reporting no problems.

* [CirrusCI Status](https://twitter.com/cirrus_labs)
* [Cloudsmith](https://status.cloudsmith.io/)
* [DockerHub](https://status.docker.com/)
* [GitHub](https://www.githubstatus.com/)

### A GitHub issue exists for the release

All releases should have a corresponding issue in the [ponyc repo](https://github.com/ponylang/ponyc/issues). This issue should be used to communicate the progress of the release (updated as checklist steps are completed). You can also use the issue to notify other pony team members of problems.

## Releasing

Please note that this document was written with the assumption that you are using a clone of the `ponyc` repo. You have to be using a clone rather than a fork. It is advised that you do this by making a fresh clone of the `ponyc` repo from which you will release.

```bash
git clone <EMAIL>:ponylang/ponyc.git ponyc-release-clean
cd ponyc-release-clean
```

Before getting started, you will need a number for the version that you will be releasing as well as an agreed upon "golden commit" that will form the basis of the release.

The "golden commit" must be `HEAD` on the `master` branch of this repository. At this time, releasing from any other location is not supported.

For the duration of this document, that we are releasing version is `0.3.1`. Any place you see those values, please substitute your own version.

```bash
git tag release-0.3.1
git push origin release-0.3.1
{'fraction_non_alphanumeric': 0.06614303431169904, 'fraction_numerical': 0.0037205456800330715, 'mean_word_length': 4.276990185387132, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 13, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5129364', 'n_tokens_mistral': 1295, 'n_tokens_neox': 1281, 'n_words': 725}