提交 8f4d43db 编写于 作者: M Mickaël Schoentgen

Add documentation about our release process

上级 e2ba214a
# Release process
Here is a concise document explaining our release process.
**Important:** when committing changes for downstream distributions, please sign-off all commits (`git commit -s`).
## First, PyPi
Before thinking about anything, let's do an official release on [PyPi](https://pypi.org/project/httpie/).
That is done quite easily by triggering manually the [release workflow](https://github.com/httpie/httpie/actions/workflows/release.yml).
## Then, propagate
Here is the current state of versions available per distributon (including Linux, Mac, and Windows): <https://repology.org/project/httpie/versions>.
Find all details in specific pages.
Legend:
- :heavy_check_mark: Maintained by HTTPie.
- :white_check_mark: Maintained by a trusted HTTPie partner.
- :construction: Ongoing work.
TODO:
- Add release test section.
- Rename "Test" sections to "Try locally" (when possible).
### Linux
- :construction: [Alpine](linux-alpine.md)
- :construction: [Arch](linux-arch.md)
- :construction: [AOSC](linux-aosc.md)
- :white_check_mark: [CentOS, RHEL](linux-centos.md)
- :white_check_mark: [Debian](linux-debian.md)
- :white_check_mark: [Fedora](linux-fedora.md)
- :construction: [Gentoo](linux-gentoo.md)
- :construction: [LiGurOS](linux-liguros.md)
- :heavy_check_mark: [SnapCraft](linux-snap.md)
- :construction: [Spack](linux-spack.md)
- :heavy_check_mark: [VoidLinux](linux-voidlinux.md)
### Mac
- :construction: [Homebrew](mac-brew.md)
- :construction: [MacPorts](mac-ports.md)
### Windows
- :construction: [Chocolatey](windows-chocolatey.md)
# Alpine
## Downstream details
None.
## Downstream specific setup
Package file: <https://gitlab.alpinelinux.org/alpine/aports/-/blob/master/community/httpie/APKBUILD>
## Release process
Open a pull request to update the package file:
- The `pkgrel` value must be set to `0`.
- The commit message must be `community/httpie: upgrade to XXX`.
## Test
```bash
docker pull alpine
docker run -it --rm alpine
```
Inside the container:
```bash
apk add httpie
http --version
https --version
```
# AOSC
## Downstream details
None.
## Downstream specific setup
Package files: <https://github.com/AOSC-Dev/aosc-os-abbs/tree/stable/extra-web/httpie>
## Release process
Open a pull request to update package files ([example](https://github.com/AOSC-Dev/aosc-os-abbs/pull/3453)).
- The commit message must be `httpie: update to XXX (noarch)`.
# Arch Linux
## Downstream details
Maintainer: daurnimator <daurnimator@archlinux.org>
## Downstream specific setup
Package file: <https://github.com/archlinux/svntogit-community/blob/packages/httpie/trunk/PKGBUILD>
## Release process
There is nothing to do on our side: daurnimator is subscribed to our releases and will be notified automatically when a new one comes out.
## Test
```bash
docker pull archlinux
docker run -it --rm archlinux
```
Inside the container:
```bash
pacman -Sy httpie
http --version
https --version
```
# CentOS
## Downstream details
Maintainer: Mikel Olasagasti <mikel@olasagasti.info>
<br>
Release monitoring: <https://release-monitoring.org/project/1337/>
## Downstream specific setup
Same as [Fedora](linux-fedora.md).
## Release process
Same as [Fedora](linux-fedora.md).
## Test
```bash
docker pull centos
docker run -it --rm centos
```
Inside the container:
```bash
yum install epel-release
yum install httpie
http --version
https --version
```
## Q/A with Mikel
Q: What should we do to help seeing a new version on CentOS?
A: When a new release is published Miro and I get notified by [release-monitoring](https://release-monitoring.org/project/1337/), that fills a BugZilla ticket reporting a new version being available.
The system also tries to create a simple patch to update the spec file, but in the case of CentOS it needs some manual revision. For example for 2.5.0 `defuxedxml` dep is required. Maybe with CentOS-9 and some new macros that are available now in Fedora it can be automated same way. But even the bump can be automated, maintainers should check for license changes, new binaries/docs/ and so on.
# Debian GNU/Linux
## Downstream details
Maintainer: Bartosz Fenski <fenio@debian.org>
## Downstream specific setup
Package tracker: <https://tracker.debian.org/pkg/httpie>
## Release process
Open a new bug on the Debian Bug Tracking System by sending an email:
- To: `Debian Bug Tracking System <submit@bugs.debian.org>`
- Subject: `httpie: Version XXX available`
- Message template ([example](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=993937)):
```email
Package: httpie
Severity: wishlist
<MESSAGE>
```
# Fedora
## Downstream details
Maintainer: Miro Hrončok <miro@hroncok.cz>
<br>
Release monitoring: <https://release-monitoring.org/project/1337/>
<br>
User feedbacks: <https://bodhi.fedoraproject.org/updates/?packages=httpie>
## Downstream specific setup
Package file: <https://src.fedoraproject.org/rpms/httpie/blob/rawhide/f/httpie.spec>
Added the [.packit.yaml](https://github.com/httpie/httpie/blob/master/.packit.yaml) file.
It allows us to have real-time Fedora checks on pull requests and new releases.
## Release process
There is nothing to do on our side: `Packit` will see the new release and open a pull request [there](https://src.fedoraproject.org/rpms/httpie). Then, a Fedora maintainer will review it and merge.
## Test
```bash
docker pull fedora
docker run -it --rm fedora
```
Inside the container:
```bash
dnf install httpie
http --version
https --version
```
## Q/A with Miro
Q: What would the command to install the latest stable version look like?
A: Assuming the latest stable version is already propagated to Fedora:
```bash
# Note that yum is an alias to dnf.
$ sudo dnf install httpie
```
Q: Will dnf/yum upgrade then update to the latest?
A: Yes, assuming the same as above.
Q: Are new versions backported automatically?
A: No. The process is:
1. A new HTTPie release is created on Github.
2. A pull request for Fedora `rawhide` (the development version of Fedora, currently Fedora 35) is created.
3. A Fedora packager (usually Miro) sanity checks the pull request and merges, builds. HTTPie is updated in `rawhide` within 24 hours (sometimes more, for unrelated issues).
4. A Fedora packager decides whether the upgrade is suitable for stable Fedora releases (currently 34, 33), if so, merges the changes there.
5. (if the above is yes) The new version of HTTPie lands in `updates-testing` repo where it waits for user feedback and lands within ~1 week for broad availability.
# Gentoo
## Downstream details
None.
## Downstream specific setup
Package files: <https://github.com/gentoo/gentoo/tree/master/net-misc/httpie>
<br>
Release monitoring: <https://packages.gentoo.org/packages/net-misc/httpie>
## Release process
Open a pull request to create `httpie-XXX.ebuild` and update `Manifest`.
- Here is how to calculate the size and checksum (replace `2.5.0` with the correct version):
```bash
# Download
$ wget https://github.com/httpie/httpie/archive/2.5.0.tar.gz
# Size
$ stat --printf="%s\n" 2.5.0.tar.gz
1105177
# Checksum
$ openssl dgst -blake2b512 2.5.0.tar.gz
BLAKE2b512(2.5.0.tar.gz)= 6e16868c81522d4e6d2fc0a4e093c190f18ced720b35217930865ae3f8e168193cc33dfecc13c5d310f52647d6e79d17b247f56e56e8586d633a2d9502be66a7
```
- The commit message must be `net-misc/httpie: version bump to XXX`.
## Test
```bash
docker pull gentoo/stage3
docker run -it --rm gentoo/stage3
```
Inside the container:
```bash
emerge --sync
emerge httpie
http --version
https --version
```
# LiGurOS
## Downstream details
None.
## Downstream specific setup
Package files: <https://gitlab.com/liguros/kit-fixups/-/tree/develop/net-misc/httpie>
## Release process
Open a pull request to create `httpie-XXX.ebuild` and update `Manifest`.
- Here is how to calculate the size and checksum (replace `2.5.0` with the correct version):
```bash
# Download
$ wget https://github.com/httpie/httpie/archive/2.5.0.tar.gz
# Size
$ stat --printf="%s\n" 2.5.0.tar.gz
1105177
# Checksum
$ openssl dgst -blake2b512 2.5.0.tar.gz
BLAKE2b512(2.5.0.tar.gz)= 6e16868c81522d4e6d2fc0a4e093c190f18ced720b35217930865ae3f8e168193cc33dfecc13c5d310f52647d6e79d17b247f56e56e8586d633a2d9502be66a7
```
- The commit message must be `net-misc/httpie: version bump to XXX`.
# SnapCraft
## Downstream details
None.
## Downstream specific setup
Package file: <https://github.com/httpie/httpie/blob/master/snapcraft.yaml>
## Release process
Trigger a new [build](https://snapcraft.io/httpie/builds), then [promote it](https://snapcraft.io/httpie/releases). If more management is needed: [revisions supervision](https://dashboard.snapcraft.io/snaps/httpie/revisions/).
## Test
```bash
sudo snap install --edge httpie
http --version
https --version
```
# Solus
## Downstream details
None.
## Downstream specific setup
Package file: https://dev.getsol.us/source/httpie/browse/master/package.yml
## Release process
Create a diff of changes and send it to <https://dev.getsol.us/differential/diff/create/> ([example](https://dev.getsol.us/D11851)).
Screen 1:
- `Raw Diff`: copy-paste the diff.
- `Repository`: start typing `httpie` and select the proposed repository.
- Click on `Create Diff`.
Screen 2:
- Review changes.
- `Attach To`: select `Create a new Revision`.
- Click on `Continue`.
Screen 3:
- `title`: `Update to XXX`.
- `Summary`:
```text
Update to XXX
Changelog: https://github.com/httpie/httpie/releases/tag/XXX
```
- `Test Plan`: `Not tested`.
- `Repository`: start typing `httpie` and select the proposed repository.
- Click on `Create New Revision`.
# Spack
## Downstream details
None.
## Downstream specific setup
Package file: <https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/httpie/package.py>
## Release process
Open a pull request to update the package file ([example](https://github.com/spack/spack/pull/25888)).
- The commit message must be `httpie: add vXXX`.
# VoidLinux
## Downstream details
None.
## Downstream specific setup
Package file: <https://github.com/void-linux/void-packages/blob/master/srcpkgs/httpie/template>
## Release process
Open a pull request to update the package file.
- The commit message must be `httpie: update to XXX.`.
## Test
```bash
docker pull voidlinux/voidlinux
docker run -it --rm voidlinux/voidlinux
```
Inside the container:
```bash
# Sync and upgrade once, assume error comes from xbps update
xbps-install -Syu
# Install tools
xbps-install -y git xtools file util-linux binutils bsdtar coreutils
# Clone
git clone --depth=1 git://github.com/void-linux/void-packages.git void-packages-src
cd void-packages-src
# Retrieve the patch, TO ADAPT
# (A 'httpie-XXX' branch must be created with up-to-date content.)
curl https://raw.githubusercontent.com/BoboTiG/void-packages/httpie-2.5.0/srcpkgs/httpie/template \
-o srcpkgs/httpie/template
# Check the package
xlint srcpkgs/httpie/template
# Link / to /masterdir
ln -s / masterdir
# Enable ethereal chroot-style
export XBPS_ALLOW_CHROOT_BREAKOUT=yes
./xbps-src binary-bootstrap
./xbps-src chroot
# Build the package
cd void-packages
export SOURCE_DATE_EPOCH=0
./xbps-src pkg httpie
# Install the package
xbps-install --repository=hostdir/binpkgs httpie
# And finally test it!
http --version
https --version
```
# Homebrew
## Downstream details
None.
## Downstream specific setup
Package file: <https://github.com/Homebrew/homebrew-core/blob/master/Formula/httpie.rb>
## Release process
First, update the current Formula:
```bash
python extras/brew-deps.py
# Copy-paste content into extras/httpie.rb
git add extras/httpie.rb
git commit -m 'Update brew formula to XXX'
```
That [GitHub workflow](https://github.com/httpie/httpie/actions/workflows/packaging-mac-brew.yml) will test the formula when `extras/httpie.rb` is changed in a pull request.
Then, open a pull request with those changes to the package file.
# MacPorts
## Downstream details
None.
## Downstream specific setup
Package file: <https://github.com/macports/macports-ports/blob/master/net/httpie/Portfile>
## Release process
Open a pull request to update the package file ([example](https://github.com/macports/macports-ports/pull/12167)).
- Here is how to calculate the size and checksums (replace `2.5.0` with the correct version):
```bash
# Download the archive
$ wget https://api.github.com/repos/httpie/httpie/tarball/2.5.0
# Size
$ stat --printf="%s\n" 2.5.0
1105185
# Checksums
$ openssl dgst -rmd160 2.5.0
RIPEMD160(2.5.0)= 88d227d52199c232c0ddf704a219d1781b1e77ee
$ openssl dgst -sha256 2.5.0
SHA256(2.5.0)= 00c4b7bbe7f65abe1473f37b39d9d9f8f53f44069a430ad143a404c01c2179fc
```
- The commit message must be `httpie: update to XXX`.
# Chocolatey
## Downstream details
None.
## Downstream specific setup
Package files: <>
## Release process
TODO.
## Test
```bash
```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册