Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Contributing to `rsconnect-python`

This project aims to uphold Python [community norms](https://www.python.org/psf/conduct/) and make use of [recommended
tooling](https://packaging.python.org/guides/tool-recommendations/).

## Workflow

The [`test` job in the default GitHub Actions workflow](.github/workflows/main.yml) reflects a typical set of steps for
building and testing.

## Proposing Change

Any and all proposed changes are expected to be made via [pull
request](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests).

## Versioning and Releasing

All version and release management is done via [annotated git tags](https://git-scm.com/docs/git-tag), as this is the
repo metadata used by the [`setuptools_scm`](https://github.com/pypa/setuptools_scm) package to generate the version
string provided as `rsconnect:VERSION` and output by `rsconnect version`.

To create a new release, create and push an annotated git tag:

```bash
git tag -a 1.2.3 -m 'Release 1.2.3'
git push origin 1.2.3
```

Once the tag push is received by GitHub, the relevant workflow action will be triggered and, upon successful completion,
a release will be created and published to the repository
[releases](https://github.com/rstudio/rsconnect-python/releases) and the public
[PYPI](https://pypi.org/project/rsconnect-python/#history).

> **NOTE**: Pre-releases versions must comply with [PIP 440](https://www.python.org/dev/peps/pep-0440/) in order for
> PIPY to appropriately mark them as pre-releases.