Blame

1c156b Samuli Seppänen 2025-03-19 08:03:26 1
# Introduction 
2
3
This page outlines the release process for OpenVPN 2.x. It also works as a release checklist.
4
5
# External systems involved
6
7
* Community Release build infrastructure
8
* The openvpn.net staging website
9
* The openvpn.net production website
10
11
# Build tools
12
13
## openvpn-build
14
15
The scripts used during the various builds are maintained in [openvpn-build](https://github.com/OpenVPN/openvpn-build).
16
17
Overview of the various sub-directories:
18
19
* **release** contains scripts to prepare the source tarballs and tag the git repositories. It also has scripts to orchestrate the other parts of the build.
20
* **debian-sbuild** contains scripts to build Debian packages for all supported distributions.
21
* **windows-msi** contains scripts to build Windows MSI installers.
22
23
# Pre-release checklist
24
25
## Notifying external entities
26
27
### OpenVPN Inc website team
28
29
The OpenVPN Inc. website team makes weekly website releases. Any changes to the website should be made to the staging web server first, then released in production. In case of emergency releases an off the cycle website release can be made, but that needs to be coordinated with the website team.
30
31
Note that we now maintain our own wiki:Downloads page in Trac to avoid a dependency on the website team for small releases.
32
33
### OpenVPN Inc marketing
34
35
OpenVPN Inc. marketing people should be notified 7 days prior to *a new major release* is about to be released. At minimum, allow for 48 hours.
36
37
### Access Server team
38
39
OpenVPN Inc. Access server team should be notified prior to a release that affects the Access Server. This means primarily *releases with security fixes*.
40
41
### Package maintainers
42
43
Downstream package maintainers (Debian, Ubuntu, Red Hat, etc) should be notified about *releases with major security fixes*. This is easiest to do via the [oss-security mailing list](https://www.openwall.com/lists/oss-security).
44
45
# Release process
46
47
## Sync repositories
48
49
Merge pull requests and rebase your local clones for repositories affected by the release:
50
51
* tap-windows6
52
* openvpnserv2
53
* openvpn-build
54
55
## Prepare dependencies
56
57
* tap-windows6
58
* Build
59
* ~~Cross-sign for Windows 7~~ (Note: This is not supported by Microsoft anymore)
60
* Produce signed CAB files for attestation signing
61
* Send CABs to Microsoft signing services
62
* Wait 15-30 minutes
63
* Download signed driver files
64
* Copy signed driver files to tap-windows6 building/signing computer
65
* Produce MSM packages
66
* openvpnserv2
67
* Build
68
* Put new version to build.openvpn.net
69
* Put GPG signature (ASC file) to build.openvpn.net
3329c2 uddr 2025-11-17 13:07:25 70
* openvpn-gui
71
* Make sure to check whether openvpn-gui has open PR with Changes.rst updates
1c156b Samuli Seppänen 2025-03-19 08:03:26 72
* openvpn-build
73
* Update git submodules under **src**
74
* In general this will be taken care of by renovate PRs, but openvpn release commit itself is usually only published publicly **after** the release build.
75
* You can get the non-public release commit from the repository on buildbot-host.openvpn.in (available only inside Community VPN, remote `buildbot-host.openvpn.in:/var/lib/repos/openvpn`).
76
* Update configuration under **release**
77
* The files to update are `vars` and `vars.infrastructure`. There are .example files present to get you started.
78
* Make sure to check whether openvpn-gui has changed and bump version number.
79
* Make sure to check whether ovpn-dco has changed and bump version number.
80
81
## Package
82
83
* openvpn-build
84
* Make sure community release build machines are up and running
85
* This currently requires access to the corp-internal terraform repository. This will set up the following build machines:
86
* community-release-build-amd64.community.openvpn-core.com (Debian amd64 and all builds)
87
* community-release-build-arm64.community.openvpn-core.com (Debian arm64 builds)
88
* community-release-win-ossl3.community.openvpn-core.com (Windows MSI builds)
89
* Run **release/full-release-build.sh**
90
* This uploads source tarball to build.openvpn.net
91
* Builds Debian packages with **debian-sbuild**
92
* Build Windows installers with **windows-msi**
93
94
## Smoketest packages
95
96
* Windows installer
97
* Debian packages
98
99
## Update online documentation
100
101
* Copy generated changelog to Trac wiki (currently [[ChangesInOpenvpn26]])
102
* Copy generated man-page to build.openvpn.net (currently https://build.openvpn.net/man/openvpn-2.6/openvpn.8.html)
103
104
## Publish packages
105
106
All openvpn.net website changes have to go through the usual website release process (staging -> production). This means that package publishing should generally happen at the same time as website releases.
107
108
The package release process is the following:
109
110
* Push Debian packages to the freight apt repository on build.openvpn.net with [freight-add-many.py](https://github.com/OpenVPN/sbuild_wrapper/blob/master/scripts/freight-add-many.py)
111
* Copy release files to build.openvpn.net
112
* Copy release files to swupdate S3 bucket (AWS CLI or AWS Console)
113
* Update community downloads page wiki:Downloads
114
* Update links to latest release from Puppet
115
116
# Release announcements
117
118
Release announcements should be sent once packages have been published and the openvpn.net website updated:
119
120
* Mailing lists
121
* Forums
122
* Add security announcement to Trac (as needed)
123
* Create GitHub release
124
* Notify Windows package maintainers ([winget](https://github.com/microsoft/winget-pkgs/pull/95836#issuecomment-1434205757), [chocolatey](https://github.com/dgalbraith/chocolatey-packages/issues/452#issuecomment-1434223069))
125
126
## After release
127
128
Tag release and push tags to Git for all repositories that changed:
129
130
* tap-windows6 (when needed)
131
* openvpnserv2 (when needed)
132
* openvpn-gui
133
* openvpn-build
134
135
# Misc
136
137
* In openvpn-build/windows-msi use PRODUCT_VERSION 2.5.0xx for release/2.5 and 2.5.1xx for release/2.6+. This ensures smooth upgrades.
138
* Remove GitHub tokens if you pushed to Git from the Windows signing computer