<commit_before>===================
Pex Release Process
===================

.. contents:: Table of Contents

Preparation
===========

Version Bump and Changelog
--------------------------

Bump the version in ``pex/version.py`` and update ``CHANGES.rst``. Open a PR with these changes and
land it on https://github.com/pantsbuild/pex main.

Release
=======

Push Release tag to Master
--------------------------

Sync a local branch with https://github.com/pantsbuild/pex main and confirm it has the version<commit_msg>Document PGP release pre-reqs. (#1710)<commit_after>===================
Pex Release Process
===================

.. contents:: Table of Contents

Pre-requisites
==============

PGP
---

All release tags are signed (using ``git tag --sign``) so that users of Pex can verify maintainers
have performed & trust a release. This requires releasers having a PGP key configured with git and
published to keyservers. An additional nicety is to configure you PGP key with GitHub for those who
like to check provenance via a web UI.

Some documentation to help you get things set up if you don't have all of these pre-requisites:

+ Creating a key and configuring your key with Git and GitHub is all described `here <https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification>`_
+ Publishing your key to a keyserver is described `here <https://www.gnupg.org/gph/en/manual/x457.html>`_

Some keyservers you probably want to publish your key to explicitly above and beyond your PGP setup's
default configured keyserver include:

+ hkps://pgp.mit.edu
+ hkps://keyserver.ubuntu.com
+ hkps://keys.openpgp.org

Preparation
===========

Version Bump and Changelog
--------------------------

Bump the version in ``pex/version.py`` and update ``CHANGES.rst``. Open a PR with these changes and
land it on https://github.com/pantsbuild/pex main.

Release
=======

Push Release tag to Master
--------------------------

Sync a local branch with https://github.com/pantsbuild/pex main and confirm it has the version
{'fraction_non_alphanumeric': 0.18019323671497584, 'fraction_numerical': 0.003381642512077295, 'mean_word_length': 3.502173913043478, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 6, 'lorem ipsum': 0, 'www.': 1, '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': '1111677', 'n_tokens_mistral': 584, 'n_tokens_neox': 545, 'n_words': 234}