mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
chore(tools): add a script for creating and signing release tarballs
`lzip` is used for its great compression (better even than `xz`) and properties that make it a viable format for long-term archiving (feature that `xz` is missing). http://www.nongnu.org/lzip/xz_inadequate.html Also add some docs regarding release process. Re: #3912, #4045
This commit is contained in:
parent
0e4cff884d
commit
343989d575
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -50,3 +50,6 @@ Makefile
|
||||||
# Rust
|
# Rust
|
||||||
target/
|
target/
|
||||||
.cargo/
|
.cargo/
|
||||||
|
|
||||||
|
# Tarballs
|
||||||
|
*.tar.*
|
||||||
|
|
|
@ -147,6 +147,37 @@ To get translations into qTox:
|
||||||
process, so that no translation effort would be lost when resetting Weblate.**
|
process, so that no translation effort would be lost when resetting Weblate.**
|
||||||
|
|
||||||
|
|
||||||
|
# Releases
|
||||||
|
|
||||||
|
- tag versions that are to be released, make sure that they are GPG-signed,
|
||||||
|
i.e. `git tag -s v1.8.0`
|
||||||
|
- use semantic versions for tags: `vMAJOR.MINOR.PATCH`
|
||||||
|
- `MAJOR` – bump version when there are breaking changes to video, audio,
|
||||||
|
text chats, groupchats, file transfers, and any other basic functionality.
|
||||||
|
For other things, `MINOR` and `PATCH` are to be bumped.
|
||||||
|
- `MINOR` – bump version when there are:
|
||||||
|
- new features added
|
||||||
|
- UI/feature breaking changes
|
||||||
|
- other non-breaking changes
|
||||||
|
- `PATCH` – bump when there have been only fixes added. If changes include
|
||||||
|
something more than just bugfixes, bump `MAJOR` or `MINOR` version
|
||||||
|
accordingly.
|
||||||
|
- before creating a `MAJOR`/`MINOR` release generate changelog with `clog`.
|
||||||
|
- in a `MAJOR`/`MINOR` release tag should include information that changelog
|
||||||
|
is located in the `CHANGELOG.md` file, e.g. `For details see CHANGELOG.md`
|
||||||
|
- to release a `PATCH` version after non-fix changes have landed on `master`
|
||||||
|
branch, checkout latest `MAJOR`/`MINOR` version and `git cherry-pick -x`
|
||||||
|
commits from `master` that you want `PATCH` release to include. Once
|
||||||
|
cherry-picking has been done, tag HEAD of the branch.
|
||||||
|
- when making a `PATCH` tag, include in tag message short summary of what the
|
||||||
|
tag release fixes, and to whom it's interesting (often only some
|
||||||
|
OSes/distributions would find given `PATCH` release interesting).
|
||||||
|
- bumping a higher-level version "resets" lower-version numbers, e.g.
|
||||||
|
`v1.7.1 → v2.0.0`
|
||||||
|
- create and GPG-sign tarball using [`./tools/create-tarball.sh`] script, and
|
||||||
|
upload the tarball to a github release.
|
||||||
|
|
||||||
|
|
||||||
# How to become a maintainer?
|
# How to become a maintainer?
|
||||||
|
|
||||||
Contribute, review & test pull requests, be active, oh and don't forget to
|
Contribute, review & test pull requests, be active, oh and don't forget to
|
||||||
|
@ -164,3 +195,4 @@ helping for a while, ask to be added to the `qTox` organization on GitHub.
|
||||||
[`merge-pr.sh`]: /merge-pr.sh
|
[`merge-pr.sh`]: /merge-pr.sh
|
||||||
[`test-pr.sh`]: /test-pr.sh
|
[`test-pr.sh`]: /test-pr.sh
|
||||||
[`./tools/deweblate-translation-file.sh`]: /tools/deweblate-translation-file.sh
|
[`./tools/deweblate-translation-file.sh`]: /tools/deweblate-translation-file.sh
|
||||||
|
[`./tools/create-tarball.sh`]: /tools/create-tarball.sh
|
||||||
|
|
69
tools/create-tarball.sh
Executable file
69
tools/create-tarball.sh
Executable file
|
@ -0,0 +1,69 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright © 2017 The qTox Project Contributors
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# Create a `lzip` archive and make a detached GPG signature for it.
|
||||||
|
#
|
||||||
|
# When tag name is supplied, it's used to create archive. If there is no tag
|
||||||
|
# name supplied, latest tag is used.
|
||||||
|
|
||||||
|
# Requires:
|
||||||
|
# * GPG
|
||||||
|
# * git
|
||||||
|
# * lzip
|
||||||
|
|
||||||
|
# usage:
|
||||||
|
# ./$script [$tag_name]
|
||||||
|
|
||||||
|
|
||||||
|
# Fail as soon as error appears
|
||||||
|
set -eu -o pipefail
|
||||||
|
|
||||||
|
|
||||||
|
archive_from_tag() {
|
||||||
|
git archive --format=tar "$@" \
|
||||||
|
| lzip --best \
|
||||||
|
> "$@".tar.lz
|
||||||
|
echo "$@.tar.lz archive has been created."
|
||||||
|
}
|
||||||
|
|
||||||
|
sign_archive() {
|
||||||
|
gpg \
|
||||||
|
--armor \
|
||||||
|
--detach-sign \
|
||||||
|
"$@".tar.lz
|
||||||
|
echo "$@.tar.lz.asc signature has been created."
|
||||||
|
}
|
||||||
|
|
||||||
|
create_and_sign() {
|
||||||
|
archive_from_tag "$@"
|
||||||
|
sign_archive "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
get_tag() {
|
||||||
|
local tname="$@"
|
||||||
|
if [[ -n "$tname" ]]
|
||||||
|
then
|
||||||
|
echo "$tname"
|
||||||
|
else
|
||||||
|
git describe --abbrev=0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
create_and_sign "$(get_tag $@)"
|
||||||
|
}
|
||||||
|
main "$@"
|
Loading…
Reference in New Issue
Block a user