File: development.md

package info (click to toggle)
onionbalance 0.2.4-0.2
  • links: PTS, VCS
  • area: main
  • in suites: forky, trixie
  • size: 1,644 kB
  • sloc: python: 2,500; sh: 171; makefile: 47
file content (128 lines) | stat: -rw-r--r-- 3,241 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# Onionbalance development

Onionbalance development guidelines and workflow are listed here.

## Release procedure

Release cycle workflow.

### Version update

Set the version number:

    ONIONBALANCE_VERSION=0.2.4

Update the version in some files, like:

    dch -i # debian/changelog
    $EDITOR onionbalance/__init__.py

### Regenerate the manpages

Build updated manual pages:

    make manpages

Check:

    man -l docs/man/onionbalance.1
    man -l docs/man/onionbalance-config.1

### Register the changes

Update the ChangeLog:

    $EDITOR ChangeLog

Commit and tag:

    git diff # review
    git commit -a -m "Feat: Onionbalance $ONIONBALANCE_VERSION"
    git tag -s $ONIONBALANCE_VERSION -m "Onionbalance $ONIONBALANCE_VERSION"

Push changes and tags. Example:

    git push origin        && git push upstream
    git push origin --tags && git push upstream --tags

Once a tag is pushed, a [GitLab release][] is created.

[GitLab release]: https://docs.gitlab.com/ee/user/project/releases/

### Build packages

Build the Python package:

    make build-python-package

Install this package in a fresh virtual machine. Example:

    sudo apt-get install -y python3-pip tor
    pip install --break-system-packages \
      dist/onionbalance-$ONIONBALANCE_VERSION-*.whl

Then test it:

    $HOME/.local/bin/onionbalance --version
    $HOME/.local/bin/onionbalance-config --no-interactive

If the package worked, upload it to the [Test PyPI][] instance:

    make upload-python-test-package

Install again the test package, by fetching it from [Test PyPI][], and in
another fresh virtual machine:

    sudo apt-get install -y python3-pip tor
    pip install -i https://pypi.org/simple/ \
                --extra-index-url https://test.pypi.org/simple \
                --break-system-packages \
                onionbalance==$ONIONBALANCE_VERSION

Do the tests again in this new installation.
If the the package works as expected, upload it to PyPI:

    make upload-python-package

Finally, install the package one more time, but now fetching it from [PyPI][],
and in yet another fresh virtual machine:

    sudo apt-get install -y python3-pip tor
    pip install --break-system-packages \
      onionbalance==$ONIONBALANCE_VERSION

Do the tests once more, in this new installation.

[Test PyPI]: https://test.pypi.org
[PyPI]: https://pypi.org

### Announcement

Announce the new release:

* Post a message to the [Tor Forum][], using the [onion-services-announce tag][].
* Send a message to the [tor-announce][] mailing list ONLY in special cases,
  like important security issues (severity `HIGH` or `CRITICAL`).

Template:

```
Subject: [RELEASE] Onionbalance [security] release $ONIONBALANCE_VERSION

Greetings,

We just released [Onionbalance][] $ONIONBALANCE_VERSION, a descriptor publisher
and load balancer for Onion Services.

[This release fixes a security issue. Please upgrade as soon as possible!]

[Onionbalance]: https://onionservices.torproject.org/apps/web/onionbalance

# ChangeLog

$CHANGELOG
```

[tor-announce]: https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-announce
[Tor Forum]: https://forum.torproject.org
[onion-services-announce tag]: https://forum.torproject.org/tag/onion-services-announce